From 923b18b2d3e3417513fe093e9c31a385a8643bd8 Mon Sep 17 00:00:00 2001 From: torlus Date: Fri, 7 Mar 2014 20:50:32 +0000 Subject: [PATCH] better reupload the whole thing :/ --- FPGA_by_Gregory_Estrade/DSP/DSP.vhd | 79 - FPGA_by_Gregory_Estrade/DSP/DSP.vhd.bak | 79 - FPGA_by_Gregory_Estrade/DSP/dsp56k.zip | Bin 39208 -> 0 bytes .../DSP/src/adgen_stage.vhd | 216 - .../DSP/src/constants_pkg.vhd | 62 - .../DSP/src/decode_stage.vhd | 1221 -- .../DSP/src/exec_stage_alu.vhd | 603 - .../DSP/src/exec_stage_bit_modify.vhd | 79 - .../DSP/src/exec_stage_branch.vhd | 117 - .../DSP/src/exec_stage_cc_flag_calc.vhd | 75 - .../DSP/src/exec_stage_cr_mod.vhd | 72 - .../DSP/src/exec_stage_loops.vhd | 200 - .../DSP/src/fetch_stage.vhd | 60 - .../DSP/src/mem_control.vhd | 1519 --- .../DSP/src/memory_management.vhd | 206 - .../DSP/src/parameter_pkg.vhd | 10 - FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd | 968 -- FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd | 679 - FPGA_by_Gregory_Estrade/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/interrupt_handler.v | 3619 ------ FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt | 20 - FPGA_by_Gregory_Estrade/UNUSED | 27 - .../Video/BLITTER/BLITTER.vhd | 75 - .../Video/BLITTER/BLITTER.vhd.bak | 75 - FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf | 659 - FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf.bak | 660 - FPGA_by_Gregory_Estrade/Video/DDR_CTR.v | 1097 -- .../Video/DDR_CTR_BLITTER.tdf.bak | 352 - FPGA_by_Gregory_Estrade/Video/UNUSED | 267 - .../Video/VIDEO_MOD_MUX_CLUTCTR.tdf | 675 - .../Video/VIDEO_MOD_MUX_CLUTCTR.tdf.bak | 675 - .../Video/VIDEO_MOD_MUX_CLUTCTR.v | 1500 --- FPGA_by_Gregory_Estrade/Video/Video.bdf | 10651 ---------------- .../Video/altddio_bidir0.bsf | 99 - .../Video/altddio_bidir0.inc | 30 - .../Video/altddio_bidir0.ppf | 16 - .../Video/altddio_bidir0.qip | 7 - .../Video/altddio_bidir0.vhd | 172 - .../Video/altddio_out0.bsf | 64 - .../Video/altddio_out0.inc | 25 - .../Video/altddio_out0.ppf | 11 - .../Video/altddio_out0.qip | 7 - .../Video/altddio_out0.vhd | 136 - .../Video/altddio_out1.bsf | 64 - .../Video/altddio_out1.inc | 25 - .../Video/altddio_out1.ppf | 11 - .../Video/altddio_out1.qip | 7 - .../Video/altddio_out1.vhd | 146 - .../Video/altddio_out2.bsf | 64 - .../Video/altddio_out2.inc | 25 - .../Video/altddio_out2.ppf | 11 - .../Video/altddio_out2.qip | 7 - .../Video/altddio_out2.vhd | 136 - FPGA_by_Gregory_Estrade/Video/altdpram0.bsf | 173 - FPGA_by_Gregory_Estrade/Video/altdpram0.inc | 31 - FPGA_by_Gregory_Estrade/Video/altdpram0.qip | 6 - FPGA_by_Gregory_Estrade/Video/altdpram0.vhd | 273 - FPGA_by_Gregory_Estrade/Video/altdpram1.bsf | 173 - FPGA_by_Gregory_Estrade/Video/altdpram1.inc | 31 - FPGA_by_Gregory_Estrade/Video/altdpram1.qip | 6 - FPGA_by_Gregory_Estrade/Video/altdpram1.vhd | 273 - FPGA_by_Gregory_Estrade/Video/altdpram2.bsf | 173 - FPGA_by_Gregory_Estrade/Video/altdpram2.inc | 31 - FPGA_by_Gregory_Estrade/Video/altdpram2.qip | 6 - FPGA_by_Gregory_Estrade/Video/altdpram2.vhd | 273 - FPGA_by_Gregory_Estrade/Video/lpm_bustri0.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri0.inc | 24 - FPGA_by_Gregory_Estrade/Video/lpm_bustri0.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_bustri0.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri1.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri1.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri1.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri2.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri2.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri2.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri3.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri3.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri3.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri4.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri4.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri4.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri5.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri5.inc | 24 - FPGA_by_Gregory_Estrade/Video/lpm_bustri5.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_bustri5.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri6.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri6.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri6.vhd | 107 - FPGA_by_Gregory_Estrade/Video/lpm_bustri7.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_bustri7.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_bustri7.vhd | 107 - .../Video/lpm_compare1.bsf | 54 - .../Video/lpm_compare1.inc | 24 - .../Video/lpm_compare1.qip | 6 - .../Video/lpm_compare1.vhd | 127 - .../Video/lpm_constant0.bsf | 42 - .../Video/lpm_constant0.qip | 5 - .../Video/lpm_constant0.vhd | 108 - .../Video/lpm_constant1.bsf | 42 - .../Video/lpm_constant1.inc | 23 - .../Video/lpm_constant1.qip | 6 - .../Video/lpm_constant1.vhd | 108 - .../Video/lpm_constant2.bsf | 42 - .../Video/lpm_constant2.qip | 5 - .../Video/lpm_constant2.vhd | 108 - .../Video/lpm_constant3.bsf | 42 - .../Video/lpm_constant3.qip | 5 - .../Video/lpm_constant3.vhd | 108 - .../Video/lpm_constant4.bsf | 42 - .../Video/lpm_constant4.inc | 23 - .../Video/lpm_constant4.qip | 6 - .../Video/lpm_constant4.vhd | 108 - FPGA_by_Gregory_Estrade/Video/lpm_ff0.bsf | 63 - FPGA_by_Gregory_Estrade/Video/lpm_ff0.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_ff0.vhd | 127 - FPGA_by_Gregory_Estrade/Video/lpm_ff1.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_ff1.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_ff1.vhd | 122 - FPGA_by_Gregory_Estrade/Video/lpm_ff2.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_ff2.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_ff2.vhd | 122 - FPGA_by_Gregory_Estrade/Video/lpm_ff3.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_ff3.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_ff3.vhd | 122 - FPGA_by_Gregory_Estrade/Video/lpm_ff4.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_ff4.inc | 24 - FPGA_by_Gregory_Estrade/Video/lpm_ff4.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_ff4.vhd | 122 - FPGA_by_Gregory_Estrade/Video/lpm_ff5.bsf | 56 - FPGA_by_Gregory_Estrade/Video/lpm_ff5.inc | 24 - FPGA_by_Gregory_Estrade/Video/lpm_ff5.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_ff5.vhd | 122 - FPGA_by_Gregory_Estrade/Video/lpm_ff6.bsf | 63 - FPGA_by_Gregory_Estrade/Video/lpm_ff6.inc | 25 - FPGA_by_Gregory_Estrade/Video/lpm_ff6.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_ff6.vhd | 127 - FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.bsf | 79 - FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.vhd | 178 - .../Video/lpm_fifo_dc0.bsf | 102 - .../Video/lpm_fifo_dc0.inc | 30 - .../Video/lpm_fifo_dc0.qip | 6 - .../Video/lpm_fifo_dc0.vhd | 203 - FPGA_by_Gregory_Estrade/Video/lpm_latch1.bsf | 53 - FPGA_by_Gregory_Estrade/Video/lpm_latch1.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_latch1.vhd | 110 - FPGA_by_Gregory_Estrade/Video/lpm_mux0.bsf | 83 - FPGA_by_Gregory_Estrade/Video/lpm_mux0.inc | 28 - FPGA_by_Gregory_Estrade/Video/lpm_mux0.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_mux0.vhd | 251 - FPGA_by_Gregory_Estrade/Video/lpm_mux1.bsf | 111 - FPGA_by_Gregory_Estrade/Video/lpm_mux1.inc | 32 - FPGA_by_Gregory_Estrade/Video/lpm_mux1.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_mux1.vhd | 271 - FPGA_by_Gregory_Estrade/Video/lpm_mux2.bsf | 167 - FPGA_by_Gregory_Estrade/Video/lpm_mux2.inc | 40 - FPGA_by_Gregory_Estrade/Video/lpm_mux2.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_mux2.vhd | 311 - FPGA_by_Gregory_Estrade/Video/lpm_mux3.bsf | 60 - FPGA_by_Gregory_Estrade/Video/lpm_mux3.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_mux3.vhd | 115 - FPGA_by_Gregory_Estrade/Video/lpm_mux4.bsf | 60 - FPGA_by_Gregory_Estrade/Video/lpm_mux4.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_mux4.vhd | 125 - FPGA_by_Gregory_Estrade/Video/lpm_mux5.bsf | 74 - FPGA_by_Gregory_Estrade/Video/lpm_mux5.inc | 27 - FPGA_by_Gregory_Estrade/Video/lpm_mux5.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_mux5.vhd | 373 - FPGA_by_Gregory_Estrade/Video/lpm_mux6.bsf | 111 - FPGA_by_Gregory_Estrade/Video/lpm_mux6.inc | 32 - FPGA_by_Gregory_Estrade/Video/lpm_mux6.qip | 6 - FPGA_by_Gregory_Estrade/Video/lpm_mux6.vhd | 335 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.bsf | 76 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.vhd | 377 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.bsf | 60 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.vhd | 115 - FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.bsf | 158 - FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.qip | 5 - FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.vhd | 2225 ---- .../Video/lpm_shiftreg0.bsf | 70 - .../Video/lpm_shiftreg0.inc | 26 - .../Video/lpm_shiftreg0.qip | 6 - .../Video/lpm_shiftreg0.vhd | 135 - .../Video/lpm_shiftreg1.bsf | 56 - .../Video/lpm_shiftreg1.qip | 5 - .../Video/lpm_shiftreg1.vhd | 125 - .../Video/lpm_shiftreg2.bsf | 56 - .../Video/lpm_shiftreg2.qip | 5 - .../Video/lpm_shiftreg2.vhd | 125 - .../Video/lpm_shiftreg3.bsf | 56 - .../Video/lpm_shiftreg3.inc | 24 - .../Video/lpm_shiftreg3.qip | 6 - .../Video/lpm_shiftreg3.vhd | 125 - .../Video/lpm_shiftreg4.bsf | 56 - .../Video/lpm_shiftreg4.inc | 24 - .../Video/lpm_shiftreg4.qip | 6 - .../Video/lpm_shiftreg4.vhd | 125 - .../Video/lpm_shiftreg5.bsf | 56 - .../Video/lpm_shiftreg5.inc | 24 - .../Video/lpm_shiftreg5.qip | 6 - .../Video/lpm_shiftreg5.vhd | 125 - .../Video/lpm_shiftreg6.bsf | 56 - .../Video/lpm_shiftreg6.inc | 24 - .../Video/lpm_shiftreg6.qip | 6 - .../Video/lpm_shiftreg6.vhd | 125 - FPGA_by_Gregory_Estrade/Video/mux41_0.v | 30 - FPGA_by_Gregory_Estrade/Video/mux41_0.vhd | 52 - FPGA_by_Gregory_Estrade/Video/mux41_1.v | 30 - FPGA_by_Gregory_Estrade/Video/mux41_1.vhd | 52 - FPGA_by_Gregory_Estrade/Video/mux41_2.v | 31 - FPGA_by_Gregory_Estrade/Video/mux41_2.vhd | 54 - FPGA_by_Gregory_Estrade/Video/mux41_3.v | 31 - FPGA_by_Gregory_Estrade/Video/mux41_3.vhd | 54 - FPGA_by_Gregory_Estrade/Video/mux41_4.v | 31 - FPGA_by_Gregory_Estrade/Video/mux41_4.vhd | 54 - FPGA_by_Gregory_Estrade/Video/mux41_5.v | 31 - FPGA_by_Gregory_Estrade/Video/mux41_5.vhd | 54 - FPGA_by_Gregory_Estrade/Video/video.v | 1313 -- FPGA_by_Gregory_Estrade/Video/video.vhd | 1755 --- FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf | 662 - FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v | 1095 -- .../ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf | 684 - .../ahdl2v/VIDEO_MOD_MUX_CLUTCTR.v | 1474 --- .../ahdl2v/interrupt_handler.tdf | 478 - .../ahdl2v/interrupt_handler.v | 3578 ------ FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf | 78 - .../ahdl2v/lpm_bustri_BYT.inc | 24 - .../ahdl2v/lpm_bustri_BYT.tdf | 72 - .../ahdl2v/lpm_bustri_BYT.v | 78 - .../ahdl2v/lpm_bustri_LONG.inc | 24 - .../ahdl2v/lpm_bustri_LONG.tdf | 72 - .../ahdl2v/lpm_bustri_WORD.inc | 24 - .../ahdl2v/lpm_bustri_WORD.tdf | 72 - .../ahdl2v/lpm_bustri_WORD.v | 99 - FPGA_by_Gregory_Estrade/ahdl2v/xport.exe | Bin 566272 -> 0 bytes FPGA_by_Gregory_Estrade/altddio_out0.bsf | 64 - FPGA_by_Gregory_Estrade/altddio_out0.inc | 25 - FPGA_by_Gregory_Estrade/altddio_out0.ppf | 11 - FPGA_by_Gregory_Estrade/altddio_out0.qip | 7 - FPGA_by_Gregory_Estrade/altddio_out0.vhd | 146 - FPGA_by_Gregory_Estrade/altddio_out3.bsf | 64 - FPGA_by_Gregory_Estrade/altddio_out3.inc | 25 - FPGA_by_Gregory_Estrade/altddio_out3.ppf | 11 - FPGA_by_Gregory_Estrade/altddio_out3.qip | 7 - FPGA_by_Gregory_Estrade/altddio_out3.vhd | 146 - FPGA_by_Gregory_Estrade/altpll0.bsf | 117 - FPGA_by_Gregory_Estrade/altpll0.inc | 27 - FPGA_by_Gregory_Estrade/altpll0.ppf | 13 - FPGA_by_Gregory_Estrade/altpll0.qip | 7 - FPGA_by_Gregory_Estrade/altpll0.vhd | 477 - FPGA_by_Gregory_Estrade/altpll1.bsf | 100 - FPGA_by_Gregory_Estrade/altpll1.inc | 26 - FPGA_by_Gregory_Estrade/altpll1.ppf | 12 - FPGA_by_Gregory_Estrade/altpll1.qip | 7 - FPGA_by_Gregory_Estrade/altpll1.vhd | 423 - FPGA_by_Gregory_Estrade/altpll2.bsf | 117 - FPGA_by_Gregory_Estrade/altpll2.inc | 27 - FPGA_by_Gregory_Estrade/altpll2.ppf | 13 - FPGA_by_Gregory_Estrade/altpll2.qip | 7 - FPGA_by_Gregory_Estrade/altpll2.vhd | 477 - FPGA_by_Gregory_Estrade/altpll3.bsf | 105 - FPGA_by_Gregory_Estrade/altpll3.inc | 26 - FPGA_by_Gregory_Estrade/altpll3.ppf | 12 - FPGA_by_Gregory_Estrade/altpll3.qip | 7 - FPGA_by_Gregory_Estrade/altpll3.vhd | 445 - FPGA_by_Gregory_Estrade/altpll4.bsf | 125 - FPGA_by_Gregory_Estrade/altpll4.inc | 31 - FPGA_by_Gregory_Estrade/altpll4.mif | 174 - FPGA_by_Gregory_Estrade/altpll4.ppf | 17 - FPGA_by_Gregory_Estrade/altpll4.qip | 7 - FPGA_by_Gregory_Estrade/altpll4.tdf | 298 - FPGA_by_Gregory_Estrade/altpll_reconfig0.bsf | 162 - FPGA_by_Gregory_Estrade/altpll_reconfig0.qip | 5 - FPGA_by_Gregory_Estrade/altpll_reconfig1.bsf | 162 - FPGA_by_Gregory_Estrade/altpll_reconfig1.inc | 39 - FPGA_by_Gregory_Estrade/altpll_reconfig1.qip | 6 - FPGA_by_Gregory_Estrade/altpll_reconfig1.tdf | 144 - .../altpll_reconfig1_pllrcfg_bju.tdf | 583 - .../altpll_reconfig1_pllrcfg_t4q.tdf | 582 - FPGA_by_Gregory_Estrade/firebee1.bdf | 5837 --------- FPGA_by_Gregory_Estrade/firebee1.done | 1 - FPGA_by_Gregory_Estrade/firebee1.qpf | 30 - FPGA_by_Gregory_Estrade/firebee1.qsf | 826 -- FPGA_by_Gregory_Estrade/firebee1.qws | Bin 613 -> 0 bytes FPGA_by_Gregory_Estrade/firebee1.rbf | Bin 1191788 -> 0 bytes FPGA_by_Gregory_Estrade/firebee1.sdc | 149 - FPGA_by_Gregory_Estrade/firebee1.v | 707 - FPGA_by_Gregory_Estrade/firebee1.vhd | 861 -- .../firebee1_assignment_defaults.qdf | 687 - .../firebee1_description.txt | 0 FPGA_by_Gregory_Estrade/lpm_bustri_BYT.bsf | 56 - FPGA_by_Gregory_Estrade/lpm_bustri_BYT.inc | 24 - FPGA_by_Gregory_Estrade/lpm_bustri_BYT.qip | 6 - FPGA_by_Gregory_Estrade/lpm_bustri_BYT.vhd | 107 - FPGA_by_Gregory_Estrade/lpm_bustri_LONG.bsf | 56 - FPGA_by_Gregory_Estrade/lpm_bustri_LONG.inc | 24 - FPGA_by_Gregory_Estrade/lpm_bustri_LONG.qip | 6 - FPGA_by_Gregory_Estrade/lpm_bustri_LONG.vhd | 107 - FPGA_by_Gregory_Estrade/lpm_bustri_WORD.bsf | 56 - FPGA_by_Gregory_Estrade/lpm_bustri_WORD.inc | 24 - FPGA_by_Gregory_Estrade/lpm_bustri_WORD.qip | 6 - FPGA_by_Gregory_Estrade/lpm_bustri_WORD.vhd | 107 - FPGA_by_Gregory_Estrade/lpm_counter0.bsf | 49 - FPGA_by_Gregory_Estrade/lpm_counter0.qip | 5 - FPGA_by_Gregory_Estrade/lpm_counter0.vhd | 126 - FPGA_by_Gregory_Estrade/lpm_latch0.bsf | 53 - FPGA_by_Gregory_Estrade/lpm_latch0.qip | 5 - FPGA_by_Gregory_Estrade/lpm_latch0.vhd | 110 - FPGA_by_Gregory_Estrade/mux41.v | 74 - FPGA_by_Gregory_Estrade/mux41.vhd | 90 - 367 files changed, 85869 deletions(-) delete mode 100644 FPGA_by_Gregory_Estrade/DSP/DSP.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/DSP.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/DSP/dsp56k.zip delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd delete mode 100644 FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.cmp delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.qip delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.cmp delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.qip delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf delete mode 100644 FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v delete mode 100644 FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt delete mode 100644 FPGA_by_Gregory_Estrade/UNUSED delete mode 100644 FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd.bak delete mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf delete mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf.bak delete mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/DDR_CTR_BLITTER.tdf.bak delete mode 100644 FPGA_by_Gregory_Estrade/Video/UNUSED delete mode 100644 FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf delete mode 100644 FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf.bak delete mode 100644 FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/Video.bdf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_bidir0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_bidir0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_bidir0.ppf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_bidir0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_bidir0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out0.ppf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out1.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out1.ppf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out2.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out2.ppf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altddio_out2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram1.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram2.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/altdpram2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri3.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri4.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri5.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri5.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri5.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri5.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri6.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri6.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri6.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri7.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri7.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_bustri7.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_compare1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_compare1.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_compare1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_compare1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant1.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant3.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant4.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant4.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_constant4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff3.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff4.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff4.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff5.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff5.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff5.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff5.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff6.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff6.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff6.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_ff6.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_latch1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_latch1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_latch1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux1.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux2.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux3.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux4.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux5.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux5.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux5.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux5.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux6.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux6.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux6.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_mux6.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.bsf delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.inc delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.qip delete mode 100644 FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_0.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_1.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_2.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_3.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_4.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_4.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_5.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/mux41_5.vhd delete mode 100644 FPGA_by_Gregory_Estrade/Video/video.v delete mode 100644 FPGA_by_Gregory_Estrade/Video/video.vhd delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.v delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v delete mode 100644 FPGA_by_Gregory_Estrade/ahdl2v/xport.exe delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out0.inc delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out0.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out0.qip delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out3.inc delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out3.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out3.qip delete mode 100644 FPGA_by_Gregory_Estrade/altddio_out3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altpll0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll0.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll0.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altpll0.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altpll1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll1.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll1.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altpll1.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altpll2.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll2.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll2.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altpll2.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll2.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altpll3.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll3.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll3.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altpll3.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll3.vhd delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.mif delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.ppf delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll4.tdf delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig0.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1.bsf delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1.inc delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1.qip delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1.tdf delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_bju.tdf delete mode 100644 FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_t4q.tdf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.bdf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.done delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.qpf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.qsf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.qws delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.rbf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.sdc delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.v delete mode 100644 FPGA_by_Gregory_Estrade/firebee1.vhd delete mode 100644 FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf delete mode 100644 FPGA_by_Gregory_Estrade/firebee1_description.txt delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_BYT.bsf delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_BYT.inc delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_BYT.qip delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_BYT.vhd delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_LONG.bsf delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_LONG.inc delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_LONG.qip delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_LONG.vhd delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_WORD.bsf delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_WORD.inc delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_WORD.qip delete mode 100644 FPGA_by_Gregory_Estrade/lpm_bustri_WORD.vhd delete mode 100644 FPGA_by_Gregory_Estrade/lpm_counter0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/lpm_counter0.qip delete mode 100644 FPGA_by_Gregory_Estrade/lpm_counter0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/lpm_latch0.bsf delete mode 100644 FPGA_by_Gregory_Estrade/lpm_latch0.qip delete mode 100644 FPGA_by_Gregory_Estrade/lpm_latch0.vhd delete mode 100644 FPGA_by_Gregory_Estrade/mux41.v delete mode 100644 FPGA_by_Gregory_Estrade/mux41.vhd diff --git a/FPGA_by_Gregory_Estrade/DSP/DSP.vhd b/FPGA_by_Gregory_Estrade/DSP/DSP.vhd deleted file mode 100644 index 26f8e2e..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/DSP.vhd +++ /dev/null @@ -1,79 +0,0 @@ --- 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_by_Gregory_Estrade/DSP/DSP.vhd.bak b/FPGA_by_Gregory_Estrade/DSP/DSP.vhd.bak deleted file mode 100644 index 2d4811a..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/DSP.vhd.bak +++ /dev/null @@ -1,79 +0,0 @@ --- 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_by_Gregory_Estrade/DSP/dsp56k.zip b/FPGA_by_Gregory_Estrade/DSP/dsp56k.zip deleted file mode 100644 index 6522299f5635ba5560150e498fbbdf0fde8328f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39208 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%0DHs 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 jK{+bOV*50vsqm6_UbnR=_}C~*X)JJ% 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 diff --git a/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd deleted file mode 100644 index 1ff7e59..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/adgen_stage.vhd +++ /dev/null @@ -1,216 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/constants_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd deleted file mode 100644 index 4b8122d..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/constants_pkg.vhd +++ /dev/null @@ -1,62 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/decode_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd deleted file mode 100644 index 0c62149..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/decode_stage.vhd +++ /dev/null @@ -1,1221 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd deleted file mode 100644 index 9f3c3b9..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_alu.vhd +++ /dev/null @@ -1,603 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd deleted file mode 100644 index 68fecbb..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_bit_modify.vhd +++ /dev/null @@ -1,79 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd deleted file mode 100644 index 9b07913..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_branch.vhd +++ /dev/null @@ -1,117 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd deleted file mode 100644 index 63a0b2c..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cc_flag_calc.vhd +++ /dev/null @@ -1,75 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd deleted file mode 100644 index c236db7..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_cr_mod.vhd +++ /dev/null @@ -1,72 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd b/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd deleted file mode 100644 index cc32692..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/exec_stage_loops.vhd +++ /dev/null @@ -1,200 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/fetch_stage.vhd b/FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd deleted file mode 100644 index 6b22f09..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/fetch_stage.vhd +++ /dev/null @@ -1,60 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/mem_control.vhd b/FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd deleted file mode 100644 index 091fcf0..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/mem_control.vhd +++ /dev/null @@ -1,1519 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/memory_management.vhd b/FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd deleted file mode 100644 index 6a25ac8..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/memory_management.vhd +++ /dev/null @@ -1,206 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd deleted file mode 100644 index 9e3c301..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/parameter_pkg.vhd +++ /dev/null @@ -1,10 +0,0 @@ - -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_by_Gregory_Estrade/DSP/src/pipeline.vhd b/FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd deleted file mode 100644 index 5b5a98e..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/pipeline.vhd +++ /dev/null @@ -1,968 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/reg_file.vhd b/FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd deleted file mode 100644 index 7f3244c..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/reg_file.vhd +++ /dev/null @@ -1,679 +0,0 @@ -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_by_Gregory_Estrade/DSP/src/types_pkg.vhd b/FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd deleted file mode 100644 index 131f7fa..0000000 --- a/FPGA_by_Gregory_Estrade/DSP/src/types_pkg.vhd +++ /dev/null @@ -1,167 +0,0 @@ -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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd deleted file mode 100644 index b2b8dbb..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd +++ /dev/null @@ -1,971 +0,0 @@ --- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak deleted file mode 100644 index a339eda..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd.bak +++ /dev/null @@ -1,971 +0,0 @@ --- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd deleted file mode 100644 index edef447..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd +++ /dev/null @@ -1,406 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak deleted file mode 100644 index 4f42cf2..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd.bak +++ /dev/null @@ -1,406 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd deleted file mode 100644 index 4453332..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd +++ /dev/null @@ -1,631 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd deleted file mode 100644 index 57cf305..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd +++ /dev/null @@ -1,139 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd deleted file mode 100644 index 2c21c12..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd +++ /dev/null @@ -1,265 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd deleted file mode 100644 index abc0400..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_soc_top.vhd +++ /dev/null @@ -1,300 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd deleted file mode 100644 index bfb31fb..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF5380/wf5380_top.vhd +++ /dev/null @@ -1,275 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd deleted file mode 100644 index 10a86f9..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_am_detector.vhd +++ /dev/null @@ -1,253 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd deleted file mode 100644 index ce4c346..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_control.vhd +++ /dev/null @@ -1,1463 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd deleted file mode 100644 index 54b2060..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_crc_logic.vhd +++ /dev/null @@ -1,162 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd deleted file mode 100644 index 95ce08c..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_digital_pll.vhd +++ /dev/null @@ -1,426 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd deleted file mode 100644 index b365b3d..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_pkg.vhd +++ /dev/null @@ -1,232 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd deleted file mode 100644 index 7556fe5..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_registers.vhd +++ /dev/null @@ -1,264 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd deleted file mode 100644 index 71ef3f3..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top.vhd +++ /dev/null @@ -1,154 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd deleted file mode 100644 index 9cfd111..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_top_soc.vhd +++ /dev/null @@ -1,333 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd deleted file mode 100644 index c836716..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_FDC1772_IP/wf1772ip_transceiver.vhd +++ /dev/null @@ -1,517 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd deleted file mode 100644 index 7660aa2..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_gpio.vhd +++ /dev/null @@ -1,141 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd deleted file mode 100644 index 91417f8..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd +++ /dev/null @@ -1,391 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd deleted file mode 100644 index 73c0cdc..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd +++ /dev/null @@ -1,263 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd deleted file mode 100644 index b339af5..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_timers.vhd +++ /dev/null @@ -1,533 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd deleted file mode 100644 index 783ba56..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top.vhd +++ /dev/null @@ -1,213 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd deleted file mode 100644 index 1e559d9..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_top_soc.vhd +++ /dev/null @@ -1,309 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd deleted file mode 100644 index 8e7c3cc..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd +++ /dev/null @@ -1,191 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd deleted file mode 100644 index eb00a11..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_rx.vhd +++ /dev/null @@ -1,590 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd deleted file mode 100644 index fd06bf1..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_top.vhd +++ /dev/null @@ -1,238 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd deleted file mode 100644 index 8de27f3..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_usart_tx.vhd +++ /dev/null @@ -1,387 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd deleted file mode 100644 index 685fc02..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface.vhd +++ /dev/null @@ -1,228 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd deleted file mode 100644 index b1dfe91..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd +++ /dev/null @@ -1,240 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak deleted file mode 100644 index 0200dea..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SDC_IF/sd-card-interface_soc.vhd.bak +++ /dev/null @@ -1,239 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd deleted file mode 100644 index 9d048de..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_pkg.vhd +++ /dev/null @@ -1,84 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd deleted file mode 100644 index 3f5024a..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top.vhd +++ /dev/null @@ -1,170 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd deleted file mode 100644 index 77ea5ef..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd +++ /dev/null @@ -1,229 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd deleted file mode 100644 index d829f9b..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd +++ /dev/null @@ -1,533 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd deleted file mode 100644 index e60cc43..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd +++ /dev/null @@ -1,244 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak deleted file mode 100644 index a0ea9e4..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd.bak +++ /dev/null @@ -1,244 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd deleted file mode 100644 index 755e018..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd +++ /dev/null @@ -1,415 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak deleted file mode 100644 index e8c82b2..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_receive.vhd.bak +++ /dev/null @@ -1,415 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd deleted file mode 100644 index 60a7885..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top.vhd +++ /dev/null @@ -1,135 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd deleted file mode 100644 index cbca6bd..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd +++ /dev/null @@ -1,255 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak deleted file mode 100644 index 6f80a67..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_top_soc.vhd.bak +++ /dev/null @@ -1,252 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd deleted file mode 100644 index c8ae6fc..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd +++ /dev/null @@ -1,339 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak deleted file mode 100644 index bcff094..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_transmit.vhd.bak +++ /dev/null @@ -1,339 +0,0 @@ ----------------------------------------------------------------------- ----- ---- ----- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.bsf b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.bsf deleted file mode 100644 index f4d66a5..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.bsf +++ /dev/null @@ -1,95 +0,0 @@ -/* -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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.cmp b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.cmp deleted file mode 100644 index 1f8ad52..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.cmp +++ /dev/null @@ -1,28 +0,0 @@ ---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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.qip b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.qip deleted file mode 100644 index a22ffe4..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd deleted file mode 100644 index 9db22fa..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd +++ /dev/null @@ -1,202 +0,0 @@ --- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak deleted file mode 100644 index c3ca670..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo0.vhd.bak +++ /dev/null @@ -1,202 +0,0 @@ --- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.bsf b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.bsf deleted file mode 100644 index 7a4a386..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.bsf +++ /dev/null @@ -1,95 +0,0 @@ -/* -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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.cmp b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.cmp deleted file mode 100644 index a1b8d55..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.cmp +++ /dev/null @@ -1,28 +0,0 @@ ---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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.qip b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.qip deleted file mode 100644 index bf1428c..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd deleted file mode 100644 index d05dd0a..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd +++ /dev/null @@ -1,202 +0,0 @@ --- 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_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak b/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak deleted file mode 100644 index e7c6ae6..0000000 --- a/FPGA_by_Gregory_Estrade/FalconIO_SDCard_IDE_CF/dcfifo1.vhd.bak +++ /dev/null @@ -1,202 +0,0 @@ --- 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_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf deleted file mode 100644 index a455469..0000000 --- a/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.tdf +++ /dev/null @@ -1,478 +0,0 @@ -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_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v b/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v deleted file mode 100644 index 28b2376..0000000 --- a/FPGA_by_Gregory_Estrade/Interrupt_Handler/interrupt_handler.v +++ /dev/null @@ -1,3619 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: interrupt_handler.tdf -// Verilog Design Output: interrupt_handler.v -// Created 23-Feb-2014 10:34 AM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - -// INTERRUPT HANDLER UND C1287 - - -// CREATED BY FREDI ASCHWANDEN -// Parameters Statement (optional) -// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! -// Subdesign Section -module interrupt_handler(MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, - FB_SIZE1, FB_ADR, PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, - nPCI_INTC, nPCI_INTD, nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ, - nIRQ, INT_HANDLER_TA, ACP_CONF, TIN0, FB_AD, nRST); - -// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! - input MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, FB_SIZE1; - input [31:0] FB_ADR; - input PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, nPCI_INTC, nPCI_INTD, - nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ; - output [7:2] nIRQ; - output INT_HANDLER_TA; - output [31:0] ACP_CONF; - output TIN0; - inout [31:0] FB_AD; - input nRST; - -// WERTE REGISTER 0-63 - wire [3:0] FB_B; - wire [31:0] INT_CTR; - wire [31:0] INT_CTR_d; - wire INT_CTR_CS; - wire [31:0] INT_LATCH; - wire [31:0] INT_LATCH_d; - reg [31:0] INT_LATCH_d_prev; - wire [31:0] INT_LATCH_clk; - wire INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, INT_LATCH28_clrn, - INT_LATCH27_clrn, INT_LATCH26_clrn, INT_LATCH25_clrn, - INT_LATCH24_clrn, INT_LATCH23_clrn, INT_LATCH22_clrn, - INT_LATCH21_clrn, INT_LATCH20_clrn, INT_LATCH19_clrn, - INT_LATCH18_clrn, INT_LATCH17_clrn, INT_LATCH16_clrn, - INT_LATCH15_clrn, INT_LATCH14_clrn, INT_LATCH13_clrn, - INT_LATCH12_clrn, INT_LATCH11_clrn, INT_LATCH10_clrn, INT_LATCH9_clrn, - INT_LATCH8_clrn, INT_LATCH7_clrn, INT_LATCH6_clrn, INT_LATCH5_clrn, - INT_LATCH4_clrn, INT_LATCH3_clrn, INT_LATCH2_clrn, INT_LATCH1_clrn, - INT_LATCH0_clrn, INT_LATCH_CS; - wire [31:0] INT_CLEAR; - wire [31:0] INT_CLEAR_d; - wire INT_CLEAR_CS; - wire [31:0] INT_IN; - wire [31:0] INT_ENA; - wire [31:0] INT_ENA_d; - wire INT_ENA_CS; - wire [31:0] ACP_CONF_d; - wire ACP_CONF_CS, PSEUDO_BUS_ERROR, UHR_AS, UHR_DS; - wire [5:0] RTC_ADR; - wire [5:0] RTC_ADR_d; - wire [2:0] ACHTELSEKUNDEN; - wire [2:0] ACHTELSEKUNDEN_d; - wire [63:0] WERTE7_; - wire [63:0] WERTE7__d; - wire WERTE7_13_ena, WERTE7_9_ena, WERTE7_8_ena, WERTE7_7_ena, WERTE7_6_ena, - WERTE7_4_ena, WERTE7_2_ena, WERTE7_0_ena; - wire [63:0] WERTE6_; - wire [63:0] WERTE6__d; - wire WERTE6_10_clrn, WERTE6_13_ena, WERTE6_9_ena, WERTE6_8_ena, - WERTE6_7_ena, WERTE6_6_ena, WERTE6_4_ena, WERTE6_2_ena, WERTE6_0_ena; - wire [63:0] WERTE5_; - wire [63:0] WERTE5__d; - wire WERTE5_13_ena, WERTE5_9_ena, WERTE5_8_ena, WERTE5_7_ena, WERTE5_6_ena, - WERTE5_4_ena, WERTE5_2_ena, WERTE5_0_ena; - wire [63:0] WERTE4_; - wire [63:0] WERTE4__d; - wire WERTE4_13_ena, WERTE4_9_ena, WERTE4_8_ena, WERTE4_7_ena, WERTE4_6_ena, - WERTE4_4_ena, WERTE4_2_ena, WERTE4_0_ena; - wire [63:0] WERTE3_; - wire [63:0] WERTE3__d; - wire WERTE3_13_ena, WERTE3_9_ena, WERTE3_8_ena, WERTE3_7_ena, WERTE3_6_ena, - WERTE3_4_ena, WERTE3_2_ena, WERTE3_0_ena; - wire [63:0] WERTE2_; - wire [63:0] WERTE2__d; - wire WERTE2_13_ena, WERTE2_9_ena, WERTE2_8_ena, WERTE2_7_ena, WERTE2_6_ena, - WERTE2_4_ena, WERTE2_2_ena, WERTE2_0_ena; - wire [63:0] WERTE1_; - wire [63:0] WERTE1__d; - wire WERTE1_13_ena, WERTE1_9_ena, WERTE1_8_ena, WERTE1_7_ena, WERTE1_6_ena, - WERTE1_4_ena, WERTE1_2_ena, WERTE1_0_ena; - wire [63:0] WERTE0_; - wire [63:0] WERTE0__d; - wire WERTE0_13_ena, WERTE0_9_ena, WERTE0_8_ena, WERTE0_7_ena, WERTE0_6_ena, - WERTE0_4_ena, WERTE0_2_ena, WERTE0_0_ena; - wire [2:0] PIC_INT_SYNC; - wire [2:0] PIC_INT_SYNC_d; - wire INC_SEC, INC_MIN, INC_STD, INC_TAG; - wire [7:0] ANZAHL_TAGE_DES_MONATS; - wire WINTERZEIT, SOMMERZEIT, INC_MONAT, INC_JAHR, UPDATE_ON, gnd, vcc; - wire [7:0] u0_data; - wire u0_enabledt; - wire [7:0] u0_tridata; - wire [7:0] u1_data; - wire u1_enabledt; - wire [7:0] u1_tridata; - wire [7:0] u2_data; - wire u2_enabledt; - wire [7:0] u2_tridata; - wire [7:0] u3_data; - wire u3_enabledt; - wire [7:0] u3_tridata; - wire UPDATE_ON_1, UPDATE_ON_2, WERTE0_0_ena_1, WERTE0_0_ena_2, - WERTE0_2_ena_1, WERTE0_2_ena_2, WERTE0_4_ena_1, WERTE0_4_ena_2, - WERTE0_6_ena_1, WERTE0_6_ena_2, WERTE0_7_ena_1, WERTE0_7_ena_2, - WERTE0_8_ena_1, WERTE0_8_ena_2, WERTE0_9_ena_1, WERTE0_9_ena_2, - WERTE0_13_ena_1, WERTE0_13_ena_2, WERTE0_0_d_1, WERTE0_0_d_2, - WERTE0_2_d_1, WERTE0_2_d_2, WERTE0_4_d_1, WERTE0_4_d_2, WERTE0_6_d_1, - WERTE0_6_d_2, WERTE0_7_d_1, WERTE0_7_d_2, WERTE0_8_d_1, WERTE0_8_d_2, - WERTE0_9_d_1, WERTE0_9_d_2, WERTE0_11_d_1, WERTE0_11_d_2, - WERTE0_13_d_1, WERTE0_13_d_2, WERTE1_0_ena_1, WERTE1_0_ena_2, - WERTE1_2_ena_1, WERTE1_2_ena_2, WERTE1_4_ena_1, WERTE1_4_ena_2, - WERTE1_6_ena_1, WERTE1_6_ena_2, WERTE1_7_ena_1, WERTE1_7_ena_2, - WERTE1_8_ena_1, WERTE1_8_ena_2, WERTE1_9_ena_1, WERTE1_9_ena_2, - WERTE1_0_d_1, WERTE1_0_d_2, WERTE1_2_d_1, WERTE1_2_d_2, WERTE1_4_d_1, - WERTE1_4_d_2, WERTE1_6_d_1, WERTE1_6_d_2, WERTE1_7_d_1, WERTE1_7_d_2, - WERTE1_8_d_1, WERTE1_8_d_2, WERTE1_9_d_1, WERTE1_9_d_2, WERTE1_11_d_1, - WERTE1_11_d_2, WERTE2_0_ena_1, WERTE2_0_ena_2, WERTE2_2_ena_1, - WERTE2_2_ena_2, WERTE2_4_ena_1, WERTE2_4_ena_2, WERTE2_6_ena_1, - WERTE2_6_ena_2, WERTE2_7_ena_1, WERTE2_7_ena_2, WERTE2_8_ena_1, - WERTE2_8_ena_2, WERTE2_9_ena_1, WERTE2_9_ena_2, WERTE2_0_d_1, - WERTE2_0_d_2, WERTE2_2_d_1, WERTE2_2_d_2, WERTE2_4_d_1, WERTE2_4_d_2, - WERTE2_6_d_1, WERTE2_6_d_2, WERTE2_7_d_1, WERTE2_7_d_2, WERTE2_8_d_1, - WERTE2_8_d_2, WERTE2_9_d_1, WERTE2_9_d_2, WERTE2_11_d_1, - WERTE2_11_d_2, WERTE3_0_ena_1, WERTE3_0_ena_2, WERTE3_2_ena_1, - WERTE3_2_ena_2, WERTE3_4_ena_1, WERTE3_4_ena_2, WERTE3_6_ena_1, - WERTE3_6_ena_2, WERTE3_7_ena_1, WERTE3_7_ena_2, WERTE3_8_ena_1, - WERTE3_8_ena_2, WERTE3_9_ena_1, WERTE3_9_ena_2, WERTE3_0_d_1, - WERTE3_0_d_2, WERTE3_2_d_1, WERTE3_2_d_2, WERTE3_4_d_1, WERTE3_4_d_2, - WERTE3_6_d_1, WERTE3_6_d_2, WERTE3_7_d_1, WERTE3_7_d_2, WERTE3_8_d_1, - WERTE3_8_d_2, WERTE3_9_d_1, WERTE3_9_d_2, WERTE4_0_ena_1, - WERTE4_0_ena_2, WERTE4_2_ena_1, WERTE4_2_ena_2, WERTE4_4_ena_1, - WERTE4_4_ena_2, WERTE4_6_ena_1, WERTE4_6_ena_2, WERTE4_7_ena_1, - WERTE4_7_ena_2, WERTE4_8_ena_1, WERTE4_8_ena_2, WERTE4_9_ena_1, - WERTE4_9_ena_2, WERTE4_0_d_1, WERTE4_0_d_2, WERTE4_2_d_1, - WERTE4_2_d_2, WERTE4_4_d_1, WERTE4_4_d_2, WERTE4_6_d_1, WERTE4_6_d_2, - WERTE4_7_d_1, WERTE4_7_d_2, WERTE4_8_d_1, WERTE4_8_d_2, WERTE4_9_d_1, - WERTE4_9_d_2, WERTE5_0_ena_1, WERTE5_0_ena_2, WERTE5_2_ena_1, - WERTE5_2_ena_2, WERTE5_4_ena_1, WERTE5_4_ena_2, WERTE5_6_ena_1, - WERTE5_6_ena_2, WERTE5_7_ena_1, WERTE5_7_ena_2, WERTE5_8_ena_1, - WERTE5_8_ena_2, WERTE5_9_ena_1, WERTE5_9_ena_2, WERTE5_0_d_1, - WERTE5_0_d_2, WERTE5_2_d_1, WERTE5_2_d_2, WERTE5_4_d_1, WERTE5_4_d_2, - WERTE5_6_d_1, WERTE5_6_d_2, WERTE5_7_d_1, WERTE5_7_d_2, WERTE5_8_d_1, - WERTE5_8_d_2, WERTE5_9_d_1, WERTE5_9_d_2, WERTE6_0_ena_1, - WERTE6_0_ena_2, WERTE6_2_ena_1, WERTE6_2_ena_2, WERTE6_4_ena_1, - WERTE6_4_ena_2, WERTE6_6_ena_1, WERTE6_6_ena_2, WERTE6_7_ena_1, - WERTE6_7_ena_2, WERTE6_8_ena_1, WERTE6_8_ena_2, WERTE6_9_ena_1, - WERTE6_9_ena_2, WERTE6_0_d_1, WERTE6_0_d_2, WERTE6_2_d_1, - WERTE6_2_d_2, WERTE6_4_d_1, WERTE6_4_d_2, WERTE6_6_d_1, WERTE6_6_d_2, - WERTE6_7_d_1, WERTE6_7_d_2, WERTE6_8_d_1, WERTE6_8_d_2, WERTE6_9_d_1, - WERTE6_9_d_2, WERTE7_0_ena_1, WERTE7_0_ena_2, WERTE7_2_ena_1, - WERTE7_2_ena_2, WERTE7_4_ena_1, WERTE7_4_ena_2, WERTE7_6_ena_1, - WERTE7_6_ena_2, WERTE7_7_ena_1, WERTE7_7_ena_2, WERTE7_8_ena_1, - WERTE7_8_ena_2, WERTE7_9_ena_1, WERTE7_9_ena_2, WERTE7_0_d_1, - WERTE7_0_d_2, WERTE7_2_d_1, WERTE7_2_d_2, WERTE7_4_d_1, WERTE7_4_d_2, - WERTE7_6_d_1, WERTE7_6_d_2, WERTE7_7_d_1, WERTE7_7_d_2, WERTE7_8_d_1, - WERTE7_8_d_2, WERTE7_9_d_1, WERTE7_9_d_2, WERTE7_13_d_1, - WERTE7_13_d_2, ACHTELSEKUNDEN0_ena_ctrl, ACHTELSEKUNDEN0_clk_ctrl, - PIC_INT_SYNC0_clk_ctrl, WERTE0_63_ena_ctrl, WERTE0_62_ena_ctrl, - WERTE0_61_ena_ctrl, WERTE0_60_ena_ctrl, WERTE0_59_ena_ctrl, - WERTE0_58_ena_ctrl, WERTE0_57_ena_ctrl, WERTE0_56_ena_ctrl, - WERTE0_55_ena_ctrl, WERTE0_54_ena_ctrl, WERTE0_53_ena_ctrl, - WERTE0_52_ena_ctrl, WERTE0_51_ena_ctrl, WERTE0_50_ena_ctrl, - WERTE0_49_ena_ctrl, WERTE0_48_ena_ctrl, WERTE0_47_ena_ctrl, - WERTE0_46_ena_ctrl, WERTE0_45_ena_ctrl, WERTE0_44_ena_ctrl, - WERTE0_43_ena_ctrl, WERTE0_42_ena_ctrl, WERTE0_41_ena_ctrl, - WERTE0_40_ena_ctrl, WERTE0_39_ena_ctrl, WERTE0_38_ena_ctrl, - WERTE0_37_ena_ctrl, WERTE0_36_ena_ctrl, WERTE0_35_ena_ctrl, - WERTE0_34_ena_ctrl, WERTE0_33_ena_ctrl, WERTE0_32_ena_ctrl, - WERTE0_31_ena_ctrl, WERTE0_30_ena_ctrl, WERTE0_29_ena_ctrl, - WERTE0_28_ena_ctrl, WERTE0_27_ena_ctrl, WERTE0_26_ena_ctrl, - WERTE0_25_ena_ctrl, WERTE0_24_ena_ctrl, WERTE0_23_ena_ctrl, - WERTE0_22_ena_ctrl, WERTE0_21_ena_ctrl, WERTE0_20_ena_ctrl, - WERTE0_19_ena_ctrl, WERTE0_18_ena_ctrl, WERTE0_17_ena_ctrl, - WERTE0_16_ena_ctrl, WERTE0_15_ena_ctrl, WERTE0_14_ena_ctrl, - WERTE0_12_ena_ctrl, WERTE0_11_ena_ctrl, WERTE0_10_ena_ctrl, - WERTE0_5_ena_ctrl, WERTE0_3_ena_ctrl, WERTE0_1_ena_ctrl, - WERTE0_0_clk_ctrl, WERTE1_0_clk_ctrl, WERTE2_0_clk_ctrl, - WERTE3_0_clk_ctrl, WERTE4_0_clk_ctrl, WERTE5_0_clk_ctrl, - WERTE6_0_clk_ctrl, WERTE7_0_clk_ctrl, RTC_ADR0_ena_ctrl, - RTC_ADR0_clk_ctrl, ACP_CONF0_ena_ctrl, ACP_CONF8_ena_ctrl, - ACP_CONF16_ena_ctrl, ACP_CONF24_ena_ctrl, ACP_CONF0_clk_ctrl, - INT_CLEAR0_clk_ctrl, INT_ENA0_ena_ctrl, INT_ENA8_ena_ctrl, - INT_ENA16_ena_ctrl, INT_ENA24_ena_ctrl, INT_ENA0_clk_ctrl, - INT_CTR0_ena_ctrl, INT_CTR8_ena_ctrl, INT_CTR16_ena_ctrl, - INT_CTR24_ena_ctrl, INT_CTR0_clk_ctrl, INT_LATCH9_clk_1, - INT_LATCH8_clk_1, INT_LATCH7_clk_1, INT_LATCH6_clk_1, - INT_LATCH5_clk_1, INT_LATCH4_clk_1, INT_LATCH3_clk_1, - INT_LATCH2_clk_1, INT_LATCH1_clk_1, INT_LATCH0_clk_1; - reg [31:0] INT_CTR_q; - reg [31:0] INT_LATCH_q; - reg [31:0] INT_CLEAR_q; - reg [31:0] INT_ENA_q; - reg [31:0] ACP_CONF_q; - reg [5:0] RTC_ADR_q; - reg [2:0] ACHTELSEKUNDEN_q; - reg [63:0] WERTE7__q; - reg [63:0] WERTE6__q; - reg [63:0] WERTE5__q; - reg [63:0] WERTE4__q; - reg [63:0] WERTE3__q; - reg [63:0] WERTE2__q; - reg [63:0] WERTE1__q; - reg [63:0] WERTE0__q; - reg [2:0] PIC_INT_SYNC_q; - - -// Sub Module Section - /*lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), - .tridata(u0_tridata)); - - lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), - .tridata(u1_tridata)); - - lpm_bustri_BYT u2 (.data(u2_data), .enabledt(u2_enabledt), - .tridata(u2_tridata)); - - lpm_bustri_BYT u3 (.data(u3_data), .enabledt(u3_enabledt), - .tridata(u3_tridata));*/ - assign u0_tridata = (u0_enabledt) ? u0_data : 8'hzz; - assign u1_tridata = (u1_enabledt) ? u1_data : 8'hzz; - assign u2_tridata = (u2_enabledt) ? u2_data : 8'hzz; - assign u3_tridata = (u3_enabledt) ? u3_data : 8'hzz; - - - assign ACP_CONF[31:24] = ACP_CONF_q[31:24]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF24_ena_ctrl) - {ACP_CONF_q[31], ACP_CONF_q[30], ACP_CONF_q[29], ACP_CONF_q[28], - ACP_CONF_q[27], ACP_CONF_q[26], ACP_CONF_q[25], ACP_CONF_q[24]} - <= ACP_CONF_d[31:24]; - - assign ACP_CONF[23:16] = ACP_CONF_q[23:16]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF16_ena_ctrl) - {ACP_CONF_q[23], ACP_CONF_q[22], ACP_CONF_q[21], ACP_CONF_q[20], - ACP_CONF_q[19], ACP_CONF_q[18], ACP_CONF_q[17], ACP_CONF_q[16]} - <= ACP_CONF_d[23:16]; - - assign ACP_CONF[15:8] = ACP_CONF_q[15:8]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF8_ena_ctrl) - {ACP_CONF_q[15], ACP_CONF_q[14], ACP_CONF_q[13], ACP_CONF_q[12], - ACP_CONF_q[11], ACP_CONF_q[10], ACP_CONF_q[9], ACP_CONF_q[8]} <= - ACP_CONF_d[15:8]; - - assign ACP_CONF[7:0] = ACP_CONF_q[7:0]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF0_ena_ctrl) - {ACP_CONF_q[7], ACP_CONF_q[6], ACP_CONF_q[5], ACP_CONF_q[4], - ACP_CONF_q[3], ACP_CONF_q[2], ACP_CONF_q[1], ACP_CONF_q[0]} <= - ACP_CONF_d[7:0]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR24_ena_ctrl) - {INT_CTR_q[31], INT_CTR_q[30], INT_CTR_q[29], INT_CTR_q[28], - INT_CTR_q[27], INT_CTR_q[26], INT_CTR_q[25], INT_CTR_q[24]} <= - INT_CTR_d[31:24]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR16_ena_ctrl) - {INT_CTR_q[23], INT_CTR_q[22], INT_CTR_q[21], INT_CTR_q[20], - INT_CTR_q[19], INT_CTR_q[18], INT_CTR_q[17], INT_CTR_q[16]} <= - INT_CTR_d[23:16]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR8_ena_ctrl) - {INT_CTR_q[15], INT_CTR_q[14], INT_CTR_q[13], INT_CTR_q[12], - INT_CTR_q[11], INT_CTR_q[10], INT_CTR_q[9], INT_CTR_q[8]} <= - INT_CTR_d[15:8]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR0_ena_ctrl) - {INT_CTR_q[7], INT_CTR_q[6], INT_CTR_q[5], INT_CTR_q[4], INT_CTR_q[3], - INT_CTR_q[2], INT_CTR_q[1], INT_CTR_q[0]} <= INT_CTR_d[7:0]; - -//GE -always @(posedge MAIN_CLK) - INT_LATCH_d_prev <= INT_LATCH_d; - -genvar n; -generate -for(n = 0; n < 32; n = n + 1) begin: syncint - always @(posedge MAIN_CLK) - begin - if (!nRST) - INT_LATCH_q[n] <= 1'b0; - else if (INT_CLEAR_q[n]) - INT_LATCH_q[n] <= 1'b0; - else if (INT_LATCH_d[n] & !INT_LATCH_d_prev[n]) - INT_LATCH_q[n] <= 1'b1; - else - INT_LATCH_q[n] <= INT_LATCH_q[n]; - end -end -endgenerate - - /*always @(posedge INT_LATCH_clk or negedge INT_LATCH31_clrn) - if (!INT_LATCH31_clrn) - INT_LATCH_q[31] <= 1'h0; - else - INT_LATCH_q[31] <= INT_LATCH_d[31]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH30_clrn) - if (!INT_LATCH30_clrn) - INT_LATCH_q[30] <= 1'h0; - else - INT_LATCH_q[30] <= INT_LATCH_d[30]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH29_clrn) - if (!INT_LATCH29_clrn) - INT_LATCH_q[29] <= 1'h0; - else - INT_LATCH_q[29] <= INT_LATCH_d[29]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH28_clrn) - if (!INT_LATCH28_clrn) - INT_LATCH_q[28] <= 1'h0; - else - INT_LATCH_q[28] <= INT_LATCH_d[28]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH27_clrn) - if (!INT_LATCH27_clrn) - INT_LATCH_q[27] <= 1'h0; - else - INT_LATCH_q[27] <= INT_LATCH_d[27]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH26_clrn) - if (!INT_LATCH26_clrn) - INT_LATCH_q[26] <= 1'h0; - else - INT_LATCH_q[26] <= INT_LATCH_d[26]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH25_clrn) - if (!INT_LATCH25_clrn) - INT_LATCH_q[25] <= 1'h0; - else - INT_LATCH_q[25] <= INT_LATCH_d[25]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH24_clrn) - if (!INT_LATCH24_clrn) - INT_LATCH_q[24] <= 1'h0; - else - INT_LATCH_q[24] <= INT_LATCH_d[24]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH23_clrn) - if (!INT_LATCH23_clrn) - INT_LATCH_q[23] <= 1'h0; - else - INT_LATCH_q[23] <= INT_LATCH_d[23]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH22_clrn) - if (!INT_LATCH22_clrn) - INT_LATCH_q[22] <= 1'h0; - else - INT_LATCH_q[22] <= INT_LATCH_d[22]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH21_clrn) - if (!INT_LATCH21_clrn) - INT_LATCH_q[21] <= 1'h0; - else - INT_LATCH_q[21] <= INT_LATCH_d[21]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH20_clrn) - if (!INT_LATCH20_clrn) - INT_LATCH_q[20] <= 1'h0; - else - INT_LATCH_q[20] <= INT_LATCH_d[20]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH19_clrn) - if (!INT_LATCH19_clrn) - INT_LATCH_q[19] <= 1'h0; - else - INT_LATCH_q[19] <= INT_LATCH_d[19]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH18_clrn) - if (!INT_LATCH18_clrn) - INT_LATCH_q[18] <= 1'h0; - else - INT_LATCH_q[18] <= INT_LATCH_d[18]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH17_clrn) - if (!INT_LATCH17_clrn) - INT_LATCH_q[17] <= 1'h0; - else - INT_LATCH_q[17] <= INT_LATCH_d[17]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH16_clrn) - if (!INT_LATCH16_clrn) - INT_LATCH_q[16] <= 1'h0; - else - INT_LATCH_q[16] <= INT_LATCH_d[16]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH15_clrn) - if (!INT_LATCH15_clrn) - INT_LATCH_q[15] <= 1'h0; - else - INT_LATCH_q[15] <= INT_LATCH_d[15]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH14_clrn) - if (!INT_LATCH14_clrn) - INT_LATCH_q[14] <= 1'h0; - else - INT_LATCH_q[14] <= INT_LATCH_d[14]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH13_clrn) - if (!INT_LATCH13_clrn) - INT_LATCH_q[13] <= 1'h0; - else - INT_LATCH_q[13] <= INT_LATCH_d[13]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH12_clrn) - if (!INT_LATCH12_clrn) - INT_LATCH_q[12] <= 1'h0; - else - INT_LATCH_q[12] <= INT_LATCH_d[12]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH11_clrn) - if (!INT_LATCH11_clrn) - INT_LATCH_q[11] <= 1'h0; - else - INT_LATCH_q[11] <= INT_LATCH_d[11]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH10_clrn) - if (!INT_LATCH10_clrn) - INT_LATCH_q[10] <= 1'h0; - else - INT_LATCH_q[10] <= INT_LATCH_d[10]; - - always @(posedge INT_LATCH9_clk_1 or negedge INT_LATCH9_clrn) - if (!INT_LATCH9_clrn) - INT_LATCH_q[9] <= 1'h0; - else - INT_LATCH_q[9] <= INT_LATCH_d[9]; - - always @(posedge INT_LATCH8_clk_1 or negedge INT_LATCH8_clrn) - if (!INT_LATCH8_clrn) - INT_LATCH_q[8] <= 1'h0; - else - INT_LATCH_q[8] <= INT_LATCH_d[8]; - - always @(posedge INT_LATCH7_clk_1 or negedge INT_LATCH7_clrn) - if (!INT_LATCH7_clrn) - INT_LATCH_q[7] <= 1'h0; - else - INT_LATCH_q[7] <= INT_LATCH_d[7]; - - always @(posedge INT_LATCH6_clk_1 or negedge INT_LATCH6_clrn) - if (!INT_LATCH6_clrn) - INT_LATCH_q[6] <= 1'h0; - else - INT_LATCH_q[6] <= INT_LATCH_d[6]; - - always @(posedge INT_LATCH5_clk_1 or negedge INT_LATCH5_clrn) - if (!INT_LATCH5_clrn) - INT_LATCH_q[5] <= 1'h0; - else - INT_LATCH_q[5] <= INT_LATCH_d[5]; - - always @(posedge INT_LATCH4_clk_1 or negedge INT_LATCH4_clrn) - if (!INT_LATCH4_clrn) - INT_LATCH_q[4] <= 1'h0; - else - INT_LATCH_q[4] <= INT_LATCH_d[4]; - - always @(posedge INT_LATCH3_clk_1 or negedge INT_LATCH3_clrn) - if (!INT_LATCH3_clrn) - INT_LATCH_q[3] <= 1'h0; - else - INT_LATCH_q[3] <= INT_LATCH_d[3]; - - always @(posedge INT_LATCH2_clk_1 or negedge INT_LATCH2_clrn) - if (!INT_LATCH2_clrn) - INT_LATCH_q[2] <= 1'h0; - else - INT_LATCH_q[2] <= INT_LATCH_d[2]; - - always @(posedge INT_LATCH1_clk_1 or negedge INT_LATCH1_clrn) - if (!INT_LATCH1_clrn) - INT_LATCH_q[1] <= 1'h0; - else - INT_LATCH_q[1] <= INT_LATCH_d[1]; - - always @(posedge INT_LATCH0_clk_1 or negedge INT_LATCH0_clrn) - if (!INT_LATCH0_clrn) - INT_LATCH_q[0] <= 1'h0; - else - INT_LATCH_q[0] <= INT_LATCH_d[0];*/ - - - always @(posedge INT_CLEAR0_clk_ctrl) - INT_CLEAR_q <= INT_CLEAR_d; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA24_ena_ctrl) - {INT_ENA_q[31], INT_ENA_q[30], INT_ENA_q[29], INT_ENA_q[28], - INT_ENA_q[27], INT_ENA_q[26], INT_ENA_q[25], INT_ENA_q[24]} <= - INT_ENA_d[31:24]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA16_ena_ctrl) - {INT_ENA_q[23], INT_ENA_q[22], INT_ENA_q[21], INT_ENA_q[20], - INT_ENA_q[19], INT_ENA_q[18], INT_ENA_q[17], INT_ENA_q[16]} <= - INT_ENA_d[23:16]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA8_ena_ctrl) - {INT_ENA_q[15], INT_ENA_q[14], INT_ENA_q[13], INT_ENA_q[12], - INT_ENA_q[11], INT_ENA_q[10], INT_ENA_q[9], INT_ENA_q[8]} <= - INT_ENA_d[15:8]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA0_ena_ctrl) - {INT_ENA_q[7], INT_ENA_q[6], INT_ENA_q[5], INT_ENA_q[4], INT_ENA_q[3], - INT_ENA_q[2], INT_ENA_q[1], INT_ENA_q[0]} <= INT_ENA_d[7:0]; - - always @(posedge RTC_ADR0_clk_ctrl) - if (RTC_ADR0_ena_ctrl) - RTC_ADR_q <= RTC_ADR_d; - - always @(posedge ACHTELSEKUNDEN0_clk_ctrl) - if (ACHTELSEKUNDEN0_ena_ctrl) - ACHTELSEKUNDEN_q <= ACHTELSEKUNDEN_d; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE7__q[63] <= WERTE7__d[63]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE7__q[62] <= WERTE7__d[62]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE7__q[61] <= WERTE7__d[61]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE7__q[60] <= WERTE7__d[60]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE7__q[59] <= WERTE7__d[59]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE7__q[58] <= WERTE7__d[58]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE7__q[57] <= WERTE7__d[57]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE7__q[56] <= WERTE7__d[56]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE7__q[55] <= WERTE7__d[55]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE7__q[54] <= WERTE7__d[54]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE7__q[53] <= WERTE7__d[53]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE7__q[52] <= WERTE7__d[52]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE7__q[51] <= WERTE7__d[51]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE7__q[50] <= WERTE7__d[50]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE7__q[49] <= WERTE7__d[49]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE7__q[48] <= WERTE7__d[48]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE7__q[47] <= WERTE7__d[47]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE7__q[46] <= WERTE7__d[46]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE7__q[45] <= WERTE7__d[45]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE7__q[44] <= WERTE7__d[44]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE7__q[43] <= WERTE7__d[43]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE7__q[42] <= WERTE7__d[42]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE7__q[41] <= WERTE7__d[41]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE7__q[40] <= WERTE7__d[40]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE7__q[39] <= WERTE7__d[39]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE7__q[38] <= WERTE7__d[38]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE7__q[37] <= WERTE7__d[37]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE7__q[36] <= WERTE7__d[36]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE7__q[35] <= WERTE7__d[35]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE7__q[34] <= WERTE7__d[34]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE7__q[33] <= WERTE7__d[33]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE7__q[32] <= WERTE7__d[32]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE7__q[31] <= WERTE7__d[31]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE7__q[30] <= WERTE7__d[30]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE7__q[29] <= WERTE7__d[29]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE7__q[28] <= WERTE7__d[28]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE7__q[27] <= WERTE7__d[27]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE7__q[26] <= WERTE7__d[26]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE7__q[25] <= WERTE7__d[25]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE7__q[24] <= WERTE7__d[24]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE7__q[23] <= WERTE7__d[23]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE7__q[22] <= WERTE7__d[22]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE7__q[21] <= WERTE7__d[21]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE7__q[20] <= WERTE7__d[20]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE7__q[19] <= WERTE7__d[19]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE7__q[18] <= WERTE7__d[18]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE7__q[17] <= WERTE7__d[17]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE7__q[16] <= WERTE7__d[16]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE7__q[15] <= WERTE7__d[15]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE7__q[14] <= WERTE7__d[14]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_13_ena) - WERTE7__q[13] <= WERTE7__d[13]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE7__q[12] <= WERTE7__d[12]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE7__q[11] <= WERTE7__d[11]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE7__q[10] <= WERTE7__d[10]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_9_ena) - WERTE7__q[9] <= WERTE7__d[9]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_8_ena) - WERTE7__q[8] <= WERTE7__d[8]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_7_ena) - WERTE7__q[7] <= WERTE7__d[7]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_6_ena) - WERTE7__q[6] <= WERTE7__d[6]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE7__q[5] <= WERTE7__d[5]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_4_ena) - WERTE7__q[4] <= WERTE7__d[4]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE7__q[3] <= WERTE7__d[3]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_2_ena) - WERTE7__q[2] <= WERTE7__d[2]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE7__q[1] <= WERTE7__d[1]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_0_ena) - WERTE7__q[0] <= WERTE7__d[0]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE6__q[63] <= WERTE6__d[63]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE6__q[62] <= WERTE6__d[62]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE6__q[61] <= WERTE6__d[61]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE6__q[60] <= WERTE6__d[60]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE6__q[59] <= WERTE6__d[59]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE6__q[58] <= WERTE6__d[58]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE6__q[57] <= WERTE6__d[57]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE6__q[56] <= WERTE6__d[56]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE6__q[55] <= WERTE6__d[55]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE6__q[54] <= WERTE6__d[54]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE6__q[53] <= WERTE6__d[53]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE6__q[52] <= WERTE6__d[52]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE6__q[51] <= WERTE6__d[51]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE6__q[50] <= WERTE6__d[50]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE6__q[49] <= WERTE6__d[49]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE6__q[48] <= WERTE6__d[48]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE6__q[47] <= WERTE6__d[47]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE6__q[46] <= WERTE6__d[46]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE6__q[45] <= WERTE6__d[45]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE6__q[44] <= WERTE6__d[44]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE6__q[43] <= WERTE6__d[43]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE6__q[42] <= WERTE6__d[42]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE6__q[41] <= WERTE6__d[41]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE6__q[40] <= WERTE6__d[40]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE6__q[39] <= WERTE6__d[39]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE6__q[38] <= WERTE6__d[38]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE6__q[37] <= WERTE6__d[37]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE6__q[36] <= WERTE6__d[36]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE6__q[35] <= WERTE6__d[35]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE6__q[34] <= WERTE6__d[34]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE6__q[33] <= WERTE6__d[33]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE6__q[32] <= WERTE6__d[32]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE6__q[31] <= WERTE6__d[31]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE6__q[30] <= WERTE6__d[30]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE6__q[29] <= WERTE6__d[29]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE6__q[28] <= WERTE6__d[28]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE6__q[27] <= WERTE6__d[27]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE6__q[26] <= WERTE6__d[26]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE6__q[25] <= WERTE6__d[25]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE6__q[24] <= WERTE6__d[24]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE6__q[23] <= WERTE6__d[23]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE6__q[22] <= WERTE6__d[22]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE6__q[21] <= WERTE6__d[21]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE6__q[20] <= WERTE6__d[20]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE6__q[19] <= WERTE6__d[19]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE6__q[18] <= WERTE6__d[18]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE6__q[17] <= WERTE6__d[17]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE6__q[16] <= WERTE6__d[16]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE6__q[15] <= WERTE6__d[15]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE6__q[14] <= WERTE6__d[14]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_13_ena) - WERTE6__q[13] <= WERTE6__d[13]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE6__q[12] <= WERTE6__d[12]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE6__q[11] <= WERTE6__d[11]; - - always @(posedge WERTE6_0_clk_ctrl or negedge WERTE6_10_clrn) - if (!WERTE6_10_clrn) - WERTE6__q[10] <= 1'h0; - else - if (WERTE0_10_ena_ctrl) - WERTE6__q[10] <= WERTE6__d[10]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_9_ena) - WERTE6__q[9] <= WERTE6__d[9]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_8_ena) - WERTE6__q[8] <= WERTE6__d[8]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_7_ena) - WERTE6__q[7] <= WERTE6__d[7]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_6_ena) - WERTE6__q[6] <= WERTE6__d[6]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE6__q[5] <= WERTE6__d[5]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_4_ena) - WERTE6__q[4] <= WERTE6__d[4]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE6__q[3] <= WERTE6__d[3]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_2_ena) - WERTE6__q[2] <= WERTE6__d[2]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE6__q[1] <= WERTE6__d[1]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_0_ena) - WERTE6__q[0] <= WERTE6__d[0]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE5__q[63] <= WERTE5__d[63]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE5__q[62] <= WERTE5__d[62]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE5__q[61] <= WERTE5__d[61]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE5__q[60] <= WERTE5__d[60]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE5__q[59] <= WERTE5__d[59]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE5__q[58] <= WERTE5__d[58]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE5__q[57] <= WERTE5__d[57]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE5__q[56] <= WERTE5__d[56]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE5__q[55] <= WERTE5__d[55]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE5__q[54] <= WERTE5__d[54]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE5__q[53] <= WERTE5__d[53]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE5__q[52] <= WERTE5__d[52]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE5__q[51] <= WERTE5__d[51]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE5__q[50] <= WERTE5__d[50]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE5__q[49] <= WERTE5__d[49]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE5__q[48] <= WERTE5__d[48]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE5__q[47] <= WERTE5__d[47]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE5__q[46] <= WERTE5__d[46]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE5__q[45] <= WERTE5__d[45]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE5__q[44] <= WERTE5__d[44]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE5__q[43] <= WERTE5__d[43]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE5__q[42] <= WERTE5__d[42]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE5__q[41] <= WERTE5__d[41]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE5__q[40] <= WERTE5__d[40]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE5__q[39] <= WERTE5__d[39]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE5__q[38] <= WERTE5__d[38]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE5__q[37] <= WERTE5__d[37]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE5__q[36] <= WERTE5__d[36]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE5__q[35] <= WERTE5__d[35]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE5__q[34] <= WERTE5__d[34]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE5__q[33] <= WERTE5__d[33]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE5__q[32] <= WERTE5__d[32]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE5__q[31] <= WERTE5__d[31]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE5__q[30] <= WERTE5__d[30]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE5__q[29] <= WERTE5__d[29]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE5__q[28] <= WERTE5__d[28]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE5__q[27] <= WERTE5__d[27]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE5__q[26] <= WERTE5__d[26]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE5__q[25] <= WERTE5__d[25]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE5__q[24] <= WERTE5__d[24]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE5__q[23] <= WERTE5__d[23]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE5__q[22] <= WERTE5__d[22]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE5__q[21] <= WERTE5__d[21]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE5__q[20] <= WERTE5__d[20]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE5__q[19] <= WERTE5__d[19]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE5__q[18] <= WERTE5__d[18]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE5__q[17] <= WERTE5__d[17]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE5__q[16] <= WERTE5__d[16]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE5__q[15] <= WERTE5__d[15]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE5__q[14] <= WERTE5__d[14]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_13_ena) - WERTE5__q[13] <= WERTE5__d[13]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE5__q[12] <= WERTE5__d[12]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE5__q[11] <= WERTE5__d[11]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE5__q[10] <= WERTE5__d[10]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_9_ena) - WERTE5__q[9] <= WERTE5__d[9]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_8_ena) - WERTE5__q[8] <= WERTE5__d[8]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_7_ena) - WERTE5__q[7] <= WERTE5__d[7]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_6_ena) - WERTE5__q[6] <= WERTE5__d[6]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE5__q[5] <= WERTE5__d[5]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_4_ena) - WERTE5__q[4] <= WERTE5__d[4]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE5__q[3] <= WERTE5__d[3]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_2_ena) - WERTE5__q[2] <= WERTE5__d[2]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE5__q[1] <= WERTE5__d[1]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_0_ena) - WERTE5__q[0] <= WERTE5__d[0]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE4__q[63] <= WERTE4__d[63]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE4__q[62] <= WERTE4__d[62]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE4__q[61] <= WERTE4__d[61]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE4__q[60] <= WERTE4__d[60]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE4__q[59] <= WERTE4__d[59]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE4__q[58] <= WERTE4__d[58]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE4__q[57] <= WERTE4__d[57]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE4__q[56] <= WERTE4__d[56]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE4__q[55] <= WERTE4__d[55]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE4__q[54] <= WERTE4__d[54]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE4__q[53] <= WERTE4__d[53]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE4__q[52] <= WERTE4__d[52]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE4__q[51] <= WERTE4__d[51]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE4__q[50] <= WERTE4__d[50]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE4__q[49] <= WERTE4__d[49]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE4__q[48] <= WERTE4__d[48]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE4__q[47] <= WERTE4__d[47]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE4__q[46] <= WERTE4__d[46]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE4__q[45] <= WERTE4__d[45]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE4__q[44] <= WERTE4__d[44]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE4__q[43] <= WERTE4__d[43]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE4__q[42] <= WERTE4__d[42]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE4__q[41] <= WERTE4__d[41]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE4__q[40] <= WERTE4__d[40]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE4__q[39] <= WERTE4__d[39]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE4__q[38] <= WERTE4__d[38]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE4__q[37] <= WERTE4__d[37]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE4__q[36] <= WERTE4__d[36]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE4__q[35] <= WERTE4__d[35]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE4__q[34] <= WERTE4__d[34]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE4__q[33] <= WERTE4__d[33]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE4__q[32] <= WERTE4__d[32]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE4__q[31] <= WERTE4__d[31]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE4__q[30] <= WERTE4__d[30]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE4__q[29] <= WERTE4__d[29]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE4__q[28] <= WERTE4__d[28]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE4__q[27] <= WERTE4__d[27]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE4__q[26] <= WERTE4__d[26]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE4__q[25] <= WERTE4__d[25]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE4__q[24] <= WERTE4__d[24]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE4__q[23] <= WERTE4__d[23]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE4__q[22] <= WERTE4__d[22]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE4__q[21] <= WERTE4__d[21]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE4__q[20] <= WERTE4__d[20]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE4__q[19] <= WERTE4__d[19]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE4__q[18] <= WERTE4__d[18]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE4__q[17] <= WERTE4__d[17]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE4__q[16] <= WERTE4__d[16]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE4__q[15] <= WERTE4__d[15]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE4__q[14] <= WERTE4__d[14]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_13_ena) - WERTE4__q[13] <= WERTE4__d[13]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE4__q[12] <= WERTE4__d[12]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE4__q[11] <= WERTE4__d[11]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE4__q[10] <= WERTE4__d[10]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_9_ena) - WERTE4__q[9] <= WERTE4__d[9]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_8_ena) - WERTE4__q[8] <= WERTE4__d[8]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_7_ena) - WERTE4__q[7] <= WERTE4__d[7]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_6_ena) - WERTE4__q[6] <= WERTE4__d[6]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE4__q[5] <= WERTE4__d[5]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_4_ena) - WERTE4__q[4] <= WERTE4__d[4]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE4__q[3] <= WERTE4__d[3]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_2_ena) - WERTE4__q[2] <= WERTE4__d[2]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE4__q[1] <= WERTE4__d[1]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_0_ena) - WERTE4__q[0] <= WERTE4__d[0]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE3__q[63] <= WERTE3__d[63]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE3__q[62] <= WERTE3__d[62]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE3__q[61] <= WERTE3__d[61]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE3__q[60] <= WERTE3__d[60]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE3__q[59] <= WERTE3__d[59]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE3__q[58] <= WERTE3__d[58]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE3__q[57] <= WERTE3__d[57]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE3__q[56] <= WERTE3__d[56]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE3__q[55] <= WERTE3__d[55]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE3__q[54] <= WERTE3__d[54]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE3__q[53] <= WERTE3__d[53]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE3__q[52] <= WERTE3__d[52]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE3__q[51] <= WERTE3__d[51]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE3__q[50] <= WERTE3__d[50]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE3__q[49] <= WERTE3__d[49]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE3__q[48] <= WERTE3__d[48]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE3__q[47] <= WERTE3__d[47]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE3__q[46] <= WERTE3__d[46]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE3__q[45] <= WERTE3__d[45]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE3__q[44] <= WERTE3__d[44]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE3__q[43] <= WERTE3__d[43]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE3__q[42] <= WERTE3__d[42]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE3__q[41] <= WERTE3__d[41]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE3__q[40] <= WERTE3__d[40]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE3__q[39] <= WERTE3__d[39]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE3__q[38] <= WERTE3__d[38]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE3__q[37] <= WERTE3__d[37]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE3__q[36] <= WERTE3__d[36]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE3__q[35] <= WERTE3__d[35]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE3__q[34] <= WERTE3__d[34]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE3__q[33] <= WERTE3__d[33]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE3__q[32] <= WERTE3__d[32]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE3__q[31] <= WERTE3__d[31]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE3__q[30] <= WERTE3__d[30]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE3__q[29] <= WERTE3__d[29]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE3__q[28] <= WERTE3__d[28]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE3__q[27] <= WERTE3__d[27]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE3__q[26] <= WERTE3__d[26]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE3__q[25] <= WERTE3__d[25]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE3__q[24] <= WERTE3__d[24]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE3__q[23] <= WERTE3__d[23]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE3__q[22] <= WERTE3__d[22]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE3__q[21] <= WERTE3__d[21]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE3__q[20] <= WERTE3__d[20]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE3__q[19] <= WERTE3__d[19]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE3__q[18] <= WERTE3__d[18]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE3__q[17] <= WERTE3__d[17]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE3__q[16] <= WERTE3__d[16]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE3__q[15] <= WERTE3__d[15]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE3__q[14] <= WERTE3__d[14]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_13_ena) - WERTE3__q[13] <= WERTE3__d[13]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE3__q[12] <= WERTE3__d[12]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE3__q[11] <= WERTE3__d[11]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE3__q[10] <= WERTE3__d[10]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_9_ena) - WERTE3__q[9] <= WERTE3__d[9]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_8_ena) - WERTE3__q[8] <= WERTE3__d[8]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_7_ena) - WERTE3__q[7] <= WERTE3__d[7]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_6_ena) - WERTE3__q[6] <= WERTE3__d[6]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE3__q[5] <= WERTE3__d[5]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_4_ena) - WERTE3__q[4] <= WERTE3__d[4]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE3__q[3] <= WERTE3__d[3]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_2_ena) - WERTE3__q[2] <= WERTE3__d[2]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE3__q[1] <= WERTE3__d[1]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_0_ena) - WERTE3__q[0] <= WERTE3__d[0]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE2__q[63] <= WERTE2__d[63]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE2__q[62] <= WERTE2__d[62]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE2__q[61] <= WERTE2__d[61]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE2__q[60] <= WERTE2__d[60]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE2__q[59] <= WERTE2__d[59]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE2__q[58] <= WERTE2__d[58]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE2__q[57] <= WERTE2__d[57]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE2__q[56] <= WERTE2__d[56]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE2__q[55] <= WERTE2__d[55]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE2__q[54] <= WERTE2__d[54]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE2__q[53] <= WERTE2__d[53]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE2__q[52] <= WERTE2__d[52]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE2__q[51] <= WERTE2__d[51]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE2__q[50] <= WERTE2__d[50]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE2__q[49] <= WERTE2__d[49]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE2__q[48] <= WERTE2__d[48]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE2__q[47] <= WERTE2__d[47]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE2__q[46] <= WERTE2__d[46]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE2__q[45] <= WERTE2__d[45]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE2__q[44] <= WERTE2__d[44]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE2__q[43] <= WERTE2__d[43]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE2__q[42] <= WERTE2__d[42]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE2__q[41] <= WERTE2__d[41]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE2__q[40] <= WERTE2__d[40]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE2__q[39] <= WERTE2__d[39]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE2__q[38] <= WERTE2__d[38]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE2__q[37] <= WERTE2__d[37]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE2__q[36] <= WERTE2__d[36]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE2__q[35] <= WERTE2__d[35]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE2__q[34] <= WERTE2__d[34]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE2__q[33] <= WERTE2__d[33]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE2__q[32] <= WERTE2__d[32]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE2__q[31] <= WERTE2__d[31]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE2__q[30] <= WERTE2__d[30]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE2__q[29] <= WERTE2__d[29]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE2__q[28] <= WERTE2__d[28]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE2__q[27] <= WERTE2__d[27]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE2__q[26] <= WERTE2__d[26]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE2__q[25] <= WERTE2__d[25]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE2__q[24] <= WERTE2__d[24]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE2__q[23] <= WERTE2__d[23]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE2__q[22] <= WERTE2__d[22]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE2__q[21] <= WERTE2__d[21]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE2__q[20] <= WERTE2__d[20]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE2__q[19] <= WERTE2__d[19]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE2__q[18] <= WERTE2__d[18]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE2__q[17] <= WERTE2__d[17]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE2__q[16] <= WERTE2__d[16]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE2__q[15] <= WERTE2__d[15]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE2__q[14] <= WERTE2__d[14]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_13_ena) - WERTE2__q[13] <= WERTE2__d[13]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE2__q[12] <= WERTE2__d[12]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE2__q[11] <= WERTE2__d[11]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE2__q[10] <= WERTE2__d[10]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_9_ena) - WERTE2__q[9] <= WERTE2__d[9]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_8_ena) - WERTE2__q[8] <= WERTE2__d[8]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_7_ena) - WERTE2__q[7] <= WERTE2__d[7]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_6_ena) - WERTE2__q[6] <= WERTE2__d[6]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE2__q[5] <= WERTE2__d[5]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_4_ena) - WERTE2__q[4] <= WERTE2__d[4]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE2__q[3] <= WERTE2__d[3]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_2_ena) - WERTE2__q[2] <= WERTE2__d[2]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE2__q[1] <= WERTE2__d[1]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_0_ena) - WERTE2__q[0] <= WERTE2__d[0]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE1__q[63] <= WERTE1__d[63]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE1__q[62] <= WERTE1__d[62]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE1__q[61] <= WERTE1__d[61]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE1__q[60] <= WERTE1__d[60]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE1__q[59] <= WERTE1__d[59]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE1__q[58] <= WERTE1__d[58]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE1__q[57] <= WERTE1__d[57]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE1__q[56] <= WERTE1__d[56]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE1__q[55] <= WERTE1__d[55]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE1__q[54] <= WERTE1__d[54]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE1__q[53] <= WERTE1__d[53]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE1__q[52] <= WERTE1__d[52]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE1__q[51] <= WERTE1__d[51]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE1__q[50] <= WERTE1__d[50]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE1__q[49] <= WERTE1__d[49]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE1__q[48] <= WERTE1__d[48]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE1__q[47] <= WERTE1__d[47]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE1__q[46] <= WERTE1__d[46]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE1__q[45] <= WERTE1__d[45]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE1__q[44] <= WERTE1__d[44]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE1__q[43] <= WERTE1__d[43]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE1__q[42] <= WERTE1__d[42]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE1__q[41] <= WERTE1__d[41]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE1__q[40] <= WERTE1__d[40]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE1__q[39] <= WERTE1__d[39]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE1__q[38] <= WERTE1__d[38]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE1__q[37] <= WERTE1__d[37]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE1__q[36] <= WERTE1__d[36]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE1__q[35] <= WERTE1__d[35]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE1__q[34] <= WERTE1__d[34]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE1__q[33] <= WERTE1__d[33]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE1__q[32] <= WERTE1__d[32]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE1__q[31] <= WERTE1__d[31]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE1__q[30] <= WERTE1__d[30]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE1__q[29] <= WERTE1__d[29]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE1__q[28] <= WERTE1__d[28]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE1__q[27] <= WERTE1__d[27]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE1__q[26] <= WERTE1__d[26]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE1__q[25] <= WERTE1__d[25]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE1__q[24] <= WERTE1__d[24]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE1__q[23] <= WERTE1__d[23]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE1__q[22] <= WERTE1__d[22]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE1__q[21] <= WERTE1__d[21]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE1__q[20] <= WERTE1__d[20]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE1__q[19] <= WERTE1__d[19]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE1__q[18] <= WERTE1__d[18]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE1__q[17] <= WERTE1__d[17]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE1__q[16] <= WERTE1__d[16]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE1__q[15] <= WERTE1__d[15]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE1__q[14] <= WERTE1__d[14]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_13_ena) - WERTE1__q[13] <= WERTE1__d[13]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE1__q[12] <= WERTE1__d[12]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE1__q[11] <= WERTE1__d[11]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE1__q[10] <= WERTE1__d[10]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_9_ena) - WERTE1__q[9] <= WERTE1__d[9]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_8_ena) - WERTE1__q[8] <= WERTE1__d[8]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_7_ena) - WERTE1__q[7] <= WERTE1__d[7]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_6_ena) - WERTE1__q[6] <= WERTE1__d[6]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE1__q[5] <= WERTE1__d[5]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_4_ena) - WERTE1__q[4] <= WERTE1__d[4]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE1__q[3] <= WERTE1__d[3]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_2_ena) - WERTE1__q[2] <= WERTE1__d[2]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE1__q[1] <= WERTE1__d[1]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_0_ena) - WERTE1__q[0] <= WERTE1__d[0]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE0__q[63] <= WERTE0__d[63]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE0__q[62] <= WERTE0__d[62]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE0__q[61] <= WERTE0__d[61]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE0__q[60] <= WERTE0__d[60]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE0__q[59] <= WERTE0__d[59]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE0__q[58] <= WERTE0__d[58]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE0__q[57] <= WERTE0__d[57]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE0__q[56] <= WERTE0__d[56]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE0__q[55] <= WERTE0__d[55]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE0__q[54] <= WERTE0__d[54]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE0__q[53] <= WERTE0__d[53]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE0__q[52] <= WERTE0__d[52]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE0__q[51] <= WERTE0__d[51]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE0__q[50] <= WERTE0__d[50]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE0__q[49] <= WERTE0__d[49]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE0__q[48] <= WERTE0__d[48]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE0__q[47] <= WERTE0__d[47]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE0__q[46] <= WERTE0__d[46]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE0__q[45] <= WERTE0__d[45]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE0__q[44] <= WERTE0__d[44]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE0__q[43] <= WERTE0__d[43]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE0__q[42] <= WERTE0__d[42]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE0__q[41] <= WERTE0__d[41]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE0__q[40] <= WERTE0__d[40]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE0__q[39] <= WERTE0__d[39]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE0__q[38] <= WERTE0__d[38]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE0__q[37] <= WERTE0__d[37]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE0__q[36] <= WERTE0__d[36]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE0__q[35] <= WERTE0__d[35]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE0__q[34] <= WERTE0__d[34]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE0__q[33] <= WERTE0__d[33]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE0__q[32] <= WERTE0__d[32]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE0__q[31] <= WERTE0__d[31]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE0__q[30] <= WERTE0__d[30]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE0__q[29] <= WERTE0__d[29]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE0__q[28] <= WERTE0__d[28]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE0__q[27] <= WERTE0__d[27]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE0__q[26] <= WERTE0__d[26]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE0__q[25] <= WERTE0__d[25]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE0__q[24] <= WERTE0__d[24]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE0__q[23] <= WERTE0__d[23]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE0__q[22] <= WERTE0__d[22]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE0__q[21] <= WERTE0__d[21]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE0__q[20] <= WERTE0__d[20]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE0__q[19] <= WERTE0__d[19]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE0__q[18] <= WERTE0__d[18]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE0__q[17] <= WERTE0__d[17]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE0__q[16] <= WERTE0__d[16]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE0__q[15] <= WERTE0__d[15]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE0__q[14] <= WERTE0__d[14]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_13_ena) - WERTE0__q[13] <= WERTE0__d[13]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE0__q[12] <= WERTE0__d[12]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE0__q[11] <= WERTE0__d[11]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE0__q[10] <= WERTE0__d[10]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_9_ena) - WERTE0__q[9] <= WERTE0__d[9]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_8_ena) - WERTE0__q[8] <= WERTE0__d[8]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_7_ena) - WERTE0__q[7] <= WERTE0__d[7]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_6_ena) - WERTE0__q[6] <= WERTE0__d[6]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE0__q[5] <= WERTE0__d[5]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_4_ena) - WERTE0__q[4] <= WERTE0__d[4]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE0__q[3] <= WERTE0__d[3]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_2_ena) - WERTE0__q[2] <= WERTE0__d[2]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE0__q[1] <= WERTE0__d[1]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_0_ena) - WERTE0__q[0] <= WERTE0__d[0]; - - always @(posedge PIC_INT_SYNC0_clk_ctrl) - PIC_INT_SYNC_q <= PIC_INT_SYNC_d; - -// Start of original equations - -// BYT SELECT -// HWORD -// HHBYT -// LONG UND LINE - assign FB_B[0] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & - FB_SIZE0 & (!FB_ADR[1]) & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) - | (FB_SIZE1 & FB_SIZE0); - -// HWORD -// HLBYT -// LONG UND LINE - assign FB_B[1] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & - FB_SIZE0 & (!FB_ADR[1]) & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// LWORD -// LHBYT -// LONG UND LINE - assign FB_B[2] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & - FB_SIZE0 & FB_ADR[1] & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// LWORD -// LLBYT -// LONG UND LINE - assign FB_B[3] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & - FB_SIZE0 & FB_ADR[1] & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN - assign INT_CTR0_clk_ctrl = MAIN_CLK; - -// $10000/4 - assign INT_CTR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4000; - assign INT_CTR_d = FB_AD; - assign INT_CTR24_ena_ctrl = INT_CTR_CS & FB_B[0] & (!nFB_WR); - assign INT_CTR16_ena_ctrl = INT_CTR_CS & FB_B[1] & (!nFB_WR); - assign INT_CTR8_ena_ctrl = INT_CTR_CS & FB_B[2] & (!nFB_WR); - assign INT_CTR0_ena_ctrl = INT_CTR_CS & FB_B[3] & (!nFB_WR); - -// INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 - assign INT_ENA0_clk_ctrl = MAIN_CLK; - -// $10004/4 - assign INT_ENA_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4001; - assign INT_ENA_d = FB_AD; - assign INT_ENA24_ena_ctrl = INT_ENA_CS & FB_B[0] & (!nFB_WR); - assign INT_ENA16_ena_ctrl = INT_ENA_CS & FB_B[1] & (!nFB_WR); - assign INT_ENA8_ena_ctrl = INT_ENA_CS & FB_B[2] & (!nFB_WR); - assign INT_ENA0_ena_ctrl = INT_ENA_CS & FB_B[3] & (!nFB_WR); - -// INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR - assign INT_CLEAR0_clk_ctrl = MAIN_CLK; - -// $10008/4 - assign INT_CLEAR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4002; - assign INT_CLEAR_d[31:24] = FB_AD[31:24] & {8{INT_CLEAR_CS}} & {8{FB_B[0]}} - & {8{!nFB_WR}}; - assign INT_CLEAR_d[23:16] = FB_AD[23:16] & {8{INT_CLEAR_CS}} & {8{FB_B[1]}} - & {8{!nFB_WR}}; - assign INT_CLEAR_d[15:8] = FB_AD[15:8] & {8{INT_CLEAR_CS}} & {8{FB_B[2]}} & - {8{!nFB_WR}}; - assign INT_CLEAR_d[7:0] = FB_AD[7:0] & {8{INT_CLEAR_CS}} & {8{FB_B[3]}} & - {8{!nFB_WR}}; - -// INTERRUPT LATCH REGISTER READ ONLY -// $1000C/4 - assign INT_LATCH_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4003; - -// INTERRUPT - assign nIRQ[2] = !(HSYNC & INT_ENA_q[26]); - assign nIRQ[3] = !(INT_CTR_q[0] & INT_ENA_q[27]); - assign nIRQ[4] = !(VSYNC & INT_ENA_q[28]); - assign nIRQ[5] = INT_LATCH_q == 32'h0 & INT_ENA_q[29]; - assign nIRQ[6] = !((!nMFP_INT) & INT_ENA_q[30]); - assign nIRQ[7] = !(PSEUDO_BUS_ERROR & INT_ENA_q[31]); - -// SCC -// VME -// PADDLE -// PADDLE -// PADDLE -// MFP2 -// MFP2 -// MFP2 -// MFP2 -// TT SCSI -// ST UHR -// ST UHR -// DMA SOUND -// DMA SOUND -// DMA SOUND - assign PSEUDO_BUS_ERROR = (!nFB_CS1) & (FB_ADR[19:4] == 16'hF8C8 | - FB_ADR[19:4] == 16'hF8E0 | FB_ADR[19:4] == 16'hF920 | FB_ADR[19:4] == - 16'hF921 | FB_ADR[19:4] == 16'hF922 | FB_ADR[19:4] == 16'hFFA8 | - FB_ADR[19:4] == 16'hFFA9 | FB_ADR[19:4] == 16'hFFAA | FB_ADR[19:4] == - 16'hFFA8 | FB_ADR[19:8] == 12'b1111_1000_0111 | FB_ADR[19:4] == - 16'hFFC2 | FB_ADR[19:4] == 16'hFFC3 | FB_ADR[19:4] == 16'hF890 | - FB_ADR[19:4] == 16'hF891 | FB_ADR[19:4] == 16'hF892); - -// IF VIDEO ADR CHANGE -// WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 - assign TIN0 = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100 & (!nFB_WR); - -// INTERRUPT LATCH - /*assign INT_LATCH_d = 32'hFFFF_FFFF; - assign INT_LATCH0_clk_1 = PIC_INT & INT_ENA_q[0]; - assign INT_LATCH1_clk_1 = E0_INT & INT_ENA_q[1]; - assign INT_LATCH2_clk_1 = DVI_INT & INT_ENA_q[2]; - assign INT_LATCH3_clk_1 = (!nPCI_INTA) & INT_ENA_q[3]; - assign INT_LATCH4_clk_1 = (!nPCI_INTB) & INT_ENA_q[4]; - assign INT_LATCH5_clk_1 = (!nPCI_INTC) & INT_ENA_q[5]; - assign INT_LATCH6_clk_1 = (!nPCI_INTD) & INT_ENA_q[6]; - assign INT_LATCH7_clk_1 = DSP_INT & INT_ENA_q[7]; - assign INT_LATCH8_clk_1 = VSYNC & INT_ENA_q[8]; - assign INT_LATCH9_clk_1 = HSYNC & INT_ENA_q[9];*/ - - //GE Latch -> FF - assign INT_LATCH_d[31:10] = 22'b11_1111_1111_1111_1111_1111; - assign INT_LATCH_d[0] = PIC_INT & INT_ENA_q[0]; - assign INT_LATCH_d[1] = E0_INT & INT_ENA_q[1]; - assign INT_LATCH_d[2] = DVI_INT & INT_ENA_q[2]; - assign INT_LATCH_d[3] = (!nPCI_INTA) & INT_ENA_q[3]; - assign INT_LATCH_d[4] = (!nPCI_INTB) & INT_ENA_q[4]; - assign INT_LATCH_d[5] = (!nPCI_INTC) & INT_ENA_q[5]; - assign INT_LATCH_d[6] = (!nPCI_INTD) & INT_ENA_q[6]; - assign INT_LATCH_d[7] = DSP_INT & INT_ENA_q[7]; - assign INT_LATCH_d[8] = VSYNC & INT_ENA_q[8]; - assign INT_LATCH_d[9] = HSYNC & INT_ENA_q[9]; - -// INTERRUPT CLEAR - assign {INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, - INT_LATCH28_clrn, INT_LATCH27_clrn, INT_LATCH26_clrn, - INT_LATCH25_clrn, INT_LATCH24_clrn, INT_LATCH23_clrn, - INT_LATCH22_clrn, INT_LATCH21_clrn, INT_LATCH20_clrn, - INT_LATCH19_clrn, INT_LATCH18_clrn, INT_LATCH17_clrn, - INT_LATCH16_clrn, INT_LATCH15_clrn, INT_LATCH14_clrn, - INT_LATCH13_clrn, INT_LATCH12_clrn, INT_LATCH11_clrn, - INT_LATCH10_clrn, INT_LATCH9_clrn, INT_LATCH8_clrn, INT_LATCH7_clrn, - INT_LATCH6_clrn, INT_LATCH5_clrn, INT_LATCH4_clrn, INT_LATCH3_clrn, - INT_LATCH2_clrn, INT_LATCH1_clrn, INT_LATCH0_clrn} = ~INT_CLEAR_q; - -// INT_IN - assign INT_IN[0] = PIC_INT; - assign INT_IN[1] = E0_INT; - assign INT_IN[2] = DVI_INT; - assign INT_IN[3] = !nPCI_INTA; - assign INT_IN[4] = !nPCI_INTB; - assign INT_IN[5] = !nPCI_INTC; - assign INT_IN[6] = !nPCI_INTD; - assign INT_IN[7] = DSP_INT; - assign INT_IN[8] = VSYNC; - assign INT_IN[9] = HSYNC; - assign INT_IN[25:10] = 16'h0; - assign INT_IN[26] = HSYNC; - assign INT_IN[27] = INT_CTR_q[0]; - assign INT_IN[28] = VSYNC; - assign INT_IN[29] = INT_LATCH_q != 32'h0; - assign INT_IN[30] = !nMFP_INT; - assign INT_IN[31] = DMA_DRQ; - -// *************************************************************************************** -// ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE - assign ACP_CONF0_clk_ctrl = MAIN_CLK; - -// $4'0000/4 - assign ACP_CONF_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h1_0000; - assign ACP_CONF_d = FB_AD; - assign ACP_CONF24_ena_ctrl = ACP_CONF_CS & FB_B[0] & (!nFB_WR); - assign ACP_CONF16_ena_ctrl = ACP_CONF_CS & FB_B[1] & (!nFB_WR); - assign ACP_CONF8_ena_ctrl = ACP_CONF_CS & FB_B[2] & (!nFB_WR); - assign ACP_CONF0_ena_ctrl = ACP_CONF_CS & FB_B[3] & (!nFB_WR); - -// *************************************************************************************** -// ------------------------------------------------------------ -// C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR -// -------------------------------------------------------- - assign RTC_ADR0_clk_ctrl = MAIN_CLK; - assign RTC_ADR_d = FB_AD[21:16]; - -// FFFF8961 - assign UHR_AS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B0 & FB_B[1]; - -// FFFF8963 - assign UHR_DS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B1 & FB_B[3]; - assign RTC_ADR0_ena_ctrl = UHR_AS & (!nFB_WR); - assign WERTE7_0_clk_ctrl = MAIN_CLK; - assign WERTE6_0_clk_ctrl = MAIN_CLK; - assign WERTE5_0_clk_ctrl = MAIN_CLK; - assign WERTE4_0_clk_ctrl = MAIN_CLK; - assign WERTE3_0_clk_ctrl = MAIN_CLK; - assign WERTE2_0_clk_ctrl = MAIN_CLK; - assign WERTE1_0_clk_ctrl = MAIN_CLK; - assign WERTE0_0_clk_ctrl = MAIN_CLK; - assign {WERTE7_0_d_1, WERTE6_0_d_1, WERTE5_0_d_1, WERTE4_0_d_1, - WERTE3_0_d_1, WERTE2_0_d_1, WERTE1_0_d_1, WERTE0_0_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[1], WERTE6__d[1], WERTE5__d[1], WERTE4__d[1], - WERTE3__d[1], WERTE2__d[1], WERTE1__d[1], WERTE0__d[1]} = - FB_AD[23:16]; - assign {WERTE7_2_d_1, WERTE6_2_d_1, WERTE5_2_d_1, WERTE4_2_d_1, - WERTE3_2_d_1, WERTE2_2_d_1, WERTE1_2_d_1, WERTE0_2_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[3], WERTE6__d[3], WERTE5__d[3], WERTE4__d[3], - WERTE3__d[3], WERTE2__d[3], WERTE1__d[3], WERTE0__d[3]} = - FB_AD[23:16]; - assign {WERTE7_4_d_1, WERTE6_4_d_1, WERTE5_4_d_1, WERTE4_4_d_1, - WERTE3_4_d_1, WERTE2_4_d_1, WERTE1_4_d_1, WERTE0_4_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[5], WERTE6__d[5], WERTE5__d[5], WERTE4__d[5], - WERTE3__d[5], WERTE2__d[5], WERTE1__d[5], WERTE0__d[5]} = - FB_AD[23:16]; - assign {WERTE7_6_d_1, WERTE6_6_d_1, WERTE5_6_d_1, WERTE4_6_d_1, - WERTE3_6_d_1, WERTE2_6_d_1, WERTE1_6_d_1, WERTE0_6_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_7_d_1, WERTE6_7_d_1, WERTE5_7_d_1, WERTE4_7_d_1, - WERTE3_7_d_1, WERTE2_7_d_1, WERTE1_7_d_1, WERTE0_7_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_8_d_1, WERTE6_8_d_1, WERTE5_8_d_1, WERTE4_8_d_1, - WERTE3_8_d_1, WERTE2_8_d_1, WERTE1_8_d_1, WERTE0_8_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_9_d_1, WERTE6_9_d_1, WERTE5_9_d_1, WERTE4_9_d_1, - WERTE3_9_d_1, WERTE2_9_d_1, WERTE1_9_d_1, WERTE0_9_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[10], WERTE6__d[10], WERTE5__d[10], WERTE4__d[10], - WERTE3__d[10], WERTE2__d[10], WERTE1__d[10], WERTE0__d[10]} = - FB_AD[23:16]; - assign {WERTE7__d[11], WERTE6__d[11], WERTE5__d[11], WERTE4__d[11], - WERTE3__d[11], WERTE2_11_d_1, WERTE1_11_d_1, WERTE0_11_d_1} = - FB_AD[23:16]; - assign {WERTE7__d[12], WERTE6__d[12], WERTE5__d[12], WERTE4__d[12], - WERTE3__d[12], WERTE2__d[12], WERTE1__d[12], WERTE0__d[12]} = - FB_AD[23:16]; - assign {WERTE7_13_d_1, WERTE6__d[13], WERTE5__d[13], WERTE4__d[13], - WERTE3__d[13], WERTE2__d[13], WERTE1__d[13], WERTE0_13_d_1} = - FB_AD[23:16]; - assign {WERTE7__d[14], WERTE6__d[14], WERTE5__d[14], WERTE4__d[14], - WERTE3__d[14], WERTE2__d[14], WERTE1__d[14], WERTE0__d[14]} = - FB_AD[23:16]; - assign {WERTE7__d[15], WERTE6__d[15], WERTE5__d[15], WERTE4__d[15], - WERTE3__d[15], WERTE2__d[15], WERTE1__d[15], WERTE0__d[15]} = - FB_AD[23:16]; - assign {WERTE7__d[16], WERTE6__d[16], WERTE5__d[16], WERTE4__d[16], - WERTE3__d[16], WERTE2__d[16], WERTE1__d[16], WERTE0__d[16]} = - FB_AD[23:16]; - assign {WERTE7__d[17], WERTE6__d[17], WERTE5__d[17], WERTE4__d[17], - WERTE3__d[17], WERTE2__d[17], WERTE1__d[17], WERTE0__d[17]} = - FB_AD[23:16]; - assign {WERTE7__d[18], WERTE6__d[18], WERTE5__d[18], WERTE4__d[18], - WERTE3__d[18], WERTE2__d[18], WERTE1__d[18], WERTE0__d[18]} = - FB_AD[23:16]; - assign {WERTE7__d[19], WERTE6__d[19], WERTE5__d[19], WERTE4__d[19], - WERTE3__d[19], WERTE2__d[19], WERTE1__d[19], WERTE0__d[19]} = - FB_AD[23:16]; - assign {WERTE7__d[20], WERTE6__d[20], WERTE5__d[20], WERTE4__d[20], - WERTE3__d[20], WERTE2__d[20], WERTE1__d[20], WERTE0__d[20]} = - FB_AD[23:16]; - assign {WERTE7__d[21], WERTE6__d[21], WERTE5__d[21], WERTE4__d[21], - WERTE3__d[21], WERTE2__d[21], WERTE1__d[21], WERTE0__d[21]} = - FB_AD[23:16]; - assign {WERTE7__d[22], WERTE6__d[22], WERTE5__d[22], WERTE4__d[22], - WERTE3__d[22], WERTE2__d[22], WERTE1__d[22], WERTE0__d[22]} = - FB_AD[23:16]; - assign {WERTE7__d[23], WERTE6__d[23], WERTE5__d[23], WERTE4__d[23], - WERTE3__d[23], WERTE2__d[23], WERTE1__d[23], WERTE0__d[23]} = - FB_AD[23:16]; - assign {WERTE7__d[24], WERTE6__d[24], WERTE5__d[24], WERTE4__d[24], - WERTE3__d[24], WERTE2__d[24], WERTE1__d[24], WERTE0__d[24]} = - FB_AD[23:16]; - assign {WERTE7__d[25], WERTE6__d[25], WERTE5__d[25], WERTE4__d[25], - WERTE3__d[25], WERTE2__d[25], WERTE1__d[25], WERTE0__d[25]} = - FB_AD[23:16]; - assign {WERTE7__d[26], WERTE6__d[26], WERTE5__d[26], WERTE4__d[26], - WERTE3__d[26], WERTE2__d[26], WERTE1__d[26], WERTE0__d[26]} = - FB_AD[23:16]; - assign {WERTE7__d[27], WERTE6__d[27], WERTE5__d[27], WERTE4__d[27], - WERTE3__d[27], WERTE2__d[27], WERTE1__d[27], WERTE0__d[27]} = - FB_AD[23:16]; - assign {WERTE7__d[28], WERTE6__d[28], WERTE5__d[28], WERTE4__d[28], - WERTE3__d[28], WERTE2__d[28], WERTE1__d[28], WERTE0__d[28]} = - FB_AD[23:16]; - assign {WERTE7__d[29], WERTE6__d[29], WERTE5__d[29], WERTE4__d[29], - WERTE3__d[29], WERTE2__d[29], WERTE1__d[29], WERTE0__d[29]} = - FB_AD[23:16]; - assign {WERTE7__d[30], WERTE6__d[30], WERTE5__d[30], WERTE4__d[30], - WERTE3__d[30], WERTE2__d[30], WERTE1__d[30], WERTE0__d[30]} = - FB_AD[23:16]; - assign {WERTE7__d[31], WERTE6__d[31], WERTE5__d[31], WERTE4__d[31], - WERTE3__d[31], WERTE2__d[31], WERTE1__d[31], WERTE0__d[31]} = - FB_AD[23:16]; - assign {WERTE7__d[32], WERTE6__d[32], WERTE5__d[32], WERTE4__d[32], - WERTE3__d[32], WERTE2__d[32], WERTE1__d[32], WERTE0__d[32]} = - FB_AD[23:16]; - assign {WERTE7__d[33], WERTE6__d[33], WERTE5__d[33], WERTE4__d[33], - WERTE3__d[33], WERTE2__d[33], WERTE1__d[33], WERTE0__d[33]} = - FB_AD[23:16]; - assign {WERTE7__d[34], WERTE6__d[34], WERTE5__d[34], WERTE4__d[34], - WERTE3__d[34], WERTE2__d[34], WERTE1__d[34], WERTE0__d[34]} = - FB_AD[23:16]; - assign {WERTE7__d[35], WERTE6__d[35], WERTE5__d[35], WERTE4__d[35], - WERTE3__d[35], WERTE2__d[35], WERTE1__d[35], WERTE0__d[35]} = - FB_AD[23:16]; - assign {WERTE7__d[36], WERTE6__d[36], WERTE5__d[36], WERTE4__d[36], - WERTE3__d[36], WERTE2__d[36], WERTE1__d[36], WERTE0__d[36]} = - FB_AD[23:16]; - assign {WERTE7__d[37], WERTE6__d[37], WERTE5__d[37], WERTE4__d[37], - WERTE3__d[37], WERTE2__d[37], WERTE1__d[37], WERTE0__d[37]} = - FB_AD[23:16]; - assign {WERTE7__d[38], WERTE6__d[38], WERTE5__d[38], WERTE4__d[38], - WERTE3__d[38], WERTE2__d[38], WERTE1__d[38], WERTE0__d[38]} = - FB_AD[23:16]; - assign {WERTE7__d[39], WERTE6__d[39], WERTE5__d[39], WERTE4__d[39], - WERTE3__d[39], WERTE2__d[39], WERTE1__d[39], WERTE0__d[39]} = - FB_AD[23:16]; - assign {WERTE7__d[40], WERTE6__d[40], WERTE5__d[40], WERTE4__d[40], - WERTE3__d[40], WERTE2__d[40], WERTE1__d[40], WERTE0__d[40]} = - FB_AD[23:16]; - assign {WERTE7__d[41], WERTE6__d[41], WERTE5__d[41], WERTE4__d[41], - WERTE3__d[41], WERTE2__d[41], WERTE1__d[41], WERTE0__d[41]} = - FB_AD[23:16]; - assign {WERTE7__d[42], WERTE6__d[42], WERTE5__d[42], WERTE4__d[42], - WERTE3__d[42], WERTE2__d[42], WERTE1__d[42], WERTE0__d[42]} = - FB_AD[23:16]; - assign {WERTE7__d[43], WERTE6__d[43], WERTE5__d[43], WERTE4__d[43], - WERTE3__d[43], WERTE2__d[43], WERTE1__d[43], WERTE0__d[43]} = - FB_AD[23:16]; - assign {WERTE7__d[44], WERTE6__d[44], WERTE5__d[44], WERTE4__d[44], - WERTE3__d[44], WERTE2__d[44], WERTE1__d[44], WERTE0__d[44]} = - FB_AD[23:16]; - assign {WERTE7__d[45], WERTE6__d[45], WERTE5__d[45], WERTE4__d[45], - WERTE3__d[45], WERTE2__d[45], WERTE1__d[45], WERTE0__d[45]} = - FB_AD[23:16]; - assign {WERTE7__d[46], WERTE6__d[46], WERTE5__d[46], WERTE4__d[46], - WERTE3__d[46], WERTE2__d[46], WERTE1__d[46], WERTE0__d[46]} = - FB_AD[23:16]; - assign {WERTE7__d[47], WERTE6__d[47], WERTE5__d[47], WERTE4__d[47], - WERTE3__d[47], WERTE2__d[47], WERTE1__d[47], WERTE0__d[47]} = - FB_AD[23:16]; - assign {WERTE7__d[48], WERTE6__d[48], WERTE5__d[48], WERTE4__d[48], - WERTE3__d[48], WERTE2__d[48], WERTE1__d[48], WERTE0__d[48]} = - FB_AD[23:16]; - assign {WERTE7__d[49], WERTE6__d[49], WERTE5__d[49], WERTE4__d[49], - WERTE3__d[49], WERTE2__d[49], WERTE1__d[49], WERTE0__d[49]} = - FB_AD[23:16]; - assign {WERTE7__d[50], WERTE6__d[50], WERTE5__d[50], WERTE4__d[50], - WERTE3__d[50], WERTE2__d[50], WERTE1__d[50], WERTE0__d[50]} = - FB_AD[23:16]; - assign {WERTE7__d[51], WERTE6__d[51], WERTE5__d[51], WERTE4__d[51], - WERTE3__d[51], WERTE2__d[51], WERTE1__d[51], WERTE0__d[51]} = - FB_AD[23:16]; - assign {WERTE7__d[52], WERTE6__d[52], WERTE5__d[52], WERTE4__d[52], - WERTE3__d[52], WERTE2__d[52], WERTE1__d[52], WERTE0__d[52]} = - FB_AD[23:16]; - assign {WERTE7__d[53], WERTE6__d[53], WERTE5__d[53], WERTE4__d[53], - WERTE3__d[53], WERTE2__d[53], WERTE1__d[53], WERTE0__d[53]} = - FB_AD[23:16]; - assign {WERTE7__d[54], WERTE6__d[54], WERTE5__d[54], WERTE4__d[54], - WERTE3__d[54], WERTE2__d[54], WERTE1__d[54], WERTE0__d[54]} = - FB_AD[23:16]; - assign {WERTE7__d[55], WERTE6__d[55], WERTE5__d[55], WERTE4__d[55], - WERTE3__d[55], WERTE2__d[55], WERTE1__d[55], WERTE0__d[55]} = - FB_AD[23:16]; - assign {WERTE7__d[56], WERTE6__d[56], WERTE5__d[56], WERTE4__d[56], - WERTE3__d[56], WERTE2__d[56], WERTE1__d[56], WERTE0__d[56]} = - FB_AD[23:16]; - assign {WERTE7__d[57], WERTE6__d[57], WERTE5__d[57], WERTE4__d[57], - WERTE3__d[57], WERTE2__d[57], WERTE1__d[57], WERTE0__d[57]} = - FB_AD[23:16]; - assign {WERTE7__d[58], WERTE6__d[58], WERTE5__d[58], WERTE4__d[58], - WERTE3__d[58], WERTE2__d[58], WERTE1__d[58], WERTE0__d[58]} = - FB_AD[23:16]; - assign {WERTE7__d[59], WERTE6__d[59], WERTE5__d[59], WERTE4__d[59], - WERTE3__d[59], WERTE2__d[59], WERTE1__d[59], WERTE0__d[59]} = - FB_AD[23:16]; - assign {WERTE7__d[60], WERTE6__d[60], WERTE5__d[60], WERTE4__d[60], - WERTE3__d[60], WERTE2__d[60], WERTE1__d[60], WERTE0__d[60]} = - FB_AD[23:16]; - assign {WERTE7__d[61], WERTE6__d[61], WERTE5__d[61], WERTE4__d[61], - WERTE3__d[61], WERTE2__d[61], WERTE1__d[61], WERTE0__d[61]} = - FB_AD[23:16]; - assign {WERTE7__d[62], WERTE6__d[62], WERTE5__d[62], WERTE4__d[62], - WERTE3__d[62], WERTE2__d[62], WERTE1__d[62], WERTE0__d[62]} = - FB_AD[23:16]; - assign {WERTE7__d[63], WERTE6__d[63], WERTE5__d[63], WERTE4__d[63], - WERTE3__d[63], WERTE2__d[63], WERTE1__d[63], WERTE0__d[63]} = - FB_AD[23:16]; - assign {WERTE7_0_ena_1, WERTE6_0_ena_1, WERTE5_0_ena_1, WERTE4_0_ena_1, - WERTE3_0_ena_1, WERTE2_0_ena_1, WERTE1_0_ena_1, WERTE0_0_ena_1} = - {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_1_ena_ctrl = RTC_ADR_q == 6'b00_0001 & UHR_DS & (!nFB_WR); - assign {WERTE7_2_ena_1, WERTE6_2_ena_1, WERTE5_2_ena_1, WERTE4_2_ena_1, - WERTE3_2_ena_1, WERTE2_2_ena_1, WERTE1_2_ena_1, WERTE0_2_ena_1} = - {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_3_ena_ctrl = RTC_ADR_q == 6'b00_0011 & UHR_DS & (!nFB_WR); - assign {WERTE7_4_ena_1, WERTE6_4_ena_1, WERTE5_4_ena_1, WERTE4_4_ena_1, - WERTE3_4_ena_1, WERTE2_4_ena_1, WERTE1_4_ena_1, WERTE0_4_ena_1} = - {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_5_ena_ctrl = RTC_ADR_q == 6'b00_0101 & UHR_DS & (!nFB_WR); - assign {WERTE7_6_ena_1, WERTE6_6_ena_1, WERTE5_6_ena_1, WERTE4_6_ena_1, - WERTE3_6_ena_1, WERTE2_6_ena_1, WERTE1_6_ena_1, WERTE0_6_ena_1} = - {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_7_ena_1, WERTE6_7_ena_1, WERTE5_7_ena_1, WERTE4_7_ena_1, - WERTE3_7_ena_1, WERTE2_7_ena_1, WERTE1_7_ena_1, WERTE0_7_ena_1} = - {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_8_ena_1, WERTE6_8_ena_1, WERTE5_8_ena_1, WERTE4_8_ena_1, - WERTE3_8_ena_1, WERTE2_8_ena_1, WERTE1_8_ena_1, WERTE0_8_ena_1} = - {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_9_ena_1, WERTE6_9_ena_1, WERTE5_9_ena_1, WERTE4_9_ena_1, - WERTE3_9_ena_1, WERTE2_9_ena_1, WERTE1_9_ena_1, WERTE0_9_ena_1} = - {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_10_ena_ctrl = RTC_ADR_q == 6'b00_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_11_ena_ctrl = RTC_ADR_q == 6'b00_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_12_ena_ctrl = RTC_ADR_q == 6'b00_1100 & UHR_DS & (!nFB_WR); - assign {WERTE7_13_ena, WERTE6_13_ena, WERTE5_13_ena, WERTE4_13_ena, - WERTE3_13_ena, WERTE2_13_ena, WERTE1_13_ena, WERTE0_13_ena_1} = - {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_14_ena_ctrl = RTC_ADR_q == 6'b00_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_15_ena_ctrl = RTC_ADR_q == 6'b00_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_16_ena_ctrl = RTC_ADR_q == 6'b01_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_17_ena_ctrl = RTC_ADR_q == 6'b01_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_18_ena_ctrl = RTC_ADR_q == 6'b01_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_19_ena_ctrl = RTC_ADR_q == 6'b01_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_20_ena_ctrl = RTC_ADR_q == 6'b01_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_21_ena_ctrl = RTC_ADR_q == 6'b01_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_22_ena_ctrl = RTC_ADR_q == 6'b01_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_23_ena_ctrl = RTC_ADR_q == 6'b01_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_24_ena_ctrl = RTC_ADR_q == 6'b01_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_25_ena_ctrl = RTC_ADR_q == 6'b01_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_26_ena_ctrl = RTC_ADR_q == 6'b01_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_27_ena_ctrl = RTC_ADR_q == 6'b01_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_28_ena_ctrl = RTC_ADR_q == 6'b01_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_29_ena_ctrl = RTC_ADR_q == 6'b01_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_30_ena_ctrl = RTC_ADR_q == 6'b01_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_31_ena_ctrl = RTC_ADR_q == 6'b01_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_32_ena_ctrl = RTC_ADR_q == 6'b10_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_33_ena_ctrl = RTC_ADR_q == 6'b10_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_34_ena_ctrl = RTC_ADR_q == 6'b10_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_35_ena_ctrl = RTC_ADR_q == 6'b10_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_36_ena_ctrl = RTC_ADR_q == 6'b10_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_37_ena_ctrl = RTC_ADR_q == 6'b10_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_38_ena_ctrl = RTC_ADR_q == 6'b10_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_39_ena_ctrl = RTC_ADR_q == 6'b10_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_40_ena_ctrl = RTC_ADR_q == 6'b10_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_41_ena_ctrl = RTC_ADR_q == 6'b10_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_42_ena_ctrl = RTC_ADR_q == 6'b10_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_43_ena_ctrl = RTC_ADR_q == 6'b10_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_44_ena_ctrl = RTC_ADR_q == 6'b10_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_45_ena_ctrl = RTC_ADR_q == 6'b10_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_46_ena_ctrl = RTC_ADR_q == 6'b10_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_47_ena_ctrl = RTC_ADR_q == 6'b10_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_48_ena_ctrl = RTC_ADR_q == 6'b11_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_49_ena_ctrl = RTC_ADR_q == 6'b11_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_50_ena_ctrl = RTC_ADR_q == 6'b11_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_51_ena_ctrl = RTC_ADR_q == 6'b11_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_52_ena_ctrl = RTC_ADR_q == 6'b11_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_53_ena_ctrl = RTC_ADR_q == 6'b11_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_54_ena_ctrl = RTC_ADR_q == 6'b11_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_55_ena_ctrl = RTC_ADR_q == 6'b11_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_56_ena_ctrl = RTC_ADR_q == 6'b11_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_57_ena_ctrl = RTC_ADR_q == 6'b11_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_58_ena_ctrl = RTC_ADR_q == 6'b11_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_59_ena_ctrl = RTC_ADR_q == 6'b11_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_60_ena_ctrl = RTC_ADR_q == 6'b11_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_61_ena_ctrl = RTC_ADR_q == 6'b11_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_62_ena_ctrl = RTC_ADR_q == 6'b11_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_63_ena_ctrl = RTC_ADR_q == 6'b11_1111 & UHR_DS & (!nFB_WR); - assign PIC_INT_SYNC0_clk_ctrl = MAIN_CLK; - assign PIC_INT_SYNC_d[0] = PIC_INT; - assign PIC_INT_SYNC_d[1] = PIC_INT_SYNC_q[0]; - assign PIC_INT_SYNC_d[2] = (!PIC_INT_SYNC_q[1]) & PIC_INT_SYNC_q[0]; - assign UPDATE_ON_1 = !WERTE7__q[11]; - -// KEIN UIP - assign WERTE6_10_clrn = gnd; - -// UPDATE ON OFF - assign UPDATE_ON_2 = !WERTE7__q[11]; - -// IMMER BINARY - assign WERTE2_11_d_2 = vcc; - -// IMMER 24H FORMAT - assign WERTE1_11_d_2 = vcc; - -// IMMER SOMMERZEITKORREKTUR - assign WERTE0_11_d_2 = vcc; - -// IMMER RICHTIG - assign WERTE7_13_d_2 = vcc; - -// SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) -// LETZTER SONNTAG IM APRIL - assign SOMMERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == - 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], - WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} - == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_0100 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - > 8'b0001_0111; - assign WERTE0_13_d_2 = SOMMERZEIT; - assign WERTE0_13_ena_2 = INC_STD & (SOMMERZEIT | WINTERZEIT); - -// LETZTER SONNTAG IM OKTOBER - assign WINTERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == - 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], - WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} - == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1010 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - > 8'b0001_1000 & WERTE0__q[13]; - -// ACHTELSEKUNDEN - assign ACHTELSEKUNDEN0_clk_ctrl = MAIN_CLK; - assign ACHTELSEKUNDEN_d = ACHTELSEKUNDEN_q + 3'b001; - assign ACHTELSEKUNDEN0_ena_ctrl = PIC_INT_SYNC_q[2] & UPDATE_ON; - -// SEKUNDEN - assign INC_SEC = ACHTELSEKUNDEN_q == 3'b111 & PIC_INT_SYNC_q[2] & UPDATE_ON; - -// SEKUNDEN ZÄHLEN BIS 59 - assign {WERTE7_0_d_2, WERTE6_0_d_2, WERTE5_0_d_2, WERTE4_0_d_2, - WERTE3_0_d_2, WERTE2_0_d_2, WERTE1_0_d_2, WERTE0_0_d_2} = - ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], - WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + - 8'b0000_0001) & {8{{WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], - WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} - != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_0_ena_2, WERTE6_0_ena_2, WERTE5_0_ena_2, WERTE4_0_ena_2, - WERTE3_0_ena_2, WERTE2_0_ena_2, WERTE1_0_ena_2, WERTE0_0_ena_2} = - {8{INC_SEC}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// MINUTEN - assign INC_MIN = INC_SEC & {WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], - WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} - == 8'b0011_1011; - -// MINUTEN ZÄHLEN BIS 59 - assign {WERTE7_2_d_2, WERTE6_2_d_2, WERTE5_2_d_2, WERTE4_2_d_2, - WERTE3_2_d_2, WERTE2_2_d_2, WERTE1_2_d_2, WERTE0_2_d_2} = - ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], - WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + - 8'b0000_0001) & {8{{WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_2_ena_2, WERTE6_2_ena_2, WERTE5_2_ena_2, WERTE4_2_ena_2, - WERTE3_2_ena_2, WERTE2_2_ena_2, WERTE1_2_ena_2, WERTE0_2_ena_2} = - {8{INC_MIN}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// STUNDEN - assign INC_STD = INC_MIN & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - == 8'b0011_1011; - -// STUNDEN ZÄHLEN BIS 23 - assign {WERTE7_4_d_2, WERTE6_4_d_2, WERTE5_4_d_2, WERTE4_4_d_2, - WERTE3_4_d_2, WERTE2_4_d_2, WERTE1_4_d_2, WERTE0_4_d_2} = - (({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], - WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + - 8'b0000_0001) + (8'b0000_0001 & {8{SOMMERZEIT}})) & {8{{WERTE7__q[4], - WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], - WERTE1__q[4], WERTE0__q[4]} != 8'b0001_0111}} & (~({8{RTC_ADR_q == - 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); - -// EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT - assign {WERTE7_4_ena_2, WERTE6_4_ena_2, WERTE5_4_ena_2, WERTE4_4_ena_2, - WERTE3_4_ena_2, WERTE2_4_ena_2, WERTE1_4_ena_2, WERTE0_4_ena_2} = - {8{INC_STD}} & (~({8{WINTERZEIT}} & {8{WERTE0__q[12]}})) & - (~({8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); - -// WOCHENTAG UND TAG - assign INC_TAG = INC_STD & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - == 8'b0001_0111; - -// WOCHENTAG ZÄHLEN BIS 7 -// DANN BEI 1 WEITER - assign {WERTE7_6_d_2, WERTE6_6_d_2, WERTE5_6_d_2, WERTE4_6_d_2, - WERTE3_6_d_2, WERTE2_6_d_2, WERTE1_6_d_2, WERTE0_6_d_2} = - (({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + - 8'b0000_0001) & {8{{WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], - WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} - != 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & - {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[6], WERTE6__q[6], - WERTE5__q[6], WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], - WERTE0__q[6]} == 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & - {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_6_ena_2, WERTE6_6_ena_2, WERTE5_6_ena_2, WERTE4_6_ena_2, - WERTE3_6_ena_2, WERTE2_6_ena_2, WERTE1_6_ena_2, WERTE0_6_ena_2} = - {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign ANZAHL_TAGE_DES_MONATS = (8'b0001_1111 & ({8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0001}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0011}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0101}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0111}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1000}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1010}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1100}})) | (8'b0001_1110 & - ({8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} == - 8'b0000_0100}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_0110}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1001}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1011}})) | (8'b0001_1101 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} == - 2'b00}}) | (8'b0001_1100 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} != - 2'b00}}); - -// TAG ZÄHLEN BIS MONATSENDE -// DANN BEI 1 WEITER - assign {WERTE7_7_d_2, WERTE6_7_d_2, WERTE5_7_d_2, WERTE4_7_d_2, - WERTE3_7_d_2, WERTE2_7_d_2, WERTE1_7_d_2, WERTE0_7_d_2} = - (({WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], - WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + - 8'b0000_0001) & {8{{WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - != ANZAHL_TAGE_DES_MONATS}} & (~({8{RTC_ADR_q == 6'b00_0111}} & - {8{UHR_DS}} & {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[7], - WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], - WERTE1__q[7], WERTE0__q[7]} == ANZAHL_TAGE_DES_MONATS}} & - (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_7_ena_2, WERTE6_7_ena_2, WERTE5_7_ena_2, WERTE4_7_ena_2, - WERTE3_7_ena_2, WERTE2_7_ena_2, WERTE1_7_ena_2, WERTE0_7_ena_2} = - {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// MONATE - assign INC_MONAT = INC_TAG & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - == ANZAHL_TAGE_DES_MONATS; - -// MONATE ZÄHLEN BIS 12 -// DANN BEI 1 WEITER - assign {WERTE7_8_d_2, WERTE6_8_d_2, WERTE5_8_d_2, WERTE4_8_d_2, - WERTE3_8_d_2, WERTE2_8_d_2, WERTE1_8_d_2, WERTE0_8_d_2} = - (({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + - 8'b0000_0001) & {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - != 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & - {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & - {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_8_ena_2, WERTE6_8_ena_2, WERTE5_8_ena_2, WERTE4_8_ena_2, - WERTE3_8_ena_2, WERTE2_8_ena_2, WERTE1_8_ena_2, WERTE0_8_ena_2} = - {8{INC_MONAT}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// JAHR - assign INC_JAHR = INC_MONAT & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1100; - -// JAHRE ZÄHLEN BIS 99 - assign {WERTE7_9_d_2, WERTE6_9_d_2, WERTE5_9_d_2, WERTE4_9_d_2, - WERTE3_9_d_2, WERTE2_9_d_2, WERTE1_9_d_2, WERTE0_9_d_2} = - ({WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], WERTE4__q[9], - WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + - 8'b0000_0001) & {8{{WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], - WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} - != 8'b0110_0011}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_9_ena_2, WERTE6_9_ena_2, WERTE5_9_ena_2, WERTE4_9_ena_2, - WERTE3_9_ena_2, WERTE2_9_ena_2, WERTE1_9_ena_2, WERTE0_9_ena_2} = - {8{INC_JAHR}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// TRISTATE OUTPUT - assign u0_data = ({8{INT_CTR_CS}} & INT_CTR_q[31:24]) | ({8{INT_ENA_CS}} & - INT_ENA_q[31:24]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[31:24]) | - ({8{INT_CLEAR_CS}} & INT_IN[31:24]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[31:24]); - assign u0_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[31:24] = u0_tridata; - assign u1_data = ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], - WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} & {8{RTC_ADR_q - == 6'b00_0000}} & {8{UHR_DS}}) | ({WERTE7__q[1], WERTE6__q[1], - WERTE5__q[1], WERTE4__q[1], WERTE3__q[1], WERTE2__q[1], WERTE1__q[1], - WERTE0__q[1]} & {8{RTC_ADR_q == 6'b00_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], - WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} & {8{RTC_ADR_q - == 6'b00_0010}} & {8{UHR_DS}}) | ({WERTE7__q[3], WERTE6__q[3], - WERTE5__q[3], WERTE4__q[3], WERTE3__q[3], WERTE2__q[3], WERTE1__q[3], - WERTE0__q[3]} & {8{RTC_ADR_q == 6'b00_0011}} & {8{UHR_DS}}) | - ({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], - WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} & {8{RTC_ADR_q - == 6'b00_0100}} & {8{UHR_DS}}) | ({WERTE7__q[5], WERTE6__q[5], - WERTE5__q[5], WERTE4__q[5], WERTE3__q[5], WERTE2__q[5], WERTE1__q[5], - WERTE0__q[5]} & {8{RTC_ADR_q == 6'b00_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} & {8{RTC_ADR_q - == 6'b00_0110}} & {8{UHR_DS}}) | ({WERTE7__q[7], WERTE6__q[7], - WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], - WERTE0__q[7]} & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}}) | - ({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} & {8{RTC_ADR_q - == 6'b00_1000}} & {8{UHR_DS}}) | ({WERTE7__q[9], WERTE6__q[9], - WERTE5__q[9], WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], - WERTE0__q[9]} & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[10], WERTE6__q[10], WERTE5__q[10], WERTE4__q[10], - WERTE3__q[10], WERTE2__q[10], WERTE1__q[10], WERTE0__q[10]} & - {8{RTC_ADR_q == 6'b00_1010}} & {8{UHR_DS}}) | ({WERTE7__q[11], - WERTE6__q[11], WERTE5__q[11], WERTE4__q[11], WERTE3__q[11], - WERTE2__q[11], WERTE1__q[11], WERTE0__q[11]} & {8{RTC_ADR_q == - 6'b00_1011}} & {8{UHR_DS}}) | ({WERTE7__q[12], WERTE6__q[12], - WERTE5__q[12], WERTE4__q[12], WERTE3__q[12], WERTE2__q[12], - WERTE1__q[12], WERTE0__q[12]} & {8{RTC_ADR_q == 6'b00_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[13], WERTE6__q[13], WERTE5__q[13], - WERTE4__q[13], WERTE3__q[13], WERTE2__q[13], WERTE1__q[13], - WERTE0__q[13]} & {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[14], WERTE6__q[14], WERTE5__q[14], WERTE4__q[14], - WERTE3__q[14], WERTE2__q[14], WERTE1__q[14], WERTE0__q[14]} & - {8{RTC_ADR_q == 6'b00_1110}} & {8{UHR_DS}}) | ({WERTE7__q[15], - WERTE6__q[15], WERTE5__q[15], WERTE4__q[15], WERTE3__q[15], - WERTE2__q[15], WERTE1__q[15], WERTE0__q[15]} & {8{RTC_ADR_q == - 6'b00_1111}} & {8{UHR_DS}}) | ({WERTE7__q[16], WERTE6__q[16], - WERTE5__q[16], WERTE4__q[16], WERTE3__q[16], WERTE2__q[16], - WERTE1__q[16], WERTE0__q[16]} & {8{RTC_ADR_q == 6'b01_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[17], WERTE6__q[17], WERTE5__q[17], - WERTE4__q[17], WERTE3__q[17], WERTE2__q[17], WERTE1__q[17], - WERTE0__q[17]} & {8{RTC_ADR_q == 6'b01_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[18], WERTE6__q[18], WERTE5__q[18], WERTE4__q[18], - WERTE3__q[18], WERTE2__q[18], WERTE1__q[18], WERTE0__q[18]} & - {8{RTC_ADR_q == 6'b01_0010}} & {8{UHR_DS}}) | ({WERTE7__q[19], - WERTE6__q[19], WERTE5__q[19], WERTE4__q[19], WERTE3__q[19], - WERTE2__q[19], WERTE1__q[19], WERTE0__q[19]} & {8{RTC_ADR_q == - 6'b01_0011}} & {8{UHR_DS}}) | ({WERTE7__q[20], WERTE6__q[20], - WERTE5__q[20], WERTE4__q[20], WERTE3__q[20], WERTE2__q[20], - WERTE1__q[20], WERTE0__q[20]} & {8{RTC_ADR_q == 6'b01_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[21], WERTE6__q[21], WERTE5__q[21], - WERTE4__q[21], WERTE3__q[21], WERTE2__q[21], WERTE1__q[21], - WERTE0__q[21]} & {8{RTC_ADR_q == 6'b01_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[22], WERTE6__q[22], WERTE5__q[22], WERTE4__q[22], - WERTE3__q[22], WERTE2__q[22], WERTE1__q[22], WERTE0__q[22]} & - {8{RTC_ADR_q == 6'b01_0110}} & {8{UHR_DS}}) | ({WERTE7__q[23], - WERTE6__q[23], WERTE5__q[23], WERTE4__q[23], WERTE3__q[23], - WERTE2__q[23], WERTE1__q[23], WERTE0__q[23]} & {8{RTC_ADR_q == - 6'b01_0111}} & {8{UHR_DS}}) | ({WERTE7__q[24], WERTE6__q[24], - WERTE5__q[24], WERTE4__q[24], WERTE3__q[24], WERTE2__q[24], - WERTE1__q[24], WERTE0__q[24]} & {8{RTC_ADR_q == 6'b01_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[25], WERTE6__q[25], WERTE5__q[25], - WERTE4__q[25], WERTE3__q[25], WERTE2__q[25], WERTE1__q[25], - WERTE0__q[25]} & {8{RTC_ADR_q == 6'b01_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[26], WERTE6__q[26], WERTE5__q[26], WERTE4__q[26], - WERTE3__q[26], WERTE2__q[26], WERTE1__q[26], WERTE0__q[26]} & - {8{RTC_ADR_q == 6'b01_1010}} & {8{UHR_DS}}) | ({WERTE7__q[27], - WERTE6__q[27], WERTE5__q[27], WERTE4__q[27], WERTE3__q[27], - WERTE2__q[27], WERTE1__q[27], WERTE0__q[27]} & {8{RTC_ADR_q == - 6'b01_1011}} & {8{UHR_DS}}) | ({WERTE7__q[28], WERTE6__q[28], - WERTE5__q[28], WERTE4__q[28], WERTE3__q[28], WERTE2__q[28], - WERTE1__q[28], WERTE0__q[28]} & {8{RTC_ADR_q == 6'b01_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[29], WERTE6__q[29], WERTE5__q[29], - WERTE4__q[29], WERTE3__q[29], WERTE2__q[29], WERTE1__q[29], - WERTE0__q[29]} & {8{RTC_ADR_q == 6'b01_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[30], WERTE6__q[30], WERTE5__q[30], WERTE4__q[30], - WERTE3__q[30], WERTE2__q[30], WERTE1__q[30], WERTE0__q[30]} & - {8{RTC_ADR_q == 6'b01_1110}} & {8{UHR_DS}}) | ({WERTE7__q[31], - WERTE6__q[31], WERTE5__q[31], WERTE4__q[31], WERTE3__q[31], - WERTE2__q[31], WERTE1__q[31], WERTE0__q[31]} & {8{RTC_ADR_q == - 6'b01_1111}} & {8{UHR_DS}}) | ({WERTE7__q[32], WERTE6__q[32], - WERTE5__q[32], WERTE4__q[32], WERTE3__q[32], WERTE2__q[32], - WERTE1__q[32], WERTE0__q[32]} & {8{RTC_ADR_q == 6'b10_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[33], WERTE6__q[33], WERTE5__q[33], - WERTE4__q[33], WERTE3__q[33], WERTE2__q[33], WERTE1__q[33], - WERTE0__q[33]} & {8{RTC_ADR_q == 6'b10_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[34], WERTE6__q[34], WERTE5__q[34], WERTE4__q[34], - WERTE3__q[34], WERTE2__q[34], WERTE1__q[34], WERTE0__q[34]} & - {8{RTC_ADR_q == 6'b10_0010}} & {8{UHR_DS}}) | ({WERTE7__q[35], - WERTE6__q[35], WERTE5__q[35], WERTE4__q[35], WERTE3__q[35], - WERTE2__q[35], WERTE1__q[35], WERTE0__q[35]} & {8{RTC_ADR_q == - 6'b10_0011}} & {8{UHR_DS}}) | ({WERTE7__q[36], WERTE6__q[36], - WERTE5__q[36], WERTE4__q[36], WERTE3__q[36], WERTE2__q[36], - WERTE1__q[36], WERTE0__q[36]} & {8{RTC_ADR_q == 6'b10_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[37], WERTE6__q[37], WERTE5__q[37], - WERTE4__q[37], WERTE3__q[37], WERTE2__q[37], WERTE1__q[37], - WERTE0__q[37]} & {8{RTC_ADR_q == 6'b10_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[38], WERTE6__q[38], WERTE5__q[38], WERTE4__q[38], - WERTE3__q[38], WERTE2__q[38], WERTE1__q[38], WERTE0__q[38]} & - {8{RTC_ADR_q == 6'b10_0110}} & {8{UHR_DS}}) | ({WERTE7__q[39], - WERTE6__q[39], WERTE5__q[39], WERTE4__q[39], WERTE3__q[39], - WERTE2__q[39], WERTE1__q[39], WERTE0__q[39]} & {8{RTC_ADR_q == - 6'b10_0111}} & {8{UHR_DS}}) | ({WERTE7__q[40], WERTE6__q[40], - WERTE5__q[40], WERTE4__q[40], WERTE3__q[40], WERTE2__q[40], - WERTE1__q[40], WERTE0__q[40]} & {8{RTC_ADR_q == 6'b10_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[41], WERTE6__q[41], WERTE5__q[41], - WERTE4__q[41], WERTE3__q[41], WERTE2__q[41], WERTE1__q[41], - WERTE0__q[41]} & {8{RTC_ADR_q == 6'b10_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[42], WERTE6__q[42], WERTE5__q[42], WERTE4__q[42], - WERTE3__q[42], WERTE2__q[42], WERTE1__q[42], WERTE0__q[42]} & - {8{RTC_ADR_q == 6'b10_1010}} & {8{UHR_DS}}) | ({WERTE7__q[43], - WERTE6__q[43], WERTE5__q[43], WERTE4__q[43], WERTE3__q[43], - WERTE2__q[43], WERTE1__q[43], WERTE0__q[43]} & {8{RTC_ADR_q == - 6'b10_1011}} & {8{UHR_DS}}) | ({WERTE7__q[44], WERTE6__q[44], - WERTE5__q[44], WERTE4__q[44], WERTE3__q[44], WERTE2__q[44], - WERTE1__q[44], WERTE0__q[44]} & {8{RTC_ADR_q == 6'b10_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[45], WERTE6__q[45], WERTE5__q[45], - WERTE4__q[45], WERTE3__q[45], WERTE2__q[45], WERTE1__q[45], - WERTE0__q[45]} & {8{RTC_ADR_q == 6'b10_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[46], WERTE6__q[46], WERTE5__q[46], WERTE4__q[46], - WERTE3__q[46], WERTE2__q[46], WERTE1__q[46], WERTE0__q[46]} & - {8{RTC_ADR_q == 6'b10_1110}} & {8{UHR_DS}}) | ({WERTE7__q[47], - WERTE6__q[47], WERTE5__q[47], WERTE4__q[47], WERTE3__q[47], - WERTE2__q[47], WERTE1__q[47], WERTE0__q[47]} & {8{RTC_ADR_q == - 6'b10_1111}} & {8{UHR_DS}}) | ({WERTE7__q[48], WERTE6__q[48], - WERTE5__q[48], WERTE4__q[48], WERTE3__q[48], WERTE2__q[48], - WERTE1__q[48], WERTE0__q[48]} & {8{RTC_ADR_q == 6'b11_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[49], WERTE6__q[49], WERTE5__q[49], - WERTE4__q[49], WERTE3__q[49], WERTE2__q[49], WERTE1__q[49], - WERTE0__q[49]} & {8{RTC_ADR_q == 6'b11_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[50], WERTE6__q[50], WERTE5__q[50], WERTE4__q[50], - WERTE3__q[50], WERTE2__q[50], WERTE1__q[50], WERTE0__q[50]} & - {8{RTC_ADR_q == 6'b11_0010}} & {8{UHR_DS}}) | ({WERTE7__q[51], - WERTE6__q[51], WERTE5__q[51], WERTE4__q[51], WERTE3__q[51], - WERTE2__q[51], WERTE1__q[51], WERTE0__q[51]} & {8{RTC_ADR_q == - 6'b11_0011}} & {8{UHR_DS}}) | ({WERTE7__q[52], WERTE6__q[52], - WERTE5__q[52], WERTE4__q[52], WERTE3__q[52], WERTE2__q[52], - WERTE1__q[52], WERTE0__q[52]} & {8{RTC_ADR_q == 6'b11_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[53], WERTE6__q[53], WERTE5__q[53], - WERTE4__q[53], WERTE3__q[53], WERTE2__q[53], WERTE1__q[53], - WERTE0__q[53]} & {8{RTC_ADR_q == 6'b11_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[54], WERTE6__q[54], WERTE5__q[54], WERTE4__q[54], - WERTE3__q[54], WERTE2__q[54], WERTE1__q[54], WERTE0__q[54]} & - {8{RTC_ADR_q == 6'b11_0110}} & {8{UHR_DS}}) | ({WERTE7__q[55], - WERTE6__q[55], WERTE5__q[55], WERTE4__q[55], WERTE3__q[55], - WERTE2__q[55], WERTE1__q[55], WERTE0__q[55]} & {8{RTC_ADR_q == - 6'b11_0111}} & {8{UHR_DS}}) | ({WERTE7__q[56], WERTE6__q[56], - WERTE5__q[56], WERTE4__q[56], WERTE3__q[56], WERTE2__q[56], - WERTE1__q[56], WERTE0__q[56]} & {8{RTC_ADR_q == 6'b11_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[57], WERTE6__q[57], WERTE5__q[57], - WERTE4__q[57], WERTE3__q[57], WERTE2__q[57], WERTE1__q[57], - WERTE0__q[57]} & {8{RTC_ADR_q == 6'b11_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[58], WERTE6__q[58], WERTE5__q[58], WERTE4__q[58], - WERTE3__q[58], WERTE2__q[58], WERTE1__q[58], WERTE0__q[58]} & - {8{RTC_ADR_q == 6'b11_1010}} & {8{UHR_DS}}) | ({WERTE7__q[59], - WERTE6__q[59], WERTE5__q[59], WERTE4__q[59], WERTE3__q[59], - WERTE2__q[59], WERTE1__q[59], WERTE0__q[59]} & {8{RTC_ADR_q == - 6'b11_1011}} & {8{UHR_DS}}) | ({WERTE7__q[60], WERTE6__q[60], - WERTE5__q[60], WERTE4__q[60], WERTE3__q[60], WERTE2__q[60], - WERTE1__q[60], WERTE0__q[60]} & {8{RTC_ADR_q == 6'b11_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[61], WERTE6__q[61], WERTE5__q[61], - WERTE4__q[61], WERTE3__q[61], WERTE2__q[61], WERTE1__q[61], - WERTE0__q[61]} & {8{RTC_ADR_q == 6'b11_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[62], WERTE6__q[62], WERTE5__q[62], WERTE4__q[62], - WERTE3__q[62], WERTE2__q[62], WERTE1__q[62], WERTE0__q[62]} & - {8{RTC_ADR_q == 6'b11_1110}} & {8{UHR_DS}}) | ({WERTE7__q[63], - WERTE6__q[63], WERTE5__q[63], WERTE4__q[63], WERTE3__q[63], - WERTE2__q[63], WERTE1__q[63], WERTE0__q[63]} & {8{RTC_ADR_q == - 6'b11_1111}} & {8{UHR_DS}}) | ({2'b00, RTC_ADR_q} & {8{UHR_AS}}) | - ({8{INT_CTR_CS}} & INT_CTR_q[23:16]) | ({8{INT_ENA_CS}} & - INT_ENA_q[23:16]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[23:16]) | - ({8{INT_CLEAR_CS}} & INT_IN[23:16]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[23:16]); - assign u1_enabledt = (UHR_DS | UHR_AS | INT_CTR_CS | INT_ENA_CS | - INT_LATCH_CS | INT_CLEAR_CS | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[23:16] = u1_tridata; - assign u2_data = ({8{INT_CTR_CS}} & INT_CTR_q[15:8]) | ({8{INT_ENA_CS}} & - INT_ENA_q[15:8]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[15:8]) | - ({8{INT_CLEAR_CS}} & INT_IN[15:8]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[15:8]); - assign u2_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[15:8] = u2_tridata; - assign u3_data = ({8{INT_CTR_CS}} & INT_CTR_q[7:0]) | ({8{INT_ENA_CS}} & - INT_ENA_q[7:0]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[7:0]) | - ({8{INT_CLEAR_CS}} & INT_IN[7:0]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[7:0]); - assign u3_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[7:0] = u3_tridata; - assign INT_HANDLER_TA = INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | - INT_CLEAR_CS; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign UPDATE_ON = UPDATE_ON_1 | UPDATE_ON_2; - assign WERTE0_0_ena = WERTE0_0_ena_1 | WERTE0_0_ena_2; - assign WERTE0_2_ena = WERTE0_2_ena_1 | WERTE0_2_ena_2; - assign WERTE0_4_ena = WERTE0_4_ena_1 | WERTE0_4_ena_2; - assign WERTE0_6_ena = WERTE0_6_ena_1 | WERTE0_6_ena_2; - assign WERTE0_7_ena = WERTE0_7_ena_1 | WERTE0_7_ena_2; - assign WERTE0_8_ena = WERTE0_8_ena_1 | WERTE0_8_ena_2; - assign WERTE0_9_ena = WERTE0_9_ena_1 | WERTE0_9_ena_2; - assign WERTE0_13_ena = WERTE0_13_ena_1 | WERTE0_13_ena_2; - assign WERTE0__d[0] = WERTE0_0_d_1 | WERTE0_0_d_2; - assign WERTE0__d[2] = WERTE0_2_d_1 | WERTE0_2_d_2; - assign WERTE0__d[4] = WERTE0_4_d_1 | WERTE0_4_d_2; - assign WERTE0__d[6] = WERTE0_6_d_1 | WERTE0_6_d_2; - assign WERTE0__d[7] = WERTE0_7_d_1 | WERTE0_7_d_2; - assign WERTE0__d[8] = WERTE0_8_d_1 | WERTE0_8_d_2; - assign WERTE0__d[9] = WERTE0_9_d_1 | WERTE0_9_d_2; - assign WERTE0__d[11] = WERTE0_11_d_1 | WERTE0_11_d_2; - assign WERTE0__d[13] = WERTE0_13_d_1 | WERTE0_13_d_2; - assign WERTE1_0_ena = WERTE1_0_ena_1 | WERTE1_0_ena_2; - assign WERTE1_2_ena = WERTE1_2_ena_1 | WERTE1_2_ena_2; - assign WERTE1_4_ena = WERTE1_4_ena_1 | WERTE1_4_ena_2; - assign WERTE1_6_ena = WERTE1_6_ena_1 | WERTE1_6_ena_2; - assign WERTE1_7_ena = WERTE1_7_ena_1 | WERTE1_7_ena_2; - assign WERTE1_8_ena = WERTE1_8_ena_1 | WERTE1_8_ena_2; - assign WERTE1_9_ena = WERTE1_9_ena_1 | WERTE1_9_ena_2; - assign WERTE1__d[0] = WERTE1_0_d_1 | WERTE1_0_d_2; - assign WERTE1__d[2] = WERTE1_2_d_1 | WERTE1_2_d_2; - assign WERTE1__d[4] = WERTE1_4_d_1 | WERTE1_4_d_2; - assign WERTE1__d[6] = WERTE1_6_d_1 | WERTE1_6_d_2; - assign WERTE1__d[7] = WERTE1_7_d_1 | WERTE1_7_d_2; - assign WERTE1__d[8] = WERTE1_8_d_1 | WERTE1_8_d_2; - assign WERTE1__d[9] = WERTE1_9_d_1 | WERTE1_9_d_2; - assign WERTE1__d[11] = WERTE1_11_d_1 | WERTE1_11_d_2; - assign WERTE2_0_ena = WERTE2_0_ena_1 | WERTE2_0_ena_2; - assign WERTE2_2_ena = WERTE2_2_ena_1 | WERTE2_2_ena_2; - assign WERTE2_4_ena = WERTE2_4_ena_1 | WERTE2_4_ena_2; - assign WERTE2_6_ena = WERTE2_6_ena_1 | WERTE2_6_ena_2; - assign WERTE2_7_ena = WERTE2_7_ena_1 | WERTE2_7_ena_2; - assign WERTE2_8_ena = WERTE2_8_ena_1 | WERTE2_8_ena_2; - assign WERTE2_9_ena = WERTE2_9_ena_1 | WERTE2_9_ena_2; - assign WERTE2__d[0] = WERTE2_0_d_1 | WERTE2_0_d_2; - assign WERTE2__d[2] = WERTE2_2_d_1 | WERTE2_2_d_2; - assign WERTE2__d[4] = WERTE2_4_d_1 | WERTE2_4_d_2; - assign WERTE2__d[6] = WERTE2_6_d_1 | WERTE2_6_d_2; - assign WERTE2__d[7] = WERTE2_7_d_1 | WERTE2_7_d_2; - assign WERTE2__d[8] = WERTE2_8_d_1 | WERTE2_8_d_2; - assign WERTE2__d[9] = WERTE2_9_d_1 | WERTE2_9_d_2; - assign WERTE2__d[11] = WERTE2_11_d_1 | WERTE2_11_d_2; - assign WERTE3_0_ena = WERTE3_0_ena_1 | WERTE3_0_ena_2; - assign WERTE3_2_ena = WERTE3_2_ena_1 | WERTE3_2_ena_2; - assign WERTE3_4_ena = WERTE3_4_ena_1 | WERTE3_4_ena_2; - assign WERTE3_6_ena = WERTE3_6_ena_1 | WERTE3_6_ena_2; - assign WERTE3_7_ena = WERTE3_7_ena_1 | WERTE3_7_ena_2; - assign WERTE3_8_ena = WERTE3_8_ena_1 | WERTE3_8_ena_2; - assign WERTE3_9_ena = WERTE3_9_ena_1 | WERTE3_9_ena_2; - assign WERTE3__d[0] = WERTE3_0_d_1 | WERTE3_0_d_2; - assign WERTE3__d[2] = WERTE3_2_d_1 | WERTE3_2_d_2; - assign WERTE3__d[4] = WERTE3_4_d_1 | WERTE3_4_d_2; - assign WERTE3__d[6] = WERTE3_6_d_1 | WERTE3_6_d_2; - assign WERTE3__d[7] = WERTE3_7_d_1 | WERTE3_7_d_2; - assign WERTE3__d[8] = WERTE3_8_d_1 | WERTE3_8_d_2; - assign WERTE3__d[9] = WERTE3_9_d_1 | WERTE3_9_d_2; - assign WERTE4_0_ena = WERTE4_0_ena_1 | WERTE4_0_ena_2; - assign WERTE4_2_ena = WERTE4_2_ena_1 | WERTE4_2_ena_2; - assign WERTE4_4_ena = WERTE4_4_ena_1 | WERTE4_4_ena_2; - assign WERTE4_6_ena = WERTE4_6_ena_1 | WERTE4_6_ena_2; - assign WERTE4_7_ena = WERTE4_7_ena_1 | WERTE4_7_ena_2; - assign WERTE4_8_ena = WERTE4_8_ena_1 | WERTE4_8_ena_2; - assign WERTE4_9_ena = WERTE4_9_ena_1 | WERTE4_9_ena_2; - assign WERTE4__d[0] = WERTE4_0_d_1 | WERTE4_0_d_2; - assign WERTE4__d[2] = WERTE4_2_d_1 | WERTE4_2_d_2; - assign WERTE4__d[4] = WERTE4_4_d_1 | WERTE4_4_d_2; - assign WERTE4__d[6] = WERTE4_6_d_1 | WERTE4_6_d_2; - assign WERTE4__d[7] = WERTE4_7_d_1 | WERTE4_7_d_2; - assign WERTE4__d[8] = WERTE4_8_d_1 | WERTE4_8_d_2; - assign WERTE4__d[9] = WERTE4_9_d_1 | WERTE4_9_d_2; - assign WERTE5_0_ena = WERTE5_0_ena_1 | WERTE5_0_ena_2; - assign WERTE5_2_ena = WERTE5_2_ena_1 | WERTE5_2_ena_2; - assign WERTE5_4_ena = WERTE5_4_ena_1 | WERTE5_4_ena_2; - assign WERTE5_6_ena = WERTE5_6_ena_1 | WERTE5_6_ena_2; - assign WERTE5_7_ena = WERTE5_7_ena_1 | WERTE5_7_ena_2; - assign WERTE5_8_ena = WERTE5_8_ena_1 | WERTE5_8_ena_2; - assign WERTE5_9_ena = WERTE5_9_ena_1 | WERTE5_9_ena_2; - assign WERTE5__d[0] = WERTE5_0_d_1 | WERTE5_0_d_2; - assign WERTE5__d[2] = WERTE5_2_d_1 | WERTE5_2_d_2; - assign WERTE5__d[4] = WERTE5_4_d_1 | WERTE5_4_d_2; - assign WERTE5__d[6] = WERTE5_6_d_1 | WERTE5_6_d_2; - assign WERTE5__d[7] = WERTE5_7_d_1 | WERTE5_7_d_2; - assign WERTE5__d[8] = WERTE5_8_d_1 | WERTE5_8_d_2; - assign WERTE5__d[9] = WERTE5_9_d_1 | WERTE5_9_d_2; - assign WERTE6_0_ena = WERTE6_0_ena_1 | WERTE6_0_ena_2; - assign WERTE6_2_ena = WERTE6_2_ena_1 | WERTE6_2_ena_2; - assign WERTE6_4_ena = WERTE6_4_ena_1 | WERTE6_4_ena_2; - assign WERTE6_6_ena = WERTE6_6_ena_1 | WERTE6_6_ena_2; - assign WERTE6_7_ena = WERTE6_7_ena_1 | WERTE6_7_ena_2; - assign WERTE6_8_ena = WERTE6_8_ena_1 | WERTE6_8_ena_2; - assign WERTE6_9_ena = WERTE6_9_ena_1 | WERTE6_9_ena_2; - assign WERTE6__d[0] = WERTE6_0_d_1 | WERTE6_0_d_2; - assign WERTE6__d[2] = WERTE6_2_d_1 | WERTE6_2_d_2; - assign WERTE6__d[4] = WERTE6_4_d_1 | WERTE6_4_d_2; - assign WERTE6__d[6] = WERTE6_6_d_1 | WERTE6_6_d_2; - assign WERTE6__d[7] = WERTE6_7_d_1 | WERTE6_7_d_2; - assign WERTE6__d[8] = WERTE6_8_d_1 | WERTE6_8_d_2; - assign WERTE6__d[9] = WERTE6_9_d_1 | WERTE6_9_d_2; - assign WERTE7_0_ena = WERTE7_0_ena_1 | WERTE7_0_ena_2; - assign WERTE7_2_ena = WERTE7_2_ena_1 | WERTE7_2_ena_2; - assign WERTE7_4_ena = WERTE7_4_ena_1 | WERTE7_4_ena_2; - assign WERTE7_6_ena = WERTE7_6_ena_1 | WERTE7_6_ena_2; - assign WERTE7_7_ena = WERTE7_7_ena_1 | WERTE7_7_ena_2; - assign WERTE7_8_ena = WERTE7_8_ena_1 | WERTE7_8_ena_2; - assign WERTE7_9_ena = WERTE7_9_ena_1 | WERTE7_9_ena_2; - assign WERTE7__d[0] = WERTE7_0_d_1 | WERTE7_0_d_2; - assign WERTE7__d[2] = WERTE7_2_d_1 | WERTE7_2_d_2; - assign WERTE7__d[4] = WERTE7_4_d_1 | WERTE7_4_d_2; - assign WERTE7__d[6] = WERTE7_6_d_1 | WERTE7_6_d_2; - assign WERTE7__d[7] = WERTE7_7_d_1 | WERTE7_7_d_2; - assign WERTE7__d[8] = WERTE7_8_d_1 | WERTE7_8_d_2; - assign WERTE7__d[9] = WERTE7_9_d_1 | WERTE7_9_d_2; - assign WERTE7__d[13] = WERTE7_13_d_1 | WERTE7_13_d_2; - -// Define power signal(s) - assign vcc = 1'b1; - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt b/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt deleted file mode 100644 index d96a9d1..0000000 --- a/FPGA_by_Gregory_Estrade/PLLJ_PLLSPE_INFO.txt +++ /dev/null @@ -1,20 +0,0 @@ -PLL_Name altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|pll1 -PLLJITTER 33 -PLLSPEmax 84 -PLLSPEmin -53 - -PLL_Name altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|pll1 -PLLJITTER 43 -PLLSPEmax 84 -PLLSPEmin -53 - -PLL_Name altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|pll1 -PLLJITTER NA -PLLSPEmax 84 -PLLSPEmin -53 - -PLL_Name altpll4:b2v_inst22|altpll:altpll_component|altpll_qfk2:auto_generated|pll1 -PLLJITTER 31 -PLLSPEmax 84 -PLLSPEmin -53 - diff --git a/FPGA_by_Gregory_Estrade/UNUSED b/FPGA_by_Gregory_Estrade/UNUSED deleted file mode 100644 index 3a7d9e6..0000000 --- a/FPGA_by_Gregory_Estrade/UNUSED +++ /dev/null @@ -1,27 +0,0 @@ - --- 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_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd b/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd deleted file mode 100644 index e09ed0b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd +++ /dev/null @@ -1,75 +0,0 @@ --- 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_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd.bak b/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd.bak deleted file mode 100644 index f674080..0000000 --- a/FPGA_by_Gregory_Estrade/Video/BLITTER/BLITTER.vhd.bak +++ /dev/null @@ -1,75 +0,0 @@ --- 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_by_Gregory_Estrade/Video/DDR_CTR.tdf b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf deleted file mode 100644 index d5b5ec2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf +++ /dev/null @@ -1,659 +0,0 @@ -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_by_Gregory_Estrade/Video/DDR_CTR.tdf.bak b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf.bak deleted file mode 100644 index ead66e8..0000000 --- a/FPGA_by_Gregory_Estrade/Video/DDR_CTR.tdf.bak +++ /dev/null @@ -1,660 +0,0 @@ -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_by_Gregory_Estrade/Video/DDR_CTR.v b/FPGA_by_Gregory_Estrade/Video/DDR_CTR.v deleted file mode 100644 index 6f11045..0000000 --- a/FPGA_by_Gregory_Estrade/Video/DDR_CTR.v +++ /dev/null @@ -1,1097 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: DDR_CTR.tdf -// Verilog Design Output: DDR_CTR.v -// Created 03-Mar-2014 09:18 PM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - -// DDR_CTR - - -// CREATED BY FREDI ASCHWANDEN -// FIFO WATER MARK -// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! -module DDR_CTR(FB_ADR, nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, - nRSTO, MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO, VIDEO_RAM_CTR, - BLITTER_ADR, BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M, FIFO_MW, VA, nVWE, - nVRAS, nVCS, VCKE, nVCAS, FB_LE, FB_VDOE, SR_FIFO_WRE, SR_DDR_FB, - SR_DDR_WR, SR_DDRWR_D_SEL, SR_VDMP, VIDEO_DDR_TA, SR_BLITTER_DACK, BA, - DDRWR_D_SEL1, VDM_SEL, FB_AD); - -// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! - input [31:0] FB_ADR; - input nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, nRSTO, - MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO; - input [15:0] VIDEO_RAM_CTR; - input [31:0] BLITTER_ADR; - input BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M; - input [8:0] FIFO_MW; - output [12:0] VA; - output nVWE, nVRAS, nVCS, VCKE, nVCAS; - output [3:0] FB_LE; - output [3:0] FB_VDOE; - output SR_FIFO_WRE, SR_DDR_FB, SR_DDR_WR, SR_DDRWR_D_SEL; - output [7:0] SR_VDMP; - output VIDEO_DDR_TA, SR_BLITTER_DACK; - output [1:0] BA; - output DDRWR_D_SEL1; - output [3:0] VDM_SEL; - reg [3:0] FB_LE; - reg [3:0] FB_VDOE; - reg SR_DDR_FB, VIDEO_DDR_TA, SR_BLITTER_DACK; - inout [31:0] FB_AD; - -// START (NORMAL 8 CYCLES TOTAL = 60ns) -// CONFIG -// READ CPU UND BLITTER, -// WRITE CPU UND BLITTER -// READ FIFO -// CLOSE FIFO BANK -// REFRESH 10X7.5NS=75NS - wire [2:0] FB_REGDDR_; - wire [5:0] DDR_SM_; - wire LINE; - wire [3:0] FB_B; - wire [12:0] VA_P; - wire [1:0] BA_P; - wire [12:0] VA_S; - wire [1:0] BA_S; - wire [1:0] MCS; - wire [1:0] MCS_d; - wire CPU_DDR_SYNC, CPU_DDR_SYNC_d, CPU_DDR_SYNC_clk, DDR_SEL, DDR_CS, - DDR_CS_d, DDR_CS_clk, DDR_CS_ena, DDR_CONFIG, SR_DDR_WR_clk, - SR_DDRWR_D_SEL_clk; - wire [12:0] CPU_ROW_ADR; - wire [1:0] CPU_BA; - wire [9:0] CPU_COL_ADR; - wire CPU_SIG, CPU_REQ, CPU_REQ_d, CPU_REQ_clk, CPU_AC, CPU_AC_clk, BUS_CYC, - BUS_CYC_d, BUS_CYC_clk, BLITTER_REQ, BLITTER_REQ_d, BLITTER_REQ_clk, - BLITTER_AC, BLITTER_AC_clk; - wire [12:0] BLITTER_ROW_ADR; - wire [1:0] BLITTER_BA; - wire [9:0] BLITTER_COL_ADR; - wire FIFO_REQ, FIFO_REQ_d, FIFO_REQ_clk, FIFO_AC, FIFO_AC_clk; - wire [12:0] FIFO_ROW_ADR; - wire [1:0] FIFO_BA; - wire [9:0] FIFO_COL_ADR; - wire FIFO_ACTIVE, CLR_FIFO_SYNC, CLR_FIFO_SYNC_d, CLR_FIFO_SYNC_clk, - CLEAR_FIFO_CNT, CLEAR_FIFO_CNT_d, CLEAR_FIFO_CNT_clk, STOP, STOP_d, - STOP_clk, SR_FIFO_WRE_clk, FIFO_BANK_OK, FIFO_BANK_OK_d, - FIFO_BANK_OK_clk, DDR_REFRESH_ON; - wire [10:0] DDR_REFRESH_CNT; - wire [10:0] DDR_REFRESH_CNT_d; - wire DDR_REFRESH_REQ, DDR_REFRESH_REQ_d, DDR_REFRESH_REQ_clk; - wire [3:0] DDR_REFRESH_SIG; - wire [3:0] DDR_REFRESH_SIG_d; - wire REFRESH_TIME, REFRESH_TIME_d, REFRESH_TIME_clk; - wire [7:0] VIDEO_BASE_L_D; - wire [7:0] VIDEO_BASE_L_D_d; - wire VIDEO_BASE_L; - wire [7:0] VIDEO_BASE_M_D; - wire [7:0] VIDEO_BASE_M_D_d; - wire VIDEO_BASE_M; - wire [7:0] VIDEO_BASE_H_D; - wire [7:0] VIDEO_BASE_H_D_d; - wire VIDEO_BASE_H; - wire [2:0] VIDEO_BASE_X_D; - wire [2:0] VIDEO_BASE_X_D_d; - wire [7:0] VIDEO_BASE_X_D_FULL; - wire [22:0] VIDEO_ADR_CNT; - wire [22:0] VIDEO_ADR_CNT_d; - wire VIDEO_CNT_L, VIDEO_CNT_M, VIDEO_CNT_H; - wire [22:0] VIDEO_BASE_ADR; - wire [26:0] VIDEO_ACT_ADR; - wire vcc, gnd; - wire [7:0] u0_data; - wire u0_enabledt; - wire [7:0] u0_tridata; - wire [7:0] u1_data; - wire u1_enabledt; - wire [7:0] u1_tridata; - wire FIFO_BANK_OK_d_2, BUS_CYC_d_1, BA0_1, BA1_1, VA0_1, VA1_1, VA2_1, - VA3_1, VA4_1, VA5_1, VA6_1, VA7_1, VA8_1, VA9_1, VA10_1, VA11_1, - VA12_1, VIDEO_BASE_X_D0_ena_ctrl, VIDEO_BASE_X_D0_clk_ctrl, - VIDEO_BASE_H_D0_ena_ctrl, VIDEO_BASE_H_D0_clk_ctrl, - VIDEO_BASE_M_D0_ena_ctrl, VIDEO_BASE_M_D0_clk_ctrl, - VIDEO_BASE_L_D0_ena_ctrl, VIDEO_BASE_L_D0_clk_ctrl, - DDR_REFRESH_SIG0_ena_ctrl, DDR_REFRESH_SIG0_clk_ctrl, - DDR_REFRESH_CNT0_clk_ctrl, VIDEO_ADR_CNT0_ena_ctrl, - VIDEO_ADR_CNT0_clk_ctrl, DDR_SM_0_clk_ctrl, BA_P0_clk_ctrl, - VA_P0_clk_ctrl, BA_S0_clk_ctrl, VA_S0_clk_ctrl, MCS0_clk_ctrl, - SR_VDMP0_clk_ctrl, FB_REGDDR_0_clk_ctrl; - reg [2:0] FB_REGDDR__d; - reg [2:0] FB_REGDDR__q; - reg [5:0] DDR_SM__d; - reg [5:0] DDR_SM__q; - reg VCAS, VRAS, VWE; - reg [12:0] VA_P_d; - reg [12:0] VA_P_q; - reg [1:0] BA_P_d; - reg [1:0] BA_P_q; - reg [12:0] VA_S_d; - reg [12:0] VA_S_q; - reg [1:0] BA_S_d; - reg [1:0] BA_S_q; - reg [1:0] MCS_q; - reg CPU_DDR_SYNC_q, DDR_CS_q, SR_DDR_WR_d, SR_DDR_WR_q, SR_DDRWR_D_SEL_d, - SR_DDRWR_D_SEL_q; - reg [7:0] SR_VDMP_d; - reg [7:0] SR_VDMP_q; - reg CPU_REQ_q, CPU_AC_d, CPU_AC_q, BUS_CYC_q, BUS_CYC_END, BLITTER_REQ_q, - BLITTER_AC_d, BLITTER_AC_q, FIFO_REQ_q, FIFO_AC_d, FIFO_AC_q, - CLR_FIFO_SYNC_q, CLEAR_FIFO_CNT_q, STOP_q, SR_FIFO_WRE_d, - SR_FIFO_WRE_q, FIFO_BANK_OK_q, FIFO_BANK_NOT_OK; - reg [10:0] DDR_REFRESH_CNT_q; - reg DDR_REFRESH_REQ_q; - reg [3:0] DDR_REFRESH_SIG_q; - reg REFRESH_TIME_q; - reg [7:0] VIDEO_BASE_L_D_q; - reg [7:0] VIDEO_BASE_M_D_q; - reg [7:0] VIDEO_BASE_H_D_q; - reg [2:0] VIDEO_BASE_X_D_q; - reg [22:0] VIDEO_ADR_CNT_q; - reg FIFO_BANK_OK_d_1, BUS_CYC_d_2, BA0_2, BA1_2, VA0_2, VA1_2, VA2_2, VA3_2, - VA4_2, VA5_2, VA6_2, VA7_2, VA8_2, VA9_2, VA10_2, VA11_2, VA12_2; - - -// Sub Module Section - /*lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), - .tridata(u0_tridata)); - - lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), - .tridata(u1_tridata));*/ - assign u0_tridata = (u0_enabledt) ? u0_data : 8'hzz; - assign u1_tridata = (u1_enabledt) ? u1_data : 8'hzz; - - - assign SR_FIFO_WRE = SR_FIFO_WRE_q; - always @(posedge SR_FIFO_WRE_clk) - SR_FIFO_WRE_q <= SR_FIFO_WRE_d; - - assign SR_DDR_WR = SR_DDR_WR_q; - always @(posedge SR_DDR_WR_clk) - SR_DDR_WR_q <= SR_DDR_WR_d; - - assign SR_DDRWR_D_SEL = SR_DDRWR_D_SEL_q; - always @(posedge SR_DDRWR_D_SEL_clk) - SR_DDRWR_D_SEL_q <= SR_DDRWR_D_SEL_d; - - assign SR_VDMP = SR_VDMP_q; - always @(posedge SR_VDMP0_clk_ctrl) - SR_VDMP_q <= SR_VDMP_d; - - always @(posedge FB_REGDDR_0_clk_ctrl) - FB_REGDDR__q <= FB_REGDDR__d; - - always @(posedge DDR_SM_0_clk_ctrl) - DDR_SM__q <= DDR_SM__d; - - always @(posedge VA_P0_clk_ctrl) - VA_P_q <= VA_P_d; - - always @(posedge BA_P0_clk_ctrl) - BA_P_q <= BA_P_d; - - always @(posedge VA_S0_clk_ctrl) - VA_S_q <= VA_S_d; - - always @(posedge BA_S0_clk_ctrl) - BA_S_q <= BA_S_d; - - always @(posedge MCS0_clk_ctrl) - MCS_q <= MCS_d; - - always @(posedge CPU_DDR_SYNC_clk) - CPU_DDR_SYNC_q <= CPU_DDR_SYNC_d; - - always @(posedge DDR_CS_clk) - if (DDR_CS_ena) - DDR_CS_q <= DDR_CS_d; - - always @(posedge CPU_REQ_clk) - CPU_REQ_q <= CPU_REQ_d; - - always @(posedge CPU_AC_clk) - CPU_AC_q <= CPU_AC_d; - - always @(posedge BUS_CYC_clk) - BUS_CYC_q <= BUS_CYC_d; - - always @(posedge BLITTER_REQ_clk) - BLITTER_REQ_q <= BLITTER_REQ_d; - - always @(posedge BLITTER_AC_clk) - BLITTER_AC_q <= BLITTER_AC_d; - - always @(posedge FIFO_REQ_clk) - FIFO_REQ_q <= FIFO_REQ_d; - - always @(posedge FIFO_AC_clk) - FIFO_AC_q <= FIFO_AC_d; - - always @(posedge CLR_FIFO_SYNC_clk) - CLR_FIFO_SYNC_q <= CLR_FIFO_SYNC_d; - - always @(posedge CLEAR_FIFO_CNT_clk) - CLEAR_FIFO_CNT_q <= CLEAR_FIFO_CNT_d; - - always @(posedge STOP_clk) - STOP_q <= STOP_d; - - always @(posedge FIFO_BANK_OK_clk) - FIFO_BANK_OK_q <= FIFO_BANK_OK_d; - - always @(posedge DDR_REFRESH_CNT0_clk_ctrl) - DDR_REFRESH_CNT_q <= DDR_REFRESH_CNT_d; - - always @(posedge DDR_REFRESH_REQ_clk) - DDR_REFRESH_REQ_q <= DDR_REFRESH_REQ_d; - - always @(posedge DDR_REFRESH_SIG0_clk_ctrl) - if (DDR_REFRESH_SIG0_ena_ctrl) - DDR_REFRESH_SIG_q <= DDR_REFRESH_SIG_d; - - always @(posedge REFRESH_TIME_clk) - REFRESH_TIME_q <= REFRESH_TIME_d; - - always @(posedge VIDEO_BASE_L_D0_clk_ctrl) - if (VIDEO_BASE_L_D0_ena_ctrl) - VIDEO_BASE_L_D_q <= VIDEO_BASE_L_D_d; - - always @(posedge VIDEO_BASE_M_D0_clk_ctrl) - if (VIDEO_BASE_M_D0_ena_ctrl) - VIDEO_BASE_M_D_q <= VIDEO_BASE_M_D_d; - - always @(posedge VIDEO_BASE_H_D0_clk_ctrl) - if (VIDEO_BASE_H_D0_ena_ctrl) - VIDEO_BASE_H_D_q <= VIDEO_BASE_H_D_d; - - always @(posedge VIDEO_BASE_X_D0_clk_ctrl) - if (VIDEO_BASE_X_D0_ena_ctrl) - VIDEO_BASE_X_D_q <= VIDEO_BASE_X_D_d; - - always @(posedge VIDEO_ADR_CNT0_clk_ctrl) - if (VIDEO_ADR_CNT0_ena_ctrl) - VIDEO_ADR_CNT_q <= VIDEO_ADR_CNT_d; - -// Start of original equations - assign LINE = FB_SIZE0 & FB_SIZE1; - -// BYT SELECT -// ADR==0 -// LONG UND LINE - assign FB_B[0] = FB_ADR[1:0] == 2'b00 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) - & (!FB_SIZE0)); - -// ADR==1 -// HIGH WORD -// LONG UND LINE - assign FB_B[1] = FB_ADR[1:0] == 2'b01 | (FB_SIZE1 & (!FB_SIZE0) & - (!FB_ADR[1])) | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); - -// ADR==2 -// LONG UND LINE - assign FB_B[2] = FB_ADR[1:0] == 2'b10 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) - & (!FB_SIZE0)); - -// ADR==3 -// LOW WORD -// LONG UND LINE - assign FB_B[3] = FB_ADR[1:0] == 2'b11 | (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) - | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); - -// CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- - assign FB_REGDDR_0_clk_ctrl = MAIN_CLK; - - - always @(FB_REGDDR__q or DDR_SEL or BUS_CYC_q or LINE or DDR_CS_q or nFB_OE - or MAIN_CLK or DDR_CONFIG or nFB_WR or vcc) begin - FB_REGDDR__d = FB_REGDDR__q; - {FB_VDOE[0], FB_VDOE[1]} = 2'b00; - {FB_LE[0], FB_LE[1], FB_VDOE[2], FB_LE[2], FB_VDOE[3], FB_LE[3], - VIDEO_DDR_TA, BUS_CYC_END} = 8'b0000_0000; - casex (FB_REGDDR__q) - 3'b000: begin - FB_LE[0] = !nFB_WR; - -// LOS WENN BEREIT ODER IMMER BEI LINE WRITE - if (BUS_CYC_q | (DDR_SEL & LINE & (!nFB_WR))) begin - FB_REGDDR__d = 3'b001; - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b001: begin - if (DDR_CS_q) begin - FB_LE[0] = !nFB_WR; - VIDEO_DDR_TA = vcc; - if (LINE) begin - FB_VDOE[0] = (!nFB_OE) & (!DDR_CONFIG); - FB_REGDDR__d = 3'b010; - end else begin - BUS_CYC_END = vcc; - FB_VDOE[0] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); - FB_REGDDR__d = 3'b000; - end - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b010: begin - if (DDR_CS_q) begin - FB_VDOE[1] = (!nFB_OE) & (!DDR_CONFIG); - FB_LE[1] = !nFB_WR; - VIDEO_DDR_TA = vcc; - FB_REGDDR__d = 3'b011; - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b011: begin - if (DDR_CS_q) begin - FB_VDOE[2] = (!nFB_OE) & (!DDR_CONFIG); - FB_LE[2] = !nFB_WR; - -// BEI LINE WRITE EVT. WARTEN - if ((!BUS_CYC_q) & LINE & (!nFB_WR)) begin - FB_REGDDR__d = 3'b011; - end else begin - VIDEO_DDR_TA = vcc; - FB_REGDDR__d = 3'b100; - end - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b100: begin - if (DDR_CS_q) begin - FB_VDOE[3] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); - FB_LE[3] = !nFB_WR; - VIDEO_DDR_TA = vcc; - BUS_CYC_END = vcc; - FB_REGDDR__d = 3'b000; - end else begin - FB_REGDDR__d = 3'b000; - end - end - endcase - end - -// 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; - assign VCKE = VIDEO_RAM_CTR[0]; - assign nVCS = !VIDEO_RAM_CTR[1]; - assign DDR_REFRESH_ON = VIDEO_RAM_CTR[2]; - assign DDR_CONFIG = VIDEO_RAM_CTR[3]; - assign FIFO_ACTIVE = VIDEO_RAM_CTR[8]; - -// ------------------------------ - assign CPU_ROW_ADR = FB_ADR[26:14]; - assign CPU_BA = FB_ADR[13:12]; - assign CPU_COL_ADR = FB_ADR[11:2]; - assign nVRAS = !VRAS; - assign nVCAS = !VCAS; - assign nVWE = !VWE; - assign SR_DDR_WR_clk = DDRCLK0; - assign SR_DDRWR_D_SEL_clk = DDRCLK0; - assign SR_VDMP0_clk_ctrl = DDRCLK0; - assign SR_FIFO_WRE_clk = DDRCLK0; - assign CPU_AC_clk = DDRCLK0; - assign FIFO_AC_clk = DDRCLK0; - assign BLITTER_AC_clk = DDRCLK0; - assign DDRWR_D_SEL1 = BLITTER_AC_q; - -// SELECT LOGIC - assign DDR_SEL = FB_ALE & FB_AD[31:30] == 2'b01; - assign DDR_CS_clk = MAIN_CLK; - assign DDR_CS_ena = FB_ALE; - assign DDR_CS_d = DDR_SEL; - -// WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER -// NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG -// CONFIG SOFORT LOS -// LINE WRITE SPÄTER - assign CPU_SIG = (DDR_SEL & (nFB_WR | (!LINE)) & (!DDR_CONFIG)) | (DDR_SEL & - DDR_CONFIG) | (FB_REGDDR__q == 3'b010 & (!nFB_WR)); - assign CPU_REQ_clk = DDR_SYNC_66M; - -// HALTEN BUS CYC BEGONNEN ODER FERTIG - assign CPU_REQ_d = CPU_SIG | (CPU_REQ_q & FB_REGDDR__q != 3'b010 & - FB_REGDDR__q != 3'b100 & (!BUS_CYC_END) & (!BUS_CYC_q)); - assign BUS_CYC_clk = DDRCLK0; - assign BUS_CYC_d_1 = BUS_CYC_q & (!BUS_CYC_END); - -// STATE MACHINE SYNCHRONISIEREN ----------------- - assign MCS0_clk_ctrl = DDRCLK0; - assign MCS_d[0] = MAIN_CLK; - assign MCS_d[1] = MCS_q[0]; - assign CPU_DDR_SYNC_clk = DDRCLK0; - -// NUR 1 WENN EIN - assign CPU_DDR_SYNC_d = MCS_q == 2'b10 & VCKE & (!nVCS); - -// ------------------------------------------------- - assign VA_S0_clk_ctrl = DDRCLK0; - assign BA_S0_clk_ctrl = DDRCLK0; - assign {VA12_1, VA11_1, VA10_1, VA9_1, VA8_1, VA7_1, VA6_1, VA5_1, VA4_1, - VA3_1, VA2_1, VA1_1, VA0_1} = VA_S_q; - assign {BA1_1, BA0_1} = BA_S_q; - assign VA_P0_clk_ctrl = DDRCLK0; - assign BA_P0_clk_ctrl = DDRCLK0; - -// DDR STATE MACHINE ----------------------------------------------- - assign DDR_SM_0_clk_ctrl = DDRCLK0; - - - always @(DDR_SM__q or DDR_REFRESH_REQ_q or CPU_DDR_SYNC_q or DDR_CONFIG or - CPU_ROW_ADR or FIFO_ROW_ADR or BLITTER_ROW_ADR or BLITTER_REQ_q or - BLITTER_WR or FIFO_AC_q or CPU_COL_ADR or BLITTER_COL_ADR or VA_S_q or - CPU_BA or BLITTER_BA or FB_B or CPU_AC_q or BLITTER_AC_q or - FIFO_BANK_OK_q or FIFO_MW or FIFO_REQ_q or VIDEO_ADR_CNT_q or - FIFO_COL_ADR or gnd or DDR_SEL or LINE or FIFO_BA or FB_AD or VA_P_q - or BA_P_q or CPU_REQ_q or nFB_WR or FB_SIZE0 or FB_SIZE1 or - DDR_REFRESH_SIG_q or vcc) begin - DDR_SM__d = DDR_SM__q; - BA_S_d = 2'b00; - VA_S_d = 13'b0_0000_0000_0000; - BA_P_d = 2'b00; - {VA_P_d[9], VA_P_d[8], VA_P_d[7], VA_P_d[6], VA_P_d[5], VA_P_d[4], - VA_P_d[3], VA_P_d[2], VA_P_d[1], VA_P_d[0], VA_P_d[10]} = - 11'b000_0000_0000; - SR_VDMP_d = 8'b0000_0000; - VA_P_d[12:11] = 2'b00; - {FIFO_BANK_OK_d_1, FIFO_AC_d, SR_DDR_FB, SR_BLITTER_DACK, BLITTER_AC_d, - SR_DDR_WR_d, SR_DDRWR_D_SEL_d, CPU_AC_d, VA12_2, VA11_2, VA9_2, - VA8_2, VA7_2, VA6_2, VA5_2, VA4_2, VA3_2, VA2_2, VA1_2, VA0_2, - BA1_2, BA0_2, SR_FIFO_WRE_d, BUS_CYC_d_2, VWE, VA10_2, - FIFO_BANK_NOT_OK, VCAS, VRAS} = - 29'b0_0000_0000_0000_0000_0000_0000_0000; - casex (DDR_SM__q) - 6'b00_0000: begin - if (DDR_REFRESH_REQ_q) begin - DDR_SM__d = 6'b01_1111; - -// SYNCHRON UND EIN? - end else if (CPU_DDR_SYNC_q) begin - -// JA - if (DDR_CONFIG) begin - DDR_SM__d = 6'b00_1000; - -// BEI WAIT UND LINE WRITE - end else if (CPU_REQ_q) begin - VA_S_d = CPU_ROW_ADR; - BA_S_d = CPU_BA; - CPU_AC_d = vcc; - BUS_CYC_d_2 = vcc; - DDR_SM__d = 6'b00_0010; - end else begin - -// FIFO IST DEFAULT - if (FIFO_REQ_q | (!BLITTER_REQ_q)) begin - VA_P_d = FIFO_ROW_ADR; - BA_P_d = FIFO_BA; - -// VORBESETZEN - FIFO_AC_d = vcc; - end else begin - VA_P_d = BLITTER_ROW_ADR; - BA_P_d = BLITTER_BA; - -// VORBESETZEN - BLITTER_AC_d = vcc; - end - DDR_SM__d = 6'b00_0001; - end - end else begin - -// NEIN ->SYNCHRONISIEREN - DDR_SM__d = 6'b00_0000; - end - end - 6'b00_0001: begin - -// SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** - if (DDR_SEL & (nFB_WR | (!LINE))) begin - VRAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; - {BA1_2, BA0_2} = FB_AD[13:12]; - -// AUTO PRECHARGE DA NICHT FIFO PAGE - VA_S_d[10] = vcc; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - end else begin - VRAS = (FIFO_AC_q & FIFO_REQ_q) | (BLITTER_AC_q & - BLITTER_REQ_q); - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; - {BA1_2, BA0_2} = BA_P_q; - VA_S_d[10] = !(FIFO_AC_q & FIFO_REQ_q); - FIFO_BANK_OK_d_1 = FIFO_AC_q & FIFO_REQ_q; - FIFO_AC_d = FIFO_AC_q & FIFO_REQ_q; - BLITTER_AC_d = BLITTER_AC_q & BLITTER_REQ_q; - end - DDR_SM__d = 6'b00_0011; - end - 6'b00_0010: begin - VRAS = vcc; - FIFO_BANK_NOT_OK = vcc; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - DDR_SM__d = 6'b00_0011; - end - 6'b00_0011: begin - CPU_AC_d = CPU_AC_q; - FIFO_AC_d = FIFO_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - if (((!nFB_WR) & CPU_AC_q) | (BLITTER_WR & BLITTER_AC_q)) begin - DDR_SM__d = 6'b01_0000; - -// CPU? - end else if (CPU_AC_q) begin - VA_S_d[9:0] = CPU_COL_ADR; - BA_S_d = CPU_BA; - DDR_SM__d = 6'b00_1110; - -// FIFO? - end else if (FIFO_AC_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_0110; - end else if (BLITTER_AC_q) begin - VA_S_d[9:0] = BLITTER_COL_ADR; - BA_S_d = BLITTER_BA; - DDR_SM__d = 6'b00_1110; - end else begin - -// READ - DDR_SM__d = 6'b00_0111; - end - end - 6'b00_1110: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VCAS = vcc; - -// READ DATEN FÜR CPU - SR_DDR_FB = CPU_AC_q; - -// BLITTER DACK AND BLITTER LATCH DATEN - SR_BLITTER_DACK = BLITTER_AC_q; - DDR_SM__d = 6'b00_1111; - end - 6'b00_1111: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// FIFO READ EINSCHIEBEN WENN BANK OK - if (FIFO_REQ_q & FIFO_BANK_OK_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - -// MANUEL PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// WRITE - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_0000: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// BLITTER ACK AND BLITTER LATCH DATEN - SR_BLITTER_DACK = BLITTER_AC_q; - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - DDR_SM__d = 6'b01_0001; - end - 6'b01_0001: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VA_S_d[9:0] = ({10{CPU_AC_q}} & CPU_COL_ADR) | ({10{BLITTER_AC_q}} - & BLITTER_COL_ADR); - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - BA_S_d = ({2{CPU_AC_q}} & CPU_BA) | ({2{BLITTER_AC_q}} & - BLITTER_BA); - -// BYTE ENABLE WRITE - SR_VDMP_d[7:4] = FB_B; - -// LINE ENABLE WRITE - SR_VDMP_d[3:0] = {4{LINE}} & 4'b1111; - DDR_SM__d = 6'b01_0010; - end - 6'b01_0010: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VCAS = vcc; - VWE = vcc; - -// WRITE COMMAND CPU UND BLITTER IF WRITER - SR_DDR_WR_d = vcc; - -// 2. HÄLFTE WRITE DATEN SELEKTIEREN - SR_DDRWR_D_SEL_d = vcc; - -// WENN LINE DANN ACTIV - SR_VDMP_d = {8{LINE}} & 8'b1111_1111; - DDR_SM__d = 6'b01_0011; - end - 6'b01_0011: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// WRITE COMMAND CPU UND BLITTER IF WRITE - SR_DDR_WR_d = vcc; - -// 2. HÄLFTE WRITE DATEN SELEKTIEREN - SR_DDRWR_D_SEL_d = vcc; - DDR_SM__d = 6'b01_0100; - end - 6'b01_0100: begin - DDR_SM__d = 6'b01_0101; - end - 6'b01_0101: begin - if (FIFO_REQ_q & FIFO_BANK_OK_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// FIFO READ - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_0110: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - DDR_SM__d = 6'b01_0111; - end - 6'b01_0111: begin - if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end else begin - VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// NOCH OFFEN LASSEN - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_1000: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - DDR_SM__d = 6'b01_1001; - end - 6'b01_1001: begin - if (CPU_REQ_q & FIFO_MW > 9'b0_0000_0000) begin - -// ALLE PAGES SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end else if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end else begin - VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1010; - end - end else begin - -// ALLE PAGES SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end - end - 6'b01_1010: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - -// NOTFALL? - if (FIFO_MW < 9'b0_0000_0000) begin - -// JA-> - DDR_SM__d = 6'b01_0111; - end else begin - DDR_SM__d = 6'b01_1011; - end - end - 6'b01_1011: begin - if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE BANKS SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end else begin - VA_P_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_P_d[10] = gnd; - BA_P_d = FIFO_BA; - DDR_SM__d = 6'b01_1100; - end - end else begin - -// ALLE BANKS SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_1100: begin - if (DDR_SEL & (nFB_WR | (!LINE)) & FB_AD[13:12] != FIFO_BA) begin - VRAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; - {BA1_2, BA0_2} = FB_AD[13:12]; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - -// AUTO PRECHARGE DA NICHT FIFO BANK - VA_S_d[10] = vcc; - DDR_SM__d = 6'b00_0011; - end else begin - VCAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; - {BA1_2, BA0_2} = BA_P_q; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - -// CONFIG CYCLUS - DDR_SM__d = 6'b01_1001; - end - end - 6'b00_1000: begin - DDR_SM__d = 6'b00_1001; - end - 6'b00_1001: begin - BUS_CYC_d_2 = CPU_REQ_q; - DDR_SM__d = 6'b00_1010; - end - 6'b00_1010: begin - if (CPU_REQ_q) begin - DDR_SM__d = 6'b00_1011; - end else begin - DDR_SM__d = 6'b00_0000; - end - end - 6'b00_1011: begin - DDR_SM__d = 6'b00_1100; - end - 6'b00_1100: begin - VA_S_d = FB_AD[12:0]; - BA_S_d = FB_AD[14:13]; - DDR_SM__d = 6'b00_1101; - end - 6'b00_1101: begin - -// NUR BEI LONG WRITE - VRAS = FB_AD[18] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// NUR BEI LONG WRITE - VCAS = FB_AD[17] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// NUR BEI LONG WRITE - VWE = FB_AD[16] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// CLOSE FIFO BANK - DDR_SM__d = 6'b00_0111; - end - 6'b01_1101: begin - -// AUF NOT OK - FIFO_BANK_NOT_OK = vcc; - -// BÄNKE SCHLIESSEN - VRAS = vcc; - VWE = vcc; - DDR_SM__d = 6'b00_0110; - end - 6'b01_1110: begin - -// AUF NOT OK - FIFO_BANK_NOT_OK = vcc; - -// BÄNKE SCHLIESSEN - VRAS = vcc; - VWE = vcc; - -// REFRESH 70NS = 10 ZYCLEN - DDR_SM__d = 6'b00_0000; - end - 6'b01_1111: begin - -// EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN - if (DDR_REFRESH_SIG_q == 4'b1001) begin - -// ALLE BANKS SCHLIESSEN - VRAS = vcc; - VWE = vcc; - VA10_2 = vcc; - FIFO_BANK_NOT_OK = vcc; - DDR_SM__d = 6'b10_0001; - end else begin - VCAS = vcc; - VRAS = vcc; - DDR_SM__d = 6'b10_0000; - end - end - 6'b10_0000: begin - DDR_SM__d = 6'b10_0001; - end - 6'b10_0001: begin - DDR_SM__d = 6'b10_0010; - end - 6'b10_0010: begin - DDR_SM__d = 6'b10_0011; - end - 6'b10_0011: begin - -// LEERSCHLAUFE - DDR_SM__d = 6'b00_0100; - end - 6'b00_0100: begin - DDR_SM__d = 6'b00_0101; - end - 6'b00_0101: begin - DDR_SM__d = 6'b00_0110; - end - 6'b00_0110: begin - DDR_SM__d = 6'b00_0111; - end - 6'b00_0111: begin - DDR_SM__d = 6'b00_0000; - end - endcase - end - -// ------------------------------------------------------------- -// BLITTER ---------------------- -// --------------------------------------- - assign BLITTER_REQ_clk = DDRCLK0; - assign BLITTER_REQ_d = BLITTER_SIG & (!DDR_CONFIG) & VCKE & (!nVCS); - assign BLITTER_ROW_ADR = BLITTER_ADR[26:14]; - assign BLITTER_BA[1] = BLITTER_ADR[13]; - assign BLITTER_BA[0] = BLITTER_ADR[12]; - assign BLITTER_COL_ADR = BLITTER_ADR[11:2]; - -// ---------------------------------------------------------------------------- -// FIFO --------------------------------- -// ------------------------------------------------------ - assign FIFO_REQ_clk = DDRCLK0; - assign FIFO_REQ_d = (FIFO_MW < 9'b0_1100_1000 | (FIFO_MW < 9'b1_1111_0100 & - FIFO_REQ_q)) & FIFO_ACTIVE & (!CLEAR_FIFO_CNT_q) & (!STOP_q) & - (!DDR_CONFIG) & VCKE & (!nVCS); - assign FIFO_ROW_ADR = VIDEO_ADR_CNT_q[22:10]; - assign FIFO_BA[1] = VIDEO_ADR_CNT_q[9]; - assign FIFO_BA[0] = VIDEO_ADR_CNT_q[8]; - assign FIFO_COL_ADR = {VIDEO_ADR_CNT_q[7], VIDEO_ADR_CNT_q[6], - VIDEO_ADR_CNT_q[5], VIDEO_ADR_CNT_q[4], VIDEO_ADR_CNT_q[3], - VIDEO_ADR_CNT_q[2], VIDEO_ADR_CNT_q[1], VIDEO_ADR_CNT_q[0], 2'b00}; - assign FIFO_BANK_OK_clk = DDRCLK0; - assign FIFO_BANK_OK_d_2 = FIFO_BANK_OK_q & (!FIFO_BANK_NOT_OK); - -// ZÄHLER RÜCKSETZEN WENN CLR FIFO ---------------- - assign CLR_FIFO_SYNC_clk = DDRCLK0; - -// SYNCHRONISIEREN - assign CLR_FIFO_SYNC_d = CLR_FIFO; - assign CLEAR_FIFO_CNT_clk = DDRCLK0; - assign CLEAR_FIFO_CNT_d = CLR_FIFO_SYNC_q | (!FIFO_ACTIVE); - assign STOP_clk = DDRCLK0; - assign STOP_d = CLR_FIFO_SYNC_q | CLEAR_FIFO_CNT_q; - -// ZÄHLEN ----------------------------------------------- - assign VIDEO_ADR_CNT0_clk_ctrl = DDRCLK0; - assign VIDEO_ADR_CNT0_ena_ctrl = SR_FIFO_WRE_q | CLEAR_FIFO_CNT_q; - assign VIDEO_ADR_CNT_d = ({23{CLEAR_FIFO_CNT_q}} & VIDEO_BASE_ADR) | - ({23{!CLEAR_FIFO_CNT_q}} & (VIDEO_ADR_CNT_q + 23'h1)); - assign VIDEO_BASE_ADR[22:20] = VIDEO_BASE_X_D_q; - assign VIDEO_BASE_ADR[19:12] = VIDEO_BASE_H_D_q; - assign VIDEO_BASE_ADR[11:4] = VIDEO_BASE_M_D_q; - assign VIDEO_BASE_ADR[3:0] = VIDEO_BASE_L_D_q[7:4]; - assign VDM_SEL = VIDEO_BASE_L_D_q[3:0]; - -// AKTUELLE VIDEO ADRESSE - assign VIDEO_ACT_ADR[26:4] = VIDEO_ADR_CNT_q - {14'b00_0000_0000_0000, - FIFO_MW}; - assign VIDEO_ACT_ADR[3:0] = VDM_SEL; - -// --------------------------------------------------------------------------------------- -// REFRESH: IMMER 8 AUFS MAL, ANFORDERUNG ALLE 7.8us X 8 STCK. = 62.4us = 2059->2048 33MHz CLOCKS -// --------------------------------------------------------------------------------------- - assign DDR_REFRESH_CNT0_clk_ctrl = CLK33M; - -// ZÄHLEN 0-2047 - assign DDR_REFRESH_CNT_d = DDR_REFRESH_CNT_q + 11'b000_0000_0001; - assign REFRESH_TIME_clk = DDRCLK0; - -// SYNC - assign REFRESH_TIME_d = DDR_REFRESH_CNT_q == 11'b000_0000_0000 & - (!MAIN_CLK); - assign DDR_REFRESH_SIG0_clk_ctrl = DDRCLK0; - assign DDR_REFRESH_SIG0_ena_ctrl = REFRESH_TIME_q | DDR_SM__q == 6'b10_0011; - -// 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) -// MINUS 1 WENN GEMACHT - assign DDR_REFRESH_SIG_d = ({4{REFRESH_TIME_q}} & 4'b1001 & - {4{DDR_REFRESH_ON}} & {4{!DDR_CONFIG}}) | ({4{!REFRESH_TIME_q}} & - (DDR_REFRESH_SIG_q - 4'b0001) & {4{DDR_REFRESH_ON}} & - {4{!DDR_CONFIG}}); - assign DDR_REFRESH_REQ_clk = DDRCLK0; - assign DDR_REFRESH_REQ_d = DDR_REFRESH_SIG_q != 4'b0000 & DDR_REFRESH_ON & - (!REFRESH_TIME_q) & (!DDR_CONFIG); - -// --------------------------------------------------------- -// VIDEO REGISTER ----------------------- -// ------------------------------------------------------------------------------------------------------------------- - assign VIDEO_BASE_L_D0_clk_ctrl = MAIN_CLK; - -// 820D/2 - assign VIDEO_BASE_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C106; - -// SORRY, NUR 16 BYT GRENZEN - assign VIDEO_BASE_L_D_d = FB_AD[23:16]; - assign VIDEO_BASE_L_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_L & FB_B[1]; - assign VIDEO_BASE_M_D0_clk_ctrl = MAIN_CLK; - -// 8203/2 - assign VIDEO_BASE_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C101; - assign VIDEO_BASE_M_D_d = FB_AD[23:16]; - assign VIDEO_BASE_M_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_M & FB_B[3]; - assign VIDEO_BASE_H_D0_clk_ctrl = MAIN_CLK; - -// 8200-1/2 - assign VIDEO_BASE_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100; - assign VIDEO_BASE_H_D_d = FB_AD[23:16]; - assign VIDEO_BASE_H_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[1]; - assign VIDEO_BASE_X_D0_clk_ctrl = MAIN_CLK; - assign VIDEO_BASE_X_D_d = FB_AD[26:24]; - assign VIDEO_BASE_X_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[0]; - -// 8209/2 - assign VIDEO_CNT_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C104; - -// 8207/2 - assign VIDEO_CNT_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C103; - -// 8204,5/2 - assign VIDEO_CNT_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C102; - -// GE - assign VIDEO_BASE_X_D_FULL = {5'b0_0000, VIDEO_BASE_X_D_q}; - assign u0_data = ({8{VIDEO_BASE_H}} & VIDEO_BASE_X_D_FULL) | - ({8{VIDEO_CNT_H}} & {5'b0_0000, VIDEO_ACT_ADR[26:24]}); - assign u0_enabledt = (VIDEO_BASE_H | VIDEO_CNT_H) & (!nFB_OE); - assign FB_AD[31:24] = u0_tridata; - assign u1_data = ({8{VIDEO_BASE_L}} & VIDEO_BASE_L_D_q) | ({8{VIDEO_BASE_M}} - & VIDEO_BASE_M_D_q) | ({8{VIDEO_BASE_H}} & VIDEO_BASE_H_D_q) | - ({8{VIDEO_CNT_L}} & VIDEO_ACT_ADR[7:0]) | ({8{VIDEO_CNT_M}} & - VIDEO_ACT_ADR[15:8]) | ({8{VIDEO_CNT_H}} & VIDEO_ACT_ADR[23:16]); - assign u1_enabledt = (VIDEO_BASE_L | VIDEO_BASE_M | VIDEO_BASE_H | - VIDEO_CNT_L | VIDEO_CNT_M | VIDEO_CNT_H) & (!nFB_OE); - assign FB_AD[23:16] = u1_tridata; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign FIFO_BANK_OK_d = FIFO_BANK_OK_d_1 | FIFO_BANK_OK_d_2; - assign BUS_CYC_d = BUS_CYC_d_1 | BUS_CYC_d_2; - assign BA[0] = BA0_1 | BA0_2; - assign BA[1] = BA1_1 | BA1_2; - assign VA[0] = VA0_1 | VA0_2; - assign VA[1] = VA1_1 | VA1_2; - assign VA[2] = VA2_1 | VA2_2; - assign VA[3] = VA3_1 | VA3_2; - assign VA[4] = VA4_1 | VA4_2; - assign VA[5] = VA5_1 | VA5_2; - assign VA[6] = VA6_1 | VA6_2; - assign VA[7] = VA7_1 | VA7_2; - assign VA[8] = VA8_1 | VA8_2; - assign VA[9] = VA9_1 | VA9_2; - assign VA[10] = VA10_1 | VA10_2; - assign VA[11] = VA11_1 | VA11_2; - assign VA[12] = VA12_1 | VA12_2; - -// Define power signal(s) - assign vcc = 1'b1; - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/DDR_CTR_BLITTER.tdf.bak b/FPGA_by_Gregory_Estrade/Video/DDR_CTR_BLITTER.tdf.bak deleted file mode 100644 index 03052b4..0000000 --- a/FPGA_by_Gregory_Estrade/Video/DDR_CTR_BLITTER.tdf.bak +++ /dev/null @@ -1,352 +0,0 @@ -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_by_Gregory_Estrade/Video/UNUSED b/FPGA_by_Gregory_Estrade/Video/UNUSED deleted file mode 100644 index 12f424b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/UNUSED +++ /dev/null @@ -1,267 +0,0 @@ - --- 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_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf b/FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf deleted file mode 100644 index 2c9adcc..0000000 --- a/FPGA_by_Gregory_Estrade/Video/VIDEO_MOD_MUX_CLUTCTR.tdf +++ /dev/null @@ -1,675 +0,0 @@ -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[]6/2 WORD RESP LONG ONLY - assign VIDEO_PLL_CONFIG_CS = (!nFB_CS2) & FB_ADR[27:9] == 19'h3 & FB_B[0] & - FB_B[1]; - assign VR_WR_clk = MAIN_CLK; - assign VR_WR_d = VIDEO_PLL_CONFIG_CS & (!nFB_WR) & (!VR_BUSY) & (!VR_WR_q); - assign VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & (!VR_BUSY); - assign VR_DOUT0_clk_ctrl = MAIN_CLK; - assign VR_DOUT0_ena_ctrl = !VR_BUSY; - assign VR_DOUT_d = VR_D; - assign VR_FRQ0_clk_ctrl = MAIN_CLK; - assign VR_FRQ0_ena_ctrl = VR_WR_q & FB_ADR[8:0] == 9'b0_0000_0100; - assign VR_FRQ_d = FB_AD[23:16]; - -// VIDEO PLL RECONFIG -// $(F)000'0800 - assign VIDEO_PLL_RECONFIG_CS = (!nFB_CS2) & FB_ADR[27:0] == 28'h800 & - FB_B[0]; - assign VIDEO_RECONFIG_clk = MAIN_CLK; - assign VIDEO_RECONFIG_d = VIDEO_PLL_RECONFIG_CS & (!nFB_WR) & (!VR_BUSY) & - (!VIDEO_RECONFIG_q); - -// ---------------------------------------------------------------------------------------------------------------------- - assign VIDEO_RAM_CTR = ACP_VCTR_q[31:16]; - -// ------------ COLOR MODE IM ACP SETZEN - assign COLOR1_3 = ACP_VCTR_q[5] & (!ACP_VCTR_q[4]) & (!ACP_VCTR_q[3]) & - (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; - assign COLOR8_2 = ACP_VCTR_q[4] & (!ACP_VCTR_q[3]) & (!ACP_VCTR_q[2]) & - ACP_VIDEO_ON; - assign COLOR16_2 = ACP_VCTR_q[3] & (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; - assign COLOR24 = ACP_VCTR_q[2] & ACP_VIDEO_ON; - assign ACP_CLUT = (ACP_VIDEO_ON & (COLOR1 | COLOR8)) | (ST_VIDEO & COLOR1); - -// ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER - assign ACP_VCTR_d[7] = FALCON_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); - assign ACP_VCTR_d[6] = ST_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); - assign ACP_VCTR6_ena_ctrl = (FALCON_SHIFT_MODE_CS & (!nFB_WR)) | - (ST_SHIFT_MODE_CS & (!nFB_WR)) | (ACP_VCTR_CS & FB_B[3] & (!nFB_WR) & - FB_AD[0]); - assign FALCON_VIDEO = ACP_VCTR_q[7]; - assign FALCON_CLUT = FALCON_VIDEO & (!ACP_VIDEO_ON) & (!COLOR16); - assign ST_VIDEO = ACP_VCTR_q[6]; - assign ST_CLUT = ST_VIDEO & (!ACP_VIDEO_ON) & (!FALCON_CLUT) & (!COLOR1); - assign CCSEL0_clk_ctrl = PIXEL_CLK; - -// ONLY FOR INFORMATION - assign CCSEL_d = (3'b000 & {3{ST_CLUT}}) | (3'b001 & {3{FALCON_CLUT}}) | - (3'b100 & {3{ACP_CLUT}}) | (3'b101 & {3{COLOR16}}) | (3'b110 & - {3{COLOR24}}) | (3'b111 & {3{RAND_ON}}); - -// DIVERSE (VIDEO)-REGISTER ---------------------------- -// RANDFARBE - assign CCR0_clk_ctrl = MAIN_CLK; - -// $404/4 - assign CCR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h101; - assign CCR_d = FB_AD[23:0]; - assign CCR16_ena_ctrl = CCR_CS & FB_B[1] & (!nFB_WR); - assign CCR8_ena_ctrl = CCR_CS & FB_B[2] & (!nFB_WR); - assign CCR0_ena_ctrl = CCR_CS & FB_B[3] & (!nFB_WR); - -// SYS CTR -// $8006/2 - assign SYS_CTR_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C003; - assign SYS_CTR0_clk_ctrl = MAIN_CLK; - assign SYS_CTR_d = FB_AD[22:16]; - assign SYS_CTR0_ena_ctrl = SYS_CTR_CS & (!nFB_WR) & FB_B[3]; - assign BLITTER_ON = !SYS_CTR_q[3]; - -// VDL_LOF -// $820E/2 - assign VDL_LOF_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C107; - assign VDL_LOF0_clk_ctrl = MAIN_CLK; - assign VDL_LOF_d = FB_AD[31:16]; - assign VDL_LOF8_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[2]; - assign VDL_LOF0_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[3]; - -// VDL_LWD -// $8210/2 - assign VDL_LWD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C108; - assign VDL_LWD0_clk_ctrl = MAIN_CLK; - assign VDL_LWD_d = FB_AD[31:16]; - assign VDL_LWD8_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[0]; - assign VDL_LWD0_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[1]; - -// HORIZONTAL -// VDL_HHT -// $8282/2 - assign VDL_HHT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C141; - assign VDL_HHT0_clk_ctrl = MAIN_CLK; - assign VDL_HHT_d = FB_AD[27:16]; - assign VDL_HHT8_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HHT0_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HBE -// $8286/2 - assign VDL_HBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C143; - assign VDL_HBE0_clk_ctrl = MAIN_CLK; - assign VDL_HBE_d = FB_AD[27:16]; - assign VDL_HBE8_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HBE0_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HDB -// $8288/2 - assign VDL_HDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C144; - assign VDL_HDB0_clk_ctrl = MAIN_CLK; - assign VDL_HDB_d = FB_AD[27:16]; - assign VDL_HDB8_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HDB0_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_HDE -// $828A/2 - assign VDL_HDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C145; - assign VDL_HDE0_clk_ctrl = MAIN_CLK; - assign VDL_HDE_d = FB_AD[27:16]; - assign VDL_HDE8_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HDE0_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HBB -// $8284/2 - assign VDL_HBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C142; - assign VDL_HBB0_clk_ctrl = MAIN_CLK; - assign VDL_HBB_d = FB_AD[27:16]; - assign VDL_HBB8_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HBB0_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_HSS -// $828C/2 - assign VDL_HSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C146; - assign VDL_HSS0_clk_ctrl = MAIN_CLK; - assign VDL_HSS_d = FB_AD[27:16]; - assign VDL_HSS8_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HSS0_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[1]; - -// VERTIKAL -// VDL_VBE -// $82A6/2 - assign VDL_VBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C153; - assign VDL_VBE0_clk_ctrl = MAIN_CLK; - assign VDL_VBE_d = FB_AD[26:16]; - assign VDL_VBE8_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VBE0_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VDB -// $82A8/2 - assign VDL_VDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C154; - assign VDL_VDB0_clk_ctrl = MAIN_CLK; - assign VDL_VDB_d = FB_AD[26:16]; - assign VDL_VDB8_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VDB0_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VDE -// $82AA/2 - assign VDL_VDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C155; - assign VDL_VDE0_clk_ctrl = MAIN_CLK; - assign VDL_VDE_d = FB_AD[26:16]; - assign VDL_VDE8_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VDE0_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VBB -// $82A4/2 - assign VDL_VBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C152; - assign VDL_VBB0_clk_ctrl = MAIN_CLK; - assign VDL_VBB_d = FB_AD[26:16]; - assign VDL_VBB8_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VBB0_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VSS -// $82AC/2 - assign VDL_VSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C156; - assign VDL_VSS0_clk_ctrl = MAIN_CLK; - assign VDL_VSS_d = FB_AD[26:16]; - assign VDL_VSS8_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VSS0_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VFT -// $82A2/2 - assign VDL_VFT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C151; - assign VDL_VFT0_clk_ctrl = MAIN_CLK; - assign VDL_VFT_d = FB_AD[26:16]; - assign VDL_VFT8_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VFT0_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VCT -// $82C0/2 - assign VDL_VCT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C160; - assign VDL_VCT0_clk_ctrl = MAIN_CLK; - assign VDL_VCT_d = FB_AD[24:16]; - assign VDL_VCT8_ena = VDL_VCT_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VCT0_ena_ctrl = VDL_VCT_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VMD -// $82C2/2 - assign VDL_VMD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C161; - assign VDL_VMD0_clk_ctrl = MAIN_CLK; - assign VDL_VMD_d = FB_AD[19:16]; - assign VDL_VMD0_ena_ctrl = VDL_VMD_CS & (!nFB_WR) & FB_B[3]; - -// - REGISTER OUT - assign u0_data = ({16{ST_SHIFT_MODE_CS}} & {6'b00_0000, ST_SHIFT_MODE_q, - 8'b0000_0000}) | ({16{FALCON_SHIFT_MODE_CS}} & {5'b0_0000, - FALCON_SHIFT_MODE_q}) | ({16{SYS_CTR_CS}} & {9'b1_0000_0000, - SYS_CTR_q[6:4], !BLITTER_RUN, SYS_CTR_q[2:0]}) | ({16{VDL_LOF_CS}} & - VDL_LOF_q) | ({16{VDL_LWD_CS}} & VDL_LWD_q) | ({16{VDL_HBE_CS}} & - {4'b0000, VDL_HBE_q}) | ({16{VDL_HDB_CS}} & {4'b0000, VDL_HDB_q}) | - ({16{VDL_HDE_CS}} & {4'b0000, VDL_HDE_q}) | ({16{VDL_HBB_CS}} & - {4'b0000, VDL_HBB_q}) | ({16{VDL_HSS_CS}} & {4'b0000, VDL_HSS_q}) | - ({16{VDL_HHT_CS}} & {4'b0000, VDL_HHT_q}) | ({16{VDL_VBE_CS}} & - {5'b0_0000, VDL_VBE_q}) | ({16{VDL_VDB_CS}} & {5'b0_0000, VDL_VDB_q}) - | ({16{VDL_VDE_CS}} & {5'b0_0000, VDL_VDE_q}) | ({16{VDL_VBB_CS}} & - {5'b0_0000, VDL_VBB_q}) | ({16{VDL_VSS_CS}} & {5'b0_0000, VDL_VSS_q}) - | ({16{VDL_VFT_CS}} & {5'b0_0000, VDL_VFT_q}) | ({16{VDL_VCT_CS}} & - {7'b000_0000, VDL_VCT_q}) | ({16{VDL_VMD_CS}} & {12'b0000_0000_0000, - VDL_VMD_q}) | ({16{ACP_VCTR_CS}} & ACP_VCTR_q[31:16]) | - ({16{ATARI_HH_CS}} & ATARI_HH_q[31:16]) | ({16{ATARI_VH_CS}} & - ATARI_VH_q[31:16]) | ({16{ATARI_HL_CS}} & ATARI_HL_q[31:16]) | - ({16{ATARI_VL_CS}} & ATARI_VL_q[31:16]) | ({16{CCR_CS}} & - {8'b0000_0000, CCR_q[23:16]}) | ({16{VIDEO_PLL_CONFIG_CS}} & - {7'b000_0000, VR_DOUT_q}) | ({16{VIDEO_PLL_RECONFIG_CS}} & {VR_BUSY, - 4'b0000, VR_WR_q, VR_RD, VIDEO_RECONFIG_q, 8'b1111_1010}); - assign u0_enabledt = (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); - //GE assign FB_AD[31:16] = u0_tridata; - assign FB_AD[31:16] = (u0_enabledt ? u0_data : 16'bzzzz_zzzz_zzzz_zzzz); - assign u1_data = ({16{ACP_VCTR_CS}} & ACP_VCTR_q[15:0]) | ({16{ATARI_HH_CS}} - & ATARI_HH_q[15:0]) | ({16{ATARI_VH_CS}} & ATARI_VH_q[15:0]) | - ({16{ATARI_HL_CS}} & ATARI_HL_q[15:0]) | ({16{ATARI_VL_CS}} & - ATARI_VL_q[15:0]) | ({16{CCR_CS}} & CCR_q[15:0]); - assign u1_enabledt = (ACP_VCTR_CS | CCR_CS | ATARI_HH_CS | ATARI_VH_CS | - ATARI_HL_CS | ATARI_VL_CS) & (!nFB_OE); - //GE assign FB_AD[15:0] = u1_tridata; - assign FB_AD[15:0] = (u1_enabledt ? u1_data : 16'bzzzz_zzzz_zzzz_zzzz); - - assign VIDEO_MOD_TA = CLUT_TA_q | 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 - assign CLK17M_clk = CLK33M; - assign CLK17M_d = !CLK17M_q; - assign CLK13M_clk = CLK25M; - assign CLK13M_d = !CLK13M_q; - assign PIXEL_CLK = (CLK13M_q & (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & - ((VDL_VMD_q[2] & VDL_VCT_q[2]) | VDL_VCT_q[0])) | (CLK17M_q & - (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & ((VDL_VMD_q[2] & - (!VDL_VCT_q[2])) | VDL_VCT_q[0])) | (CLK25M & (!ACP_VIDEO_ON) & - (FALCON_VIDEO | ST_VIDEO) & (!VDL_VMD_q[2]) & VDL_VCT_q[2] & - (!VDL_VCT_q[0])) | (CLK33M & (!ACP_VIDEO_ON) & (FALCON_VIDEO | - ST_VIDEO) & (!VDL_VMD_q[2]) & (!VDL_VCT_q[2]) & (!VDL_VCT_q[0])) | - (CLK25M & ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b00) | (CLK33M & - ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b01) | (CLK_VIDEO & ACP_VIDEO_ON & - ACP_VCTR_q[9]); - -// ------------------------------------------------------------ -// HORIZONTALE SYNC LÄNGE in PIXEL_CLK -// -------------------------------------------------------------- - assign HSY_LEN0_clk_ctrl = MAIN_CLK; - -// hsync puls length in pixeln=frequenz/ = 500ns - assign HSY_LEN_d = (8'b0000_1110 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | - {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}}) | - {8{VDL_VCT_q[0]}})) | (8'b0001_0000 & {8{!ACP_VIDEO_ON}} & - ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & - {8{!VDL_VCT_q[2]}}) | {8{VDL_VCT_q[0]}})) | (8'b0001_1100 & - {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & - {8{!VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}} & {8{!VDL_VCT_q[0]}}) | - (8'b0010_0000 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | - {8{ST_VIDEO}}) & {8{!VDL_VMD_q[2]}} & {8{!VDL_VCT_q[2]}} & - {8{!VDL_VCT_q[0]}}) | (8'b0001_1100 & {8{ACP_VIDEO_ON}} & - {8{ACP_VCTR_q[9:8] == 2'b00}}) | (8'b0010_0000 & {8{ACP_VIDEO_ON}} & - {8{ACP_VCTR_q[9:8] == 2'b01}}) | ((8'b0001_0000 + {1'b0, - VR_FRQ_q[7:1]}) & {8{ACP_VIDEO_ON}} & {8{ACP_VCTR_q[9]}}); - -// MULTIPLIKATIONS FAKTOR - assign MULF = (6'b00_0010 & {6{!ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | - (6'b00_0100 & {6{!ST_VIDEO}} & {6{!VDL_VMD_q[2]}}) | (6'b01_0000 & - {6{ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | (6'b10_0000 & {6{ST_VIDEO}} & - {6{!VDL_VMD_q[2]}}); - -// BREITE IN PIXELN - assign HDIS_LEN = (12'b0001_0100_0000 & {12{VDL_VMD_q[2]}}) | - (12'b0010_1000_0000 & {12{!VDL_VMD_q[2]}}); - -// DOPPELZEILENMODUS - assign DOP_ZEI_clk = MAIN_CLK; - -// ZEILENVERDOPPELUNG EIN AUS - assign DOP_ZEI_d = VDL_VMD_q[0] & ST_VIDEO; - assign INTER_ZEI_clk = PIXEL_CLK; - -// EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC -// EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC - assign INTER_ZEI_d = (DOP_ZEI_q & VVCNT_q[0] != VDIS_START[0] & VVCNT_q != - 11'b000_0000_0000 & VHCNT_q < (HDIS_END - 12'b0000_0000_0001)) | - (DOP_ZEI_q & VVCNT_q[0] == VDIS_START[0] & VVCNT_q != - 11'b000_0000_0000 & VHCNT_q > (HDIS_END - 12'b0000_0000_0010)); - assign DOP_FIFO_CLR_clk = PIXEL_CLK; - -// DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START - assign DOP_FIFO_CLR_d = (INTER_ZEI_q & HSYNC_START_q) | SYNC_PIX_q; - - - wire [11:0] HTF; - wire [11:0] HSF; -// GE - // assign RAND_LINKS_FULL = VDL_HBE_q * {7'b000_0000, MULF[5:1]}; - assign RAND_LINKS_FULL = ({12{MULF[1]}} & {12'd0, VDL_HBE_q}) - | ({12{MULF[2]}} & {11'd0, VDL_HBE_q, 1'd0}) - | ({12{MULF[3]}} & {10'd0, VDL_HBE_q, 2'd0}) - | ({12{MULF[4]}} & {9'd0, VDL_HBE_q, 3'd0}) - | ({12{MULF[5]}} & {8'd0, VDL_HBE_q, 4'd0}); - - -// GE - //assign HS_START_FULL = ((VDL_HHT_q + 24'h1) + VDL_HSS_q) * {7'b000_0000, - // MULF[5:1]}; - assign HSF = ((VDL_HHT_q + 12'h1) + VDL_HSS_q); - assign HS_START_FULL = ({12{MULF[1]}} & {12'd0, HSF}) - | ({12{MULF[2]}} & {11'd0, HSF, 1'd0}) - | ({12{MULF[3]}} & {10'd0, HSF, 2'd0}) - | ({12{MULF[4]}} & {9'd0, HSF, 3'd0}) - | ({12{MULF[5]}} & {8'd0, HSF, 4'd0}); - -// GE - // assign H_TOTAL_FULL = (VDL_HHT_q + 24'h2) * {6'b00_0000, MULF}; - assign HTF = (VDL_HHT_q + 12'h2); - assign H_TOTAL_FULL = ({12{MULF[0]}} & {12'd0, HTF}) - | ({12{MULF[1]}} & {11'd0, HTF, 1'd0}) - | ({12{MULF[2]}} & {10'd0, HTF, 2'd0}) - | ({12{MULF[3]}} & {9'd0, HTF, 3'd0}) - | ({12{MULF[4]}} & {8'd0, HTF, 4'd0}) - | ({12{MULF[5]}} & {7'd0, HTF, 5'd0}); - - assign RAND_LINKS = (VDL_HBE_q & {12{ACP_VIDEO_ON}}) | (12'b0000_0001_0101 & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (12'b0000_0010_1010 & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (RAND_LINKS_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign HDIS_START = (VDL_HDB_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + - 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); - assign HDIS_END = (VDL_HDE_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + - HDIS_LEN) & {12{!ACP_VIDEO_ON}}); - assign RAND_RECHTS = (VDL_HBB_q & {12{ACP_VIDEO_ON}}) | ((HDIS_END + - 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); - assign HS_START = (VDL_HSS_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[11:0] & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (ATARI_HH_q[11:0] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (HS_START_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign H_TOTAL = (VDL_HHT_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[27:16] & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (ATARI_HH_q[27:16] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (H_TOTAL_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign RAND_OBEN = (VDL_VBE_q & {11{ACP_VIDEO_ON}}) | (11'b000_0001_1111 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | ({1'b0, VDL_VBE_q[10:1]} & - {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); - assign VDIS_START = (VDL_VDB_q & {11{ACP_VIDEO_ON}}) | (11'b000_0010_0000 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | (({1'b0, VDL_VDB_q[10:1]} + - 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); - assign VDIS_END = (VDL_VDE_q & {11{ACP_VIDEO_ON}}) | (11'b001_1010_1111 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{ST_VIDEO}}) | - (11'b001_1111_1111 & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!ST_VIDEO}}) | ({1'b0, VDL_VDE_q[10:1]} & {11{!ACP_VIDEO_ON}} & - {11{!ATARI_SYNC}}); - assign RAND_UNTEN = (VDL_VBB_q & {11{ACP_VIDEO_ON}}) | ((VDIS_END + - 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | - (({1'b0, VDL_VBB_q[10:1]} + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & - {11{!ATARI_SYNC}}); - assign VS_START = (VDL_VSS_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[10:0] & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | - (ATARI_VH_q[10:0] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VSS_q[10:1]} & {11{!ACP_VIDEO_ON}} - & {11{!ATARI_SYNC}}); - assign V_TOTAL = (VDL_VFT_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[26:16] & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | - (ATARI_VH_q[26:16] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VFT_q[10:1]} & {11{!ACP_VIDEO_ON}} - & {11{!ATARI_SYNC}}); - -// ZÄHLER - assign LAST_clk = PIXEL_CLK; - assign LAST_d = VHCNT_q == (H_TOTAL - 12'b0000_0000_0010); - assign VHCNT0_clk_ctrl = PIXEL_CLK; - assign VHCNT_d = (VHCNT_q + 12'b0000_0000_0001) & {12{!LAST_q}}; - assign VVCNT0_clk_ctrl = PIXEL_CLK; - assign VVCNT0_ena_ctrl = LAST_q; - assign VVCNT_d = (VVCNT_q + 11'b000_0000_0001) & {11{VVCNT_q != (V_TOTAL - - 11'b000_0000_0001)}}; - -// DISPLAY ON OFF - assign DPO_ZL_clk = PIXEL_CLK; - -// 1 ZEILE DAVOR ON OFF - assign DPO_ZL_d = VVCNT_q > (RAND_OBEN - 11'b000_0000_0001) & VVCNT_q < - (RAND_UNTEN - 11'b000_0000_0001); - -// AM ZEILENENDE ÜBERNEHMEN - assign DPO_ZL_ena = LAST_q; - assign DPO_ON_clk = PIXEL_CLK; - -// BESSER EINZELN WEGEN TIMING - assign DPO_ON_d = VHCNT_q == RAND_LINKS; - assign DPO_OFF_clk = PIXEL_CLK; - assign DPO_OFF_d = VHCNT_q == (RAND_RECHTS - 12'b0000_0000_0001); - assign DISP_ON_clk = PIXEL_CLK; - assign DISP_ON_d = (DISP_ON_q & (!DPO_OFF_q)) | (DPO_ON_q & DPO_ZL_q); - -// DATENTRANSFER ON OFF - assign VDO_ON_clk = PIXEL_CLK; - -// BESSER EINZELN WEGEN TIMING - assign VDO_ON_d = VHCNT_q == (HDIS_START - 12'b0000_0000_0001); - assign VDO_OFF_clk = PIXEL_CLK; - assign VDO_OFF_d = VHCNT_q == HDIS_END; - assign VDO_ZL_clk = PIXEL_CLK; - -// AM ZEILENENDE ÜBERNEHMEN - assign VDO_ZL_ena = LAST_q; - -// 1 ZEILE DAVOR ON OFF - assign VDO_ZL_d = VVCNT_q >= (VDIS_START - 11'b000_0000_0001) & VVCNT_q < - VDIS_END; - assign VDTRON_clk = PIXEL_CLK; - assign VDTRON_d = (VDTRON_q & (!VDO_OFF_q)) | (VDO_ON_q & VDO_ZL_q); - -// VERZÖGERUNG UND SYNC - assign HSYNC_START_clk = PIXEL_CLK; - assign HSYNC_START_d = VHCNT_q == (HS_START - 12'b0000_0000_0011); - assign HSYNC_I0_clk_ctrl = PIXEL_CLK; - assign HSYNC_I_d = (HSY_LEN_q & {8{HSYNC_START_q}}) | ((HSYNC_I_q - - 8'b0000_0001) & {8{!HSYNC_START_q}} & {8{HSYNC_I_q != 8'b0000_0000}}); - assign VSYNC_START_clk = PIXEL_CLK; - assign VSYNC_START_ena = LAST_q; - -// start am ende der Zeile vor dem vsync - assign VSYNC_START_d = VVCNT_q == (VS_START - 11'b000_0000_0011); - assign VSYNC_I0_clk_ctrl = PIXEL_CLK; - -// start am ende der Zeile vor dem vsync - assign VSYNC_I0_ena_ctrl = LAST_q; - -// 3 zeilen vsync length -// runterzählen bis 0 - assign VSYNC_I_d = (3'b011 & {3{VSYNC_START_q}}) | ((VSYNC_I_q - 3'b001) & - {3{!VSYNC_START_q}} & {3{VSYNC_I_q != 3'b000}}); - assign VERZ2_0_clk_ctrl = PIXEL_CLK; - assign VERZ1_0_clk_ctrl = PIXEL_CLK; - assign VERZ0_0_clk_ctrl = PIXEL_CLK; - assign {VERZ2__d[1], VERZ1__d[1], VERZ0__d[1]} = {VERZ2__q[0], VERZ1__q[0], - VERZ0__q[0]}; - assign {VERZ2__d[2], VERZ1__d[2], VERZ0__d[2]} = {VERZ2__q[1], VERZ1__q[1], - VERZ0__q[1]}; - assign {VERZ2__d[3], VERZ1__d[3], VERZ0__d[3]} = {VERZ2__q[2], VERZ1__q[2], - VERZ0__q[2]}; - assign {VERZ2__d[4], VERZ1__d[4], VERZ0__d[4]} = {VERZ2__q[3], VERZ1__q[3], - VERZ0__q[3]}; - assign {VERZ2__d[5], VERZ1__d[5], VERZ0__d[5]} = {VERZ2__q[4], VERZ1__q[4], - VERZ0__q[4]}; - assign {VERZ2__d[6], VERZ1__d[6], VERZ0__d[6]} = {VERZ2__q[5], VERZ1__q[5], - VERZ0__q[5]}; - assign {VERZ2__d[7], VERZ1__d[7], VERZ0__d[7]} = {VERZ2__q[6], VERZ1__q[6], - VERZ0__q[6]}; - assign {VERZ2__d[8], VERZ1__d[8], VERZ0__d[8]} = {VERZ2__q[7], VERZ1__q[7], - VERZ0__q[7]}; - assign {VERZ2__d[9], VERZ1__d[9], VERZ0__d[9]} = {VERZ2__q[8], VERZ1__q[8], - VERZ0__q[8]}; - assign VERZ0__d[0] = DISP_ON_q; - assign VERZ1_0_d_1 = HSYNC_I_q != 8'b0000_0000; - -// NUR MÖGLICH WENN BEIDE - assign VERZ1_0_d_2 = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[6])) & HSYNC_I_q != - 8'b0000_0000) | (ACP_VCTR_q[15] & VDL_VCT_q[6] & HSYNC_I_q == - 8'b0000_0000); - -// NUR MÖGLICH WENN BEIDE - assign VERZ2__d[0] = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[5])) & VSYNC_I_q != - 3'b000) | (ACP_VCTR_q[15] & VDL_VCT_q[5] & VSYNC_I_q == 3'b000); - assign nBLANK_clk = PIXEL_CLK; - assign nBLANK_d = VERZ0__q[8]; - assign HSYNC_clk = PIXEL_CLK; - assign HSYNC_d = VERZ1__q[9]; - assign VSYNC_clk = PIXEL_CLK; - assign VSYNC_d = VERZ2__q[9]; - assign nSYNC = gnd; - -// RANDFARBE MACHEN ------------------------------------ - assign RAND0_clk_ctrl = PIXEL_CLK; - assign RAND_d[0] = DISP_ON_q & (!VDTRON_q) & ACP_VCTR_q[25]; - assign RAND_d[1] = RAND_q[0]; - assign RAND_d[2] = RAND_q[1]; - assign RAND_d[3] = RAND_q[2]; - assign RAND_d[4] = RAND_q[3]; - assign RAND_d[5] = RAND_q[4]; - assign RAND_d[6] = RAND_q[5]; - assign RAND_ON = RAND_q[6]; - -// -------------------------------------------------------- - assign CLR_FIFO_clk = PIXEL_CLK; - assign CLR_FIFO_ena = LAST_q; - -// IN LETZTER ZEILE LÖSCHEN - assign CLR_FIFO_d = VVCNT_q == (V_TOTAL - 11'b000_0000_0010); - assign START_ZEILE_clk = PIXEL_CLK; - assign START_ZEILE_ena = LAST_q; - -// ZEILE 1 - assign START_ZEILE_d = VVCNT_q == 11'b000_0000_0000; - assign SYNC_PIX_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX_d = VHCNT_q == 12'b0000_0000_0011 & START_ZEILE_q; - assign SYNC_PIX1_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX1_d = VHCNT_q == 12'b0000_0000_0101 & START_ZEILE_q; - assign SYNC_PIX2_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX2_d = VHCNT_q == 12'b0000_0000_0111 & START_ZEILE_q; - assign SUB_PIXEL_CNT0_clk_ctrl = PIXEL_CLK; - assign SUB_PIXEL_CNT0_ena_ctrl = VDTRON_q | SYNC_PIX_q; - -// count up if display on sonst clear bei sync pix - assign SUB_PIXEL_CNT_d = (SUB_PIXEL_CNT_q + 7'b000_0001) & {7{!SYNC_PIX_q}}; - assign FIFO_RDE_clk = PIXEL_CLK; - -// 3 CLOCK ZUSÄTZLICH FÜR FIFO SHIFT DATAOUT UND SHIFT RIGTH POSITION - assign FIFO_RDE_d = (((SUB_PIXEL_CNT_q == 7'b000_0001 & COLOR1) | - (SUB_PIXEL_CNT_q[5:0] == 6'b00_0001 & COLOR2) | (SUB_PIXEL_CNT_q[4:0] - == 5'b0_0001 & COLOR4) | (SUB_PIXEL_CNT_q[3:0] == 4'b0001 & COLOR8) | - (SUB_PIXEL_CNT_q[2:0] == 3'b001 & COLOR16) | (SUB_PIXEL_CNT_q[1:0] == - 2'b01 & COLOR24)) & VDTRON_q) | SYNC_PIX_q | SYNC_PIX1_q | - SYNC_PIX2_q; - assign CLUT_MUX_ADR0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV1_0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV0_0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV0__d = SUB_PIXEL_CNT_q[3:0]; - assign CLUT_MUX_AV1__d = CLUT_MUX_AV0__q; - assign CLUT_MUX_ADR_d = CLUT_MUX_AV1__q; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign COLOR16 = COLOR16_1 | COLOR16_2; - assign VERZ1__d[0] = VERZ1_0_d_1 | VERZ1_0_d_2; - assign COLOR4 = COLOR4_1 | COLOR4_2; - assign COLOR1 = COLOR1_1 | COLOR1_2 | COLOR1_3; - assign COLOR8 = COLOR8_1 | COLOR8_2; - -// Define power signal(s) - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/Video.bdf b/FPGA_by_Gregory_Estrade/Video/Video.bdf deleted file mode 100644 index 6210cb7..0000000 --- a/FPGA_by_Gregory_Estrade/Video/Video.bdf +++ /dev/null @@ -1,10651 +0,0 @@ -/* -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 "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\n2\npaper_size\n9\npaper_source\n15\nfit_page_wide\n1\nfit_page_tall\n1\n") -) -(pin - (input) - (rect 184 1192 352 1208) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "FB_ADR[31..0]" (rect 9 0 103 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1248 352 1264) - (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) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1352 352 1368) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "nFB_CS1" (rect 9 0 71 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1384 352 1400) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "nFB_CS2" (rect 9 0 71 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1416 352 1432) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "nFB_CS3" (rect 9 0 71 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1448 352 1464) - (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) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1480 352 1496) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "FB_SIZE0" (rect 9 0 73 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1512 352 1528) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "FB_SIZE1" (rect 9 0 73 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1544 352 1560) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "nRSTO" (rect 9 0 56 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1608 352 1624) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "nFB_OE" (rect 9 0 63 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1736 352 1752) - (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) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 184 1312 352 1328) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "DDRCLK[3..0]" (rect 9 0 99 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 176 1280 344 1296) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "DDR_SYNC_66M" (rect 9 0 123 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 1344 2176 1512 2192) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "CLK33M" (rect 9 0 64 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 1344 2200 1512 2216) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "CLK25M" (rect 9 0 64 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 1344 2152 1512 2168) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "CLK_VIDEO" (rect 5 0 84 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 1344 2128 1512 2144) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "VR_D[8..0]" (rect 5 0 73 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (input) - (rect 1344 2112 1512 2128) - (text "INPUT" (rect 133 0 169 13)(font "Arial" (font_size 6))) - (text "VR_BUSY" (rect 5 0 69 15)(font "Arial" )) - (pt 168 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (output) - (rect 472 1200 648 1216) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1232 648 1248) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1264 648 1280) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1408 648 1424) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nBLANK" (rect 90 0 144 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1480 648 1496) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1512 648 1528) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nVWE" (rect 90 0 128 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1544 648 1560) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nVCAS" (rect 90 0 134 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1576 648 1592) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nVRAS" (rect 90 0 134 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1608 648 1624) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nVCS" (rect 90 0 126 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1704 648 1720) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1736 648 1752) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1768 648 1784) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VCKE" (rect 90 0 127 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1288 648 1304) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VSYNC" (rect 90 0 137 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1336 648 1352) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "HSYNC" (rect 90 0 139 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1384 648 1400) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "nSYNC" (rect 90 0 137 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1800 648 1816) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VIDEO_TA" (rect 90 0 157 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1448 648 1464) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "PIXEL_CLK" (rect 90 0 165 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 472 1656 648 1672) - (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) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 2144 1696 2364 1712) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VIDEO_RECONFIG" (rect 90 0 215 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 2112 1792 2288 1808) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VR_WR" (rect 90 0 140 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (output) - (rect 2112 1808 2288 1824) - (text "OUTPUT" (rect 1 0 51 13)(font "Arial" (font_size 6))) - (text "VR_RD" (rect 90 0 138 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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)) - ) -) -(pin - (bidir) - (rect 184 1640 360 1656) - (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) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (bidir) - (rect 184 1672 360 1688) - (text "BIDIR" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "FB_AD[31..0]" (rect 90 0 173 15)(font "Arial" )) - (pt 0 8) - (connected_pin (pt 0 0)) - (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))) -) -(pin - (bidir) - (rect 184 1704 360 1720) - (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) - (connected_pin (pt 0 0)) - (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))) -) -(symbol - (rect 920 1616 1064 1712) - (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst13" (rect 8 80 48 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 920 1760 1064 1856) - (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst14" (rect 8 80 48 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 920 1896 1064 1992) - (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst15" (rect 8 80 48 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 920 2032 1064 2128) - (text "lpm_ff0" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst16" (rect 8 80 48 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 2392 2040 2496 2184) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst40" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2392 1880 2496 2024) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst41" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2392 1720 2496 1864) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst42" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2392 1560 2496 1704) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst43" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2392 1400 2496 1544) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst44" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2392 1240 2496 1384) - (text "MUX41" (rect 29 -1 88 19)(font "Courier New" (font_size 10)(bold))) - (text "inst45" (rect 3 133 36 146)(font "Arial" (font_size 6))) - (port - (pt 0 120) - (input) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (text "S0" (rect 20 116 36 132)(font "Courier New" (bold))) - (line (pt 0 120)(pt 16 120)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (text "D2" (rect 20 68 36 84)(font "Courier New" (bold))) - (line (pt 0 72)(pt 16 72)(line_width 1)) - ) - (port - (pt 0 104) - (input) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (text "S1" (rect 20 100 36 116)(font "Courier New" (bold))) - (line (pt 0 104)(pt 16 104)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (text "D3" (rect 20 84 36 100)(font "Courier New" (bold))) - (line (pt 0 88)(pt 16 88)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (text "D0" (rect 20 36 36 52)(font "Courier New" (bold))) - (line (pt 0 40)(pt 16 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (text "INH" (rect 20 20 44 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 16 24)(line_width 1)) - ) - (port - (pt 0 56) - (input) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (text "D1" (rect 20 52 36 68)(font "Courier New" (bold))) - (line (pt 0 56)(pt 16 56)(line_width 1)) - ) - (port - (pt 104 72) - (output) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (text "Q" (rect 81 68 89 84)(font "Courier New" (bold))) - (line (pt 88 72)(pt 104 72)(line_width 1)) - ) - (drawing - (line (pt 16 128)(pt 16 16)(line_width 1)) - (line (pt 88 128)(pt 88 16)(line_width 1)) - (line (pt 16 128)(pt 88 128)(line_width 1)) - (line (pt 16 16)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 2632 1216 2776 1344) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr0" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 1376 2776 1504) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr1" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 1536 2776 1664) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr2" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 1696 2776 1824) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr3" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 1856 2776 1984) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr4" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 2016 2776 2144) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr5" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 2176 2776 2304) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr6" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 2632 2336 2776 2464) - (text "lpm_shiftreg0" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "sr7" (rect 8 112 29 127)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "load" (rect 0 0 28 16)(font "Arial" (font_size 8))) - (text "load" (rect 20 26 48 42)(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 73 16)(font "Arial" (font_size 8))) - (text "data[15..0]" (rect 20 42 93 58)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 26 74 62 90)(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 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 90 60 106)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 66 138 82)(font "Arial" (font_size 8))) - (line (pt 144 72)(pt 128 72)(line_width 1)) - ) - (drawing - (text "left shift" (rect 92 17 141 32)(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)) - ) -) -(symbol - (rect 3296 888 3328 920) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst50" (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 3840 784 3920 824) - (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst51" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[2..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "3" (rect 63 25 71 40)(font "Arial" )) - (text "3" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3712 880 3808 928) - (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst54" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "5" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3296 1096 3328 1128) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst55" (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 3840 992 3920 1032) - (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst56" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[2..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "3" (rect 63 25 71 40)(font "Arial" )) - (text "3" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3720 1088 3816 1136) - (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst59" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "5" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3296 1528 3328 1560) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst60" (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 3840 1200 3920 1240) - (text "lpm_bustri1" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst61" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[2..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[2..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "3" (rect 63 25 71 40)(font "Arial" )) - (text "3" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3712 1296 3808 1344) - (text "lpm_constant0" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst64" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[4..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[4..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "5" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3840 1424 3920 1464) - (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst66" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[5..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "6" (rect 63 25 71 40)(font "Arial" )) - (text "6" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3296 1736 3328 1768) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst68" (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 3840 1632 3920 1672) - (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst70" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[5..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "6" (rect 63 25 71 40)(font "Arial" )) - (text "6" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3296 1944 3328 1976) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst72" (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 3840 1840 3920 1880) - (text "lpm_bustri3" (rect 7 1 104 20)(font "Arial" (font_size 10))) - (text "inst74" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[5..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[5..0]" (rect 84 -30 161 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 80 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "6" (rect 63 25 71 40)(font "Arial" )) - (text "6" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3296 1304 3328 1336) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst78" (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 3008 1432 3072 1480) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst29" (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)) - ) -) -(symbol - (rect 3008 1736 3072 1784) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst30" (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)) - ) -) -(symbol - (rect 3024 2080 3088 2128) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst31" (rect 3 37 43 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 2904 1912 2968 1960) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst32" (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)) - ) -) -(symbol - (rect 2904 2072 2968 2120) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst33" (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)) - ) -) -(symbol - (rect 2904 2232 2968 2280) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst34" (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)) - ) -) -(symbol - (rect 2904 2392 2968 2440) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst35" (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)) - ) -) -(symbol - (rect 3296 2592 3328 2624) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst73" (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 3160 3064 3296 3144) - (text "lpm_mux4" (rect 42 62 126 81)(font "Arial" (font_size 10))) - (text "inst81" (rect 8 4 48 19)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data1x[6..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data1x[6..0]" (rect 4 39 85 55)(font "Arial" (font_size 8))) - (line (pt 0 40)(pt 64 40)(line_width 3)) - ) - (port - (pt 0 24) - (input) - (text "data0x[6..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data0x[6..0]" (rect 4 23 85 39)(font "Arial" (font_size 8))) - (line (pt 0 24)(pt 64 24)(line_width 3)) - ) - (port - (pt 72 0) - (input) - (text "sel" (rect 0 0 20 16)(font "Arial" (font_size 8))) - (text "sel" (rect 76 -1 96 15)(font "Arial" (font_size 8))) - (line (pt 72 0)(pt 72 12)(line_width 1)) - ) - (port - (pt 136 32) - (output) - (text "result[6..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[6..0]" (rect 82 31 155 47)(font "Arial" (font_size 8))) - (line (pt 136 32)(pt 80 32)(line_width 3)) - ) - (drawing - (line (pt 64 56)(pt 64 8)(line_width 1)) - (line (pt 80 48)(pt 80 16)(line_width 1)) - (line (pt 64 56)(pt 80 48)(line_width 1)) - (line (pt 64 8)(pt 80 16)(line_width 1)) - ) - (flipx) -) -(symbol - (rect 2976 3080 3072 3128) - (text "lpm_constant3" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst82" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[6..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[6..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "7" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3448 776 3704 984) - (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ST_CLUT_RED" (rect 8 192 110 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[2..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[3..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[2..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[3..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[2..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 984 3704 1192) - (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ST_CLUT_GREEN" (rect 8 192 130 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[2..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[3..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[2..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[3..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[2..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 1360 2992 1408 3024) - (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) - (text "inst84" (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 14 16)(line_width 1)) - ) - (port - (pt 24 0) - (input) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (line (pt 24 12)(pt 24 0)(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 25)(pt 14 7)(line_width 1)) - (line (pt 14 25)(pt 32 16)(line_width 1)) - (line (pt 14 7)(pt 32 16)(line_width 1)) - ) -) -(symbol - (rect 1360 2936 1408 2968) - (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) - (text "inst85" (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 14 16)(line_width 1)) - ) - (port - (pt 24 0) - (input) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (line (pt 24 12)(pt 24 0)(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 25)(pt 14 7)(line_width 1)) - (line (pt 14 25)(pt 32 16)(line_width 1)) - (line (pt 14 7)(pt 32 16)(line_width 1)) - ) -) -(symbol - (rect 1360 2888 1408 2920) - (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) - (text "inst86" (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 14 16)(line_width 1)) - ) - (port - (pt 24 0) - (input) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (line (pt 24 12)(pt 24 0)(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 25)(pt 14 7)(line_width 1)) - (line (pt 14 25)(pt 32 16)(line_width 1)) - (line (pt 14 7)(pt 32 16)(line_width 1)) - ) -) -(symbol - (rect 1360 2840 1408 2872) - (text "TRI" (rect 1 0 21 13)(font "Arial" (font_size 6))) - (text "inst87" (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 14 16)(line_width 1)) - ) - (port - (pt 24 0) - (input) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (text "OE" (rect 26 0 42 16)(font "Courier New" (bold))(invisible)) - (line (pt 24 12)(pt 24 0)(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 25)(pt 14 7)(line_width 1)) - (line (pt 14 25)(pt 32 16)(line_width 1)) - (line (pt 14 7)(pt 32 16)(line_width 1)) - ) -) -(symbol - (rect 2272 1248 2304 1280) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst6" (rect -1 3 14 34)(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 2272 1408 2304 1440) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst8" (rect -1 3 14 34)(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 2272 1568 2304 1600) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst28" (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 2272 1728 2304 1760) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst38" (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 2272 1888 2304 1920) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst48" (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 2272 2048 2304 2080) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst96" (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 3192 2920 3272 3000) - (text "lpm_mux3" (rect 10 2 94 21)(font "Arial" (font_size 10))) - (text "inst102" (rect 8 64 56 79)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data1" (rect 0 0 37 16)(font "Arial" (font_size 8))) - (text "data1" (rect 4 27 41 43)(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 37 16)(font "Arial" (font_size 8))) - (text "data0" (rect 4 43 41 59)(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 20 16)(font "Arial" (font_size 8))) - (text "sel" (rect 44 67 64 83)(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 37 16)(font "Arial" (font_size 8))) - (text "result" (rect 50 35 87 51)(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)) - ) -) -(symbol - (rect 3032 2400 3096 2448) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst79" (rect 3 37 43 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 3016 1920 3080 1968) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst103" (rect 3 37 51 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 3024 2240 3088 2288) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst104" (rect 3 37 51 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 2912 1664 2976 1712) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst105" (rect 3 37 51 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 3008 1592 3072 1640) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst106" (rect 3 37 51 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)) - ) -) -(symbol - (rect 2920 1472 2984 1520) - (text "OR3" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst107" (rect 3 37 52 53)(font "Arial" (font_size 8))) - (port - (pt 0 24) - (input) - (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) - (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) - (line (pt 0 24)(pt 18 24)(line_width 1)) - ) - (port - (pt 0 32) - (input) - (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) - (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) - (line (pt 0 32)(pt 16 32)(line_width 1)) - ) - (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 16 16)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) - (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) - (line (pt 49 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 13)(pt 25 13)(line_width 1)) - (line (pt 14 36)(pt 25 36)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 808 1168 920 1208) - (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) - (text "inst108" (rect 69 24 117 39)(font "Arial" )) - (port - (pt 72 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) - (line (pt 72 40)(pt 72 28)(line_width 1)) - ) - (port - (pt 112 24) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) - (line (pt 112 24)(pt 80 24)(line_width 3)) - ) - (port - (pt 0 24) - (bidir) - (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) - (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) - (line (pt 0 24)(pt 64 24)(line_width 3)) - ) - (drawing - (text "32" (rect 24 25 40 40)(font "Arial" )) - (text "32" (rect 88 25 104 40)(font "Arial" )) - (line (pt 80 16)(pt 64 24)(line_width 1)) - (line (pt 64 24)(pt 80 32)(line_width 1)) - (line (pt 80 32)(pt 80 16)(line_width 1)) - (line (pt 40 28)(pt 32 20)(line_width 1)) - (line (pt 104 28)(pt 96 20)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 808 1288 920 1328) - (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) - (text "inst109" (rect 69 24 117 39)(font "Arial" )) - (port - (pt 72 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) - (line (pt 72 40)(pt 72 28)(line_width 1)) - ) - (port - (pt 112 24) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) - (line (pt 112 24)(pt 80 24)(line_width 3)) - ) - (port - (pt 0 24) - (bidir) - (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) - (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) - (line (pt 0 24)(pt 64 24)(line_width 3)) - ) - (drawing - (text "32" (rect 24 25 40 40)(font "Arial" )) - (text "32" (rect 88 25 104 40)(font "Arial" )) - (line (pt 80 16)(pt 64 24)(line_width 1)) - (line (pt 64 24)(pt 80 32)(line_width 1)) - (line (pt 80 32)(pt 80 16)(line_width 1)) - (line (pt 40 28)(pt 32 20)(line_width 1)) - (line (pt 104 28)(pt 96 20)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 808 1408 920 1448) - (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) - (text "inst110" (rect 69 24 117 39)(font "Arial" )) - (port - (pt 72 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) - (line (pt 72 40)(pt 72 28)(line_width 1)) - ) - (port - (pt 112 24) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) - (line (pt 112 24)(pt 80 24)(line_width 3)) - ) - (port - (pt 0 24) - (bidir) - (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) - (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) - (line (pt 0 24)(pt 64 24)(line_width 3)) - ) - (drawing - (text "32" (rect 24 25 40 40)(font "Arial" )) - (text "32" (rect 88 25 104 40)(font "Arial" )) - (line (pt 80 16)(pt 64 24)(line_width 1)) - (line (pt 64 24)(pt 80 32)(line_width 1)) - (line (pt 80 32)(pt 80 16)(line_width 1)) - (line (pt 40 28)(pt 32 20)(line_width 1)) - (line (pt 104 28)(pt 96 20)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 808 1528 920 1568) - (text "lpm_bustri_LONG" (rect -14 1 135 20)(font "Arial" (font_size 10))) - (text "inst119" (rect 69 24 117 39)(font "Arial" )) - (port - (pt 72 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 24 -6 81 10)(font "Arial" (font_size 8))(invisible)) - (line (pt 72 40)(pt 72 28)(line_width 1)) - ) - (port - (pt 112 24) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 55 -27 128 -11)(font "Arial" (font_size 8))(invisible)) - (line (pt 112 24)(pt 80 24)(line_width 3)) - ) - (port - (pt 0 24) - (bidir) - (text "tridata[31..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) - (text "tridata[31..0]" (rect -74 -36 12 -20)(font "Arial" (font_size 8))(invisible)) - (line (pt 0 24)(pt 64 24)(line_width 3)) - ) - (drawing - (text "32" (rect 24 25 40 40)(font "Arial" )) - (text "32" (rect 88 25 104 40)(font "Arial" )) - (line (pt 80 16)(pt 64 24)(line_width 1)) - (line (pt 64 24)(pt 80 32)(line_width 1)) - (line (pt 80 32)(pt 80 16)(line_width 1)) - (line (pt 40 28)(pt 32 20)(line_width 1)) - (line (pt 104 28)(pt 96 20)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 1832 2728 1976 2808) - (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst9" (rect 8 64 39 79)(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 144 48) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 2416 2616 2560 2696) - (text "lpm_ff4" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst10" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[15..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[15..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 144 48) - (output) - (text "q[15..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[15..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 3088 2680 3232 2760) - (text "lpm_ff5" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst11" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) - (text "data[7..0]" (rect 20 26 84 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 144 48) - (output) - (text "q[7..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) - (text "q[7..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 1240 2432 1472 2552) - (text "altddio_out0" (rect 81 1 183 20)(font "Arial" (font_size 10))) - (text "inst2" (rect 8 104 39 119)(font "Arial" )) - (port - (pt 0 24) - (input) - (text "datain_h[3..0]" (rect 0 0 93 16)(font "Arial" (font_size 8))) - (text "datain_h[3..0]" (rect 4 11 97 27)(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 88 16)(font "Arial" (font_size 8))) - (text "datain_l[3..0]" (rect 4 27 92 43)(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 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[3..0]" (rect 0 0 86 16)(font "Arial" (font_size 8))) - (text "dataout[3..0]" (rect 169 11 255 27)(font "Arial" (font_size 8))) - (line (pt 232 24)(pt 152 24)(line_width 3)) - ) - (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 "high" (rect 92 84 120 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 960 1256 1104 1352) - (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) - (text "inst17" (rect 107 80 147 95)(font "Arial" )) - (port - (pt 144 32) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) - (line (pt 144 32)(pt 128 32)(line_width 3)) - ) - (port - (pt 144 48) - (input) - (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 1)) - ) - (port - (pt 144 64) - (input) - (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) - (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) - (line (pt 144 64)(pt 128 64)(line_width 1)) - ) - (port - (pt 0 56) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) - (line (pt 0 56)(pt 16 56)(line_width 3)) - ) - (drawing - (text "DFF" (rect 13 17 40 32)(font "Arial" )) - (line (pt 128 16)(pt 16 16)(line_width 1)) - (line (pt 16 16)(pt 16 80)(line_width 1)) - (line (pt 16 80)(pt 128 80)(line_width 1)) - (line (pt 128 80)(pt 128 16)(line_width 1)) - (line (pt 128 42)(pt 122 48)(line_width 1)) - (line (pt 122 48)(pt 128 54)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 960 1376 1104 1472) - (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) - (text "inst18" (rect 107 80 147 95)(font "Arial" )) - (port - (pt 144 32) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) - (line (pt 144 32)(pt 128 32)(line_width 3)) - ) - (port - (pt 144 48) - (input) - (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 1)) - ) - (port - (pt 144 64) - (input) - (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) - (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) - (line (pt 144 64)(pt 128 64)(line_width 1)) - ) - (port - (pt 0 56) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) - (line (pt 0 56)(pt 16 56)(line_width 3)) - ) - (drawing - (text "DFF" (rect 13 17 40 32)(font "Arial" )) - (line (pt 128 16)(pt 16 16)(line_width 1)) - (line (pt 16 16)(pt 16 80)(line_width 1)) - (line (pt 16 80)(pt 128 80)(line_width 1)) - (line (pt 128 80)(pt 128 16)(line_width 1)) - (line (pt 128 42)(pt 122 48)(line_width 1)) - (line (pt 122 48)(pt 128 54)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 960 1496 1104 1592) - (text "lpm_ff0" (rect 44 1 106 20)(font "Arial" (font_size 10))) - (text "inst19" (rect 107 80 147 95)(font "Arial" )) - (port - (pt 144 32) - (input) - (text "data[31..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[31..0]" (rect 64 26 137 42)(font "Arial" (font_size 8))) - (line (pt 144 32)(pt 128 32)(line_width 3)) - ) - (port - (pt 144 48) - (input) - (text "clock" (rect 0 0 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 89 42 125 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 1)) - ) - (port - (pt 144 64) - (input) - (text "enable" (rect 0 0 44 16)(font "Arial" (font_size 8))) - (text "enable" (rect 87 58 131 74)(font "Arial" (font_size 8))) - (line (pt 144 64)(pt 128 64)(line_width 1)) - ) - (port - (pt 0 56) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 13 50 64 66)(font "Arial" (font_size 8))) - (line (pt 0 56)(pt 16 56)(line_width 3)) - ) - (drawing - (text "DFF" (rect 13 17 40 32)(font "Arial" )) - (line (pt 128 16)(pt 16 16)(line_width 1)) - (line (pt 16 16)(pt 16 80)(line_width 1)) - (line (pt 16 80)(pt 128 80)(line_width 1)) - (line (pt 128 80)(pt 128 16)(line_width 1)) - (line (pt 128 42)(pt 122 48)(line_width 1)) - (line (pt 122 48)(pt 128 54)(line_width 1)) - ) - (flipy) -) -(symbol - (rect 1040 888 1184 968) - (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst3" (rect 8 64 39 79)(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 144 48) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 1296 904 1440 984) - (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst4" (rect 8 64 39 79)(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 144 48) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 1040 976 1184 1056) - (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst12" (rect 8 64 48 79)(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 144 48) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 1296 992 1440 1072) - (text "lpm_ff1" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst20" (rect 8 64 48 79)(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 144 48) - (output) - (text "q[31..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 1344 1280 1496 1392) - (text "lpm_mux5" (rect 50 2 134 21)(font "Arial" (font_size 10))) - (text "inst22" (rect 8 96 48 111)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data3x[63..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) - (text "data3x[63..0]" (rect 4 27 93 43)(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 89 16)(font "Arial" (font_size 8))) - (text "data2x[63..0]" (rect 4 43 93 59)(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 89 16)(font "Arial" (font_size 8))) - (text "data1x[63..0]" (rect 4 59 93 75)(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 89 16)(font "Arial" (font_size 8))) - (text "data0x[63..0]" (rect 4 75 93 91)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[1..0]" (rect 84 99 139 115)(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 81 16)(font "Arial" (font_size 8))) - (text "result[63..0]" (rect 92 51 173 67)(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)) - ) -) -(symbol - (rect 992 2760 1056 2840) - (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) - (text "inst88" (rect 3 68 43 83)(font "Arial" )) - (port - (pt 32 80) - (input) - (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) - (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) - (line (pt 32 80)(pt 32 76)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (line (pt 0 40)(pt 12 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 12 24)(line_width 1)) - ) - (port - (pt 32 0) - (input) - (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) - (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) - (line (pt 32 4)(pt 32 0)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (line (pt 52 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 12 12)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 52 68)(line_width 1)) - (line (pt 52 68)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 12 12)(line_width 1)) - (line (pt 19 40)(pt 12 47)(line_width 1)) - (line (pt 12 32)(pt 20 40)(line_width 1)) - (circle (rect 28 4 36 12)(line_width 1)) - (circle (rect 28 68 36 76)(line_width 1)) - ) -) -(symbol - (rect 968 2376 1032 2456) - (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) - (text "inst90" (rect 3 68 43 83)(font "Arial" )) - (port - (pt 32 80) - (input) - (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) - (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) - (line (pt 32 80)(pt 32 76)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (line (pt 0 40)(pt 12 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 12 24)(line_width 1)) - ) - (port - (pt 32 0) - (input) - (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) - (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) - (line (pt 32 4)(pt 32 0)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (line (pt 52 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 12 12)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 52 68)(line_width 1)) - (line (pt 52 68)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 12 12)(line_width 1)) - (line (pt 19 40)(pt 12 47)(line_width 1)) - (line (pt 12 32)(pt 20 40)(line_width 1)) - (circle (rect 28 4 36 12)(line_width 1)) - (circle (rect 28 68 36 76)(line_width 1)) - ) -) -(symbol - (rect 1312 1512 1552 1648) - (text "altddio_bidir0" (rect 82 1 196 20)(font "Arial" (font_size 10))) - (text "inst1" (rect 8 120 39 135)(font "Arial" )) - (port - (pt 0 24) - (input) - (text "datain_h[31..0]" (rect 0 0 101 16)(font "Arial" (font_size 8))) - (text "datain_h[31..0]" (rect 4 11 105 27)(font "Arial" (font_size 8))) - (line (pt 0 24)(pt 88 24)(line_width 3)) - ) - (port - (pt 0 40) - (input) - (text "datain_l[31..0]" (rect 0 0 96 16)(font "Arial" (font_size 8))) - (text "datain_l[31..0]" (rect 4 27 100 43)(font "Arial" (font_size 8))) - (line (pt 0 40)(pt 88 40)(line_width 3)) - ) - (port - (pt 0 56) - (input) - (text "oe" (rect 0 0 16 16)(font "Arial" (font_size 8))) - (text "oe" (rect 4 43 20 59)(font "Arial" (font_size 8))) - (line (pt 0 56)(pt 88 56)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "inclock" (rect 0 0 48 16)(font "Arial" (font_size 8))) - (text "inclock" (rect 4 59 52 75)(font "Arial" (font_size 8))) - (line (pt 0 72)(pt 88 72)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "outclock" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "outclock" (rect 4 75 61 91)(font "Arial" (font_size 8))) - (line (pt 0 88)(pt 88 88)(line_width 1)) - ) - (port - (pt 240 24) - (output) - (text "dataout_h[31..0]" (rect 0 0 110 16)(font "Arial" (font_size 8))) - (text "dataout_h[31..0]" (rect 159 11 269 27)(font "Arial" (font_size 8))) - (line (pt 240 24)(pt 144 24)(line_width 3)) - ) - (port - (pt 240 40) - (output) - (text "dataout_l[31..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) - (text "dataout_l[31..0]" (rect 163 27 269 43)(font "Arial" (font_size 8))) - (line (pt 240 40)(pt 144 40)(line_width 3)) - ) - (port - (pt 240 72) - (output) - (text "combout[31..0]" (rect 0 0 102 16)(font "Arial" (font_size 8))) - (text "combout[31..0]" (rect 166 59 268 75)(font "Arial" (font_size 8))) - (line (pt 240 72)(pt 144 72)(line_width 3)) - ) - (port - (pt 240 56) - (bidir) - (text "padio[31..0]" (rect 0 0 80 16)(font "Arial" (font_size 8))) - (text "padio[31..0]" (rect 181 43 261 59)(font "Arial" (font_size 8))) - (line (pt 240 56)(pt 144 56)(line_width 3)) - ) - (drawing - (text "ddio" (rect 108 27 136 43)(font "Arial" (font_size 8))) - (text "bidir" (rect 108 42 136 58)(font "Arial" (font_size 8))) - (text "power up" (rect 92 90 152 105)(font "Arial" )) - (text "low" (rect 92 100 114 115)(font "Arial" )) - (line (pt 88 16)(pt 144 16)(line_width 1)) - (line (pt 144 16)(pt 144 112)(line_width 1)) - (line (pt 144 112)(pt 88 112)(line_width 1)) - (line (pt 88 112)(pt 88 16)(line_width 1)) - ) -) -(symbol - (rect 368 1784 432 1832) - (text "OR3" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst39" (rect 3 37 44 53)(font "Arial" (font_size 8))) - (port - (pt 0 24) - (input) - (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) - (text "IN2" (rect 2 15 26 31)(font "Courier New" (bold))(invisible)) - (line (pt 0 24)(pt 18 24)(line_width 1)) - ) - (port - (pt 0 32) - (input) - (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) - (text "IN3" (rect 2 24 26 40)(font "Courier New" (bold))(invisible)) - (line (pt 0 32)(pt 16 32)(line_width 1)) - ) - (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 16 16)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) - (text "OUT" (rect 47 15 71 31)(font "Courier New" (bold))(invisible)) - (line (pt 49 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 13)(pt 25 13)(line_width 1)) - (line (pt 14 36)(pt 25 36)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 1688 1552 1848 1632) - (text "lpm_latch0" (rect 49 1 139 20)(font "Arial" (font_size 10))) - (text "inst27" (rect 8 64 48 79)(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 "gate" (rect 0 0 29 16)(font "Arial" (font_size 8))) - (text "gate" (rect 20 42 49 58)(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 51 16)(font "Arial" (font_size 8))) - (text "q[31..0]" (rect 105 26 156 42)(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)) - ) -) -(symbol - (rect 888 2904 1032 3000) - (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst36" (rect 8 80 48 95)(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 26 101 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[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) - (text "q[127..0]" (rect 83 50 143 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 920 2144 1064 2224) - (text "lpm_shiftreg6" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "inst92" (rect 8 64 48 79)(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 0 48) - (input) - (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 42 60 58)(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 43 16)(font "Arial" (font_size 8))) - (text "q[4..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 3)) - ) - (drawing - (text "right shift" (rect 88 17 147 32)(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)) - ) -) -(symbol - (rect 904 2528 1048 2608) - (text "lpm_shiftreg6" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "inst89" (rect 8 64 48 79)(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 0 48) - (input) - (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 42 60 58)(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 43 16)(font "Arial" (font_size 8))) - (text "q[4..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 3)) - ) - (drawing - (text "right shift" (rect 88 17 147 32)(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)) - ) -) -(symbol - (rect 920 2248 1064 2328) - (text "lpm_shiftreg4" (rect 34 1 148 20)(font "Arial" (font_size 10))) - (text "inst26" (rect 8 64 48 79)(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 0 48) - (input) - (text "shiftin" (rect 0 0 40 16)(font "Arial" (font_size 8))) - (text "shiftin" (rect 20 42 60 58)(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 49 16)(font "Arial" (font_size 8))) - (text "shiftout" (rect 89 42 138 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(line_width 1)) - ) - (drawing - (text "right shift" (rect 88 17 147 32)(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)) - ) -) -(symbol - (rect 2080 1528 2144 1608) - (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) - (text "inst95" (rect 3 68 43 83)(font "Arial" )) - (port - (pt 32 80) - (input) - (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) - (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) - (line (pt 32 80)(pt 32 76)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (line (pt 0 40)(pt 12 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 12 24)(line_width 1)) - ) - (port - (pt 32 0) - (input) - (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) - (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) - (line (pt 32 4)(pt 32 0)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (line (pt 52 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 12 12)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 52 68)(line_width 1)) - (line (pt 52 68)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 12 12)(line_width 1)) - (line (pt 19 40)(pt 12 47)(line_width 1)) - (line (pt 12 32)(pt 20 40)(line_width 1)) - (circle (rect 28 4 36 12)(line_width 1)) - (circle (rect 28 68 36 76)(line_width 1)) - ) -) -(symbol - (rect 1312 2320 1376 2368) - (text "OR2" (rect 1 0 25 13)(font "Arial" (font_size 6))) - (text "inst37" (rect 3 37 43 52)(font "Arial" )) - (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 15 32)(line_width 1)) - ) - (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 15 16)(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 48 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 14 36)(pt 25 36)(line_width 1)) - (line (pt 14 13)(pt 25 13)(line_width 1)) - (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)(line_width 1)) - (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)(line_width 1)) - (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)(line_width 1)) - ) -) -(symbol - (rect 1088 2640 1232 2720) - (text "lpm_ff5" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst97" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[7..0]" (rect 0 0 64 16)(font "Arial" (font_size 8))) - (text "data[7..0]" (rect 20 26 84 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 144 48) - (output) - (text "q[7..0]" (rect 0 0 43 16)(font "Arial" (font_size 8))) - (text "q[7..0]" (rect 95 42 138 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 4280 2768 4512 2888) - (text "altddio_out2" (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[23..0]" (rect 0 0 101 16)(font "Arial" (font_size 8))) - (text "datain_h[23..0]" (rect 4 11 105 27)(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 96 16)(font "Arial" (font_size 8))) - (text "datain_l[23..0]" (rect 4 27 100 43)(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 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[23..0]" (rect 0 0 94 16)(font "Arial" (font_size 8))) - (text "dataout[23..0]" (rect 163 11 257 27)(font "Arial" (font_size 8))) - (line (pt 232 24)(pt 152 24)(line_width 3)) - ) - (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 3720 1936 3816 1984) - (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst77" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "2" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3720 1736 3816 1784) - (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst80" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "2" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 3720 1528 3816 1576) - (text "lpm_constant1" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst83" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[1..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[1..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "2" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 2424 2720 2520 2768) - (text "lpm_constant2" (rect 6 1 128 20)(font "Arial" (font_size 10))) - (text "inst23" (rect 8 32 48 47)(font "Arial" )) - (port - (pt 96 24) - (output) - (text "result[7..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "result[7..0]" (rect 93 -25 166 -9)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 80 24)(line_width 3)) - ) - (drawing - (text "0" (rect 75 18 83 33)(font "Arial" )) - (text "8" (rect 87 25 95 40)(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)) - ) -) -(symbol - (rect 4024 2696 4176 2888) - (text "lpm_mux6" (rect 50 2 134 21)(font "Arial" (font_size 10))) - (text "inst7" (rect 8 176 39 191)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data7x[23..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) - (text "data7x[23..0]" (rect 4 27 93 43)(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 89 16)(font "Arial" (font_size 8))) - (text "data6x[23..0]" (rect 4 43 93 59)(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 89 16)(font "Arial" (font_size 8))) - (text "data5x[23..0]" (rect 4 59 93 75)(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 89 16)(font "Arial" (font_size 8))) - (text "data4x[23..0]" (rect 4 75 93 91)(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 89 16)(font "Arial" (font_size 8))) - (text "data3x[23..0]" (rect 4 91 93 107)(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 89 16)(font "Arial" (font_size 8))) - (text "data2x[23..0]" (rect 4 107 93 123)(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 89 16)(font "Arial" (font_size 8))) - (text "data1x[23..0]" (rect 4 123 93 139)(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 89 16)(font "Arial" (font_size 8))) - (text "data0x[23..0]" (rect 4 139 93 155)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 4 155 40 171)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[2..0]" (rect 84 179 139 195)(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 81 16)(font "Arial" (font_size 8))) - (text "result[23..0]" (rect 92 91 173 107)(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)) - ) -) -(symbol - (rect 2824 2544 2968 2864) - (text "lpm_mux2" (rect 50 2 134 21)(font "Arial" (font_size 10))) - (text "inst25" (rect 8 304 48 319)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data15x[7..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) - (text "data15x[7..0]" (rect 4 27 93 43)(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 89 16)(font "Arial" (font_size 8))) - (text "data14x[7..0]" (rect 4 43 93 59)(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 89 16)(font "Arial" (font_size 8))) - (text "data13x[7..0]" (rect 4 59 93 75)(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 89 16)(font "Arial" (font_size 8))) - (text "data12x[7..0]" (rect 4 75 93 91)(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 89 16)(font "Arial" (font_size 8))) - (text "data11x[7..0]" (rect 4 91 93 107)(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 89 16)(font "Arial" (font_size 8))) - (text "data10x[7..0]" (rect 4 107 93 123)(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 81 16)(font "Arial" (font_size 8))) - (text "data9x[7..0]" (rect 4 123 85 139)(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 81 16)(font "Arial" (font_size 8))) - (text "data8x[7..0]" (rect 4 139 85 155)(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 81 16)(font "Arial" (font_size 8))) - (text "data7x[7..0]" (rect 4 155 85 171)(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 81 16)(font "Arial" (font_size 8))) - (text "data6x[7..0]" (rect 4 171 85 187)(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 81 16)(font "Arial" (font_size 8))) - (text "data5x[7..0]" (rect 4 187 85 203)(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 81 16)(font "Arial" (font_size 8))) - (text "data4x[7..0]" (rect 4 203 85 219)(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 81 16)(font "Arial" (font_size 8))) - (text "data3x[7..0]" (rect 4 219 85 235)(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 81 16)(font "Arial" (font_size 8))) - (text "data2x[7..0]" (rect 4 235 85 251)(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 81 16)(font "Arial" (font_size 8))) - (text "data1x[7..0]" (rect 4 251 85 267)(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 81 16)(font "Arial" (font_size 8))) - (text "data0x[7..0]" (rect 4 267 85 283)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 4 283 40 299)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[3..0]" (rect 84 307 139 323)(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 73 16)(font "Arial" (font_size 8))) - (text "result[7..0]" (rect 90 155 163 171)(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)) - ) -) -(symbol - (rect 2224 2544 2376 2736) - (text "lpm_mux1" (rect 50 2 134 21)(font "Arial" (font_size 10))) - (text "inst24" (rect 8 176 48 191)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data7x[15..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) - (text "data7x[15..0]" (rect 4 27 93 43)(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 89 16)(font "Arial" (font_size 8))) - (text "data6x[15..0]" (rect 4 43 93 59)(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 89 16)(font "Arial" (font_size 8))) - (text "data5x[15..0]" (rect 4 59 93 75)(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 89 16)(font "Arial" (font_size 8))) - (text "data4x[15..0]" (rect 4 75 93 91)(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 89 16)(font "Arial" (font_size 8))) - (text "data3x[15..0]" (rect 4 91 93 107)(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 89 16)(font "Arial" (font_size 8))) - (text "data2x[15..0]" (rect 4 107 93 123)(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 89 16)(font "Arial" (font_size 8))) - (text "data1x[15..0]" (rect 4 123 93 139)(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 89 16)(font "Arial" (font_size 8))) - (text "data0x[15..0]" (rect 4 139 93 155)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 4 155 40 171)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[2..0]" (rect 84 179 139 195)(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 81 16)(font "Arial" (font_size 8))) - (text "result[15..0]" (rect 92 91 173 107)(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)) - ) -) -(symbol - (rect 1616 2688 1768 2816) - (text "lpm_mux0" (rect 50 2 134 21)(font "Arial" (font_size 10))) - (text "inst21" (rect 8 112 48 127)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data3x[31..0]" (rect 0 0 89 16)(font "Arial" (font_size 8))) - (text "data3x[31..0]" (rect 4 27 93 43)(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 89 16)(font "Arial" (font_size 8))) - (text "data2x[31..0]" (rect 4 43 93 59)(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 89 16)(font "Arial" (font_size 8))) - (text "data1x[31..0]" (rect 4 59 93 75)(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 89 16)(font "Arial" (font_size 8))) - (text "data0x[31..0]" (rect 4 75 93 91)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 4 91 40 107)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[1..0]" (rect 84 115 139 131)(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 81 16)(font "Arial" (font_size 8))) - (text "result[31..0]" (rect 92 59 173 75)(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)) - ) -) -(symbol - (rect 3672 2752 3816 2832) - (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst46" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[23..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 144 48) - (output) - (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 3432 2736 3576 2816) - (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst47" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[23..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 144 48) - (output) - (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 3672 2840 3816 2920) - (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst49" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[23..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 144 48) - (output) - (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 3432 2824 3576 2904) - (text "lpm_ff3" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst52" (rect 8 64 48 79)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data[23..0]" (rect 0 0 73 16)(font "Arial" (font_size 8))) - (text "data[23..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 144 48) - (output) - (text "q[23..0]" (rect 0 0 51 16)(font "Arial" (font_size 8))) - (text "q[23..0]" (rect 89 42 140 58)(font "Arial" (font_size 8))) - (line (pt 144 48)(pt 128 48)(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 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)) - ) -) -(symbol - (rect 2912 2936 2976 3016) - (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) - (text "inst91" (rect 3 68 43 83)(font "Arial" )) - (port - (pt 32 80) - (input) - (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) - (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) - (line (pt 32 80)(pt 32 76)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (line (pt 0 40)(pt 12 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 12 24)(line_width 1)) - ) - (port - (pt 32 0) - (input) - (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) - (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) - (line (pt 32 4)(pt 32 0)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (line (pt 52 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 12 12)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 52 68)(line_width 1)) - (line (pt 52 68)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 12 12)(line_width 1)) - (line (pt 19 40)(pt 12 47)(line_width 1)) - (line (pt 12 32)(pt 20 40)(line_width 1)) - (circle (rect 28 4 36 12)(line_width 1)) - (circle (rect 28 68 36 76)(line_width 1)) - ) -) -(symbol - (rect 3048 2936 3112 3016) - (text "DFF" (rect 1 0 23 13)(font "Arial" (font_size 6))) - (text "inst93" (rect 3 68 43 83)(font "Arial" )) - (port - (pt 32 80) - (input) - (text "CLRN" (rect 21 59 54 75)(font "Courier New" (bold))) - (text "CLRN" (rect 21 58 54 74)(font "Courier New" (bold))) - (line (pt 32 80)(pt 32 76)(line_width 1)) - ) - (port - (pt 0 40) - (input) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (text "CLK" (rect 3 29 27 45)(font "Courier New" (bold))(invisible)) - (line (pt 0 40)(pt 12 40)(line_width 1)) - ) - (port - (pt 0 24) - (input) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (text "D" (rect 14 20 22 36)(font "Courier New" (bold))) - (line (pt 0 24)(pt 12 24)(line_width 1)) - ) - (port - (pt 32 0) - (input) - (text "PRN" (rect 24 13 48 29)(font "Courier New" (bold))) - (text "PRN" (rect 24 11 48 27)(font "Courier New" (bold))) - (line (pt 32 4)(pt 32 0)(line_width 1)) - ) - (port - (pt 64 24) - (output) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (text "Q" (rect 45 20 53 36)(font "Courier New" (bold))) - (line (pt 52 24)(pt 64 24)(line_width 1)) - ) - (drawing - (line (pt 12 12)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 52 68)(line_width 1)) - (line (pt 52 68)(pt 52 12)(line_width 1)) - (line (pt 12 68)(pt 12 12)(line_width 1)) - (line (pt 19 40)(pt 12 47)(line_width 1)) - (line (pt 12 32)(pt 20 40)(line_width 1)) - (circle (rect 28 4 36 12)(line_width 1)) - (circle (rect 28 68 36 76)(line_width 1)) - ) -) -(symbol - (rect 1712 1328 1872 1496) - (text "lpm_fifo_dc0" (rect 44 1 153 20)(font "Arial" (font_size 10))) - (text "inst" (rect 8 152 31 167)(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 26 101 42)(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 50 56 66)(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 35 16)(font "Arial" (font_size 8))) - (text "wrclk" (rect 26 66 61 82)(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 34 16)(font "Arial" (font_size 8))) - (text "rdreq" (rect 20 98 54 114)(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 33 16)(font "Arial" (font_size 8))) - (text "rdclk" (rect 26 114 59 130)(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 24 16)(font "Arial" (font_size 8))) - (text "aclr" (rect 20 138 44 154)(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 94 16)(font "Arial" (font_size 8))) - (text "wrusedw[8..0]" (rect 69 66 163 82)(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 60 16)(font "Arial" (font_size 8))) - (text "q[127..0]" (rect 99 90 159 106)(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 55 16)(font "Arial" (font_size 8))) - (text "rdempty" (rect 102 114 157 130)(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 191 155)(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)) - ) -) -(symbol - (rect 3768 2488 3864 2528) - (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) - (text "inst53" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[7..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "8" (rect 71 25 79 40)(font "Arial" )) - (text "8" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3296 2384 3328 2416) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst75" (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 3768 2280 3864 2320) - (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) - (text "inst57" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[7..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "8" (rect 71 25 79 40)(font "Arial" )) - (text "8" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3296 2176 3328 2208) - (text "GND" (rect 6 8 19 33)(font "Arial" (font_size 6))(vertical)) - (text "inst76" (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 3768 2072 3864 2112) - (text "lpm_bustri_BYT" (rect 2 1 136 20)(font "Arial" (font_size 10))) - (text "inst58" (rect 8 24 48 39)(font "Arial" )) - (port - (pt 40 40) - (input) - (text "enabledt" (rect 0 0 57 16)(font "Arial" (font_size 8))) - (text "enabledt" (rect 40 -6 97 10)(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 64 16)(font "Arial" (font_size 8))) - (text "data[7..0]" (rect -3 -21 61 -5)(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 77 16)(font "Arial" (font_size 8))) - (text "tridata[7..0]" (rect 100 -30 177 -14)(font "Arial" (font_size 8))(invisible)) - (line (pt 96 24)(pt 48 24)(line_width 3)) - ) - (drawing - (text "8" (rect 71 25 79 40)(font "Arial" )) - (text "8" (rect 15 25 23 40)(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)) - ) -) -(symbol - (rect 3448 2272 3704 2480) - (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ACP_CLUT_RAM54" (rect 8 192 136 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[7..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[7..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[7..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 2480 3704 2688) - (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ACP_CLUT_RAM" (rect 8 192 120 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[7..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[7..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[7..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 1832 3704 2040) - (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "FALCON_CLUT_BLUE" (rect 8 192 156 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[5..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[5..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[5..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 1416 3704 1624) - (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "FALCON_CLUT_RED" (rect 8 192 149 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[5..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[5..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[5..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 1624 3704 1832) - (text "altdpram1" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "FALCON_CLUT_GREEN" (rect 8 192 169 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[5..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[5..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[5..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[5..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[5..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 2064 3704 2272) - (text "altdpram2" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ACP_CLUT_RAM55" (rect 8 192 136 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[7..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[7..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[7..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[7..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[7..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[7..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[7..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "256 Word(s)" (rect 136 58 151 138)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 3448 1192 3704 1400) - (text "altdpram0" (rect 100 1 183 20)(font "Arial" (font_size 10))) - (text "ST_CLUT_BLUE" (rect 8 192 117 207)(font "Arial" )) - (port - (pt 0 32) - (input) - (text "data_a[2..0]" (rect 0 0 81 16)(font "Arial" (font_size 8))) - (text "data_a[2..0]" (rect 4 19 85 35)(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 106 16)(font "Arial" (font_size 8))) - (text "address_a[3..0]" (rect 4 35 110 51)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_a" (rect 4 51 52 67)(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 81 16)(font "Arial" (font_size 8))) - (text "data_b[2..0]" (rect 4 83 85 99)(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 106 16)(font "Arial" (font_size 8))) - (text "address_b[3..0]" (rect 4 99 110 115)(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 48 16)(font "Arial" (font_size 8))) - (text "wren_b" (rect 4 115 52 131)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_a" (rect 4 147 57 163)(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 53 16)(font "Arial" (font_size 8))) - (text "clock_b" (rect 4 163 57 179)(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 60 16)(font "Arial" (font_size 8))) - (text "q_a[2..0]" (rect 211 19 271 35)(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 60 16)(font "Arial" (font_size 8))) - (text "q_b[2..0]" (rect 211 83 271 99)(font "Arial" (font_size 8))) - (line (pt 256 96)(pt 192 96)(line_width 3)) - ) - (drawing - (text "16 Word(s)" (rect 136 61 151 132)(font "Arial" )(vertical)) - (text "RAM" (rect 149 74 164 103)(font "Arial" )(vertical)) - (text "Block Type: AUTO" (rect 41 188 155 203)(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)) - ) -) -(symbol - (rect 2000 1368 2168 1480) - (text "lpm_muxDZ" (rect 54 2 153 21)(font "Arial" (font_size 10))) - (text "inst62" (rect 8 96 48 111)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data1x[127..0]" (rect 0 0 97 16)(font "Arial" (font_size 8))) - (text "data1x[127..0]" (rect 4 27 101 43)(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 97 16)(font "Arial" (font_size 8))) - (text "data0x[127..0]" (rect 4 43 101 59)(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 36 16)(font "Arial" (font_size 8))) - (text "clock" (rect 4 59 40 75)(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 36 16)(font "Arial" (font_size 8))) - (text "clken" (rect 4 75 40 91)(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 20 16)(font "Arial" (font_size 8))) - (text "sel" (rect 92 99 112 115)(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 89 16)(font "Arial" (font_size 8))) - (text "result[127..0]" (rect 102 51 191 67)(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)) - ) -) -(symbol - (rect 1536 1408 1600 1456) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst65" (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)) - ) -) -(symbol - (rect 1856 1272 1920 1320) - (text "AND2" (rect 1 0 32 13)(font "Arial" (font_size 6))) - (text "inst67" (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)) - ) -) -(symbol - (rect 1456 1424 1504 1456) - (text "NOT" (rect 1 0 26 13)(font "Arial" (font_size 6))) - (text "inst69" (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 1160 1104 1304 1200) - (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst71" (rect 8 80 48 95)(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 26 101 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[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) - (text "q[127..0]" (rect 83 50 143 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 1400 1128 1544 1224) - (text "lpm_ff6" (rect 52 1 114 20)(font "Arial" (font_size 10))) - (text "inst94" (rect 8 80 48 95)(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 26 101 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[127..0]" (rect 0 0 60 16)(font "Arial" (font_size 8))) - (text "q[127..0]" (rect 83 50 143 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 1800 816 1968 1120) - (text "lpm_muxVDM" (rect 47 2 163 21)(font "Arial" (font_size 10))) - (text "inst100" (rect 8 288 56 303)(font "Arial" )) - (port - (pt 0 40) - (input) - (text "data15x[127..0]" (rect 0 0 106 16)(font "Arial" (font_size 8))) - (text "data15x[127..0]" (rect 4 27 110 43)(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 106 16)(font "Arial" (font_size 8))) - (text "data14x[127..0]" (rect 4 43 110 59)(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 106 16)(font "Arial" (font_size 8))) - (text "data13x[127..0]" (rect 4 59 110 75)(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 106 16)(font "Arial" (font_size 8))) - (text "data12x[127..0]" (rect 4 75 110 91)(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 106 16)(font "Arial" (font_size 8))) - (text "data11x[127..0]" (rect 4 91 110 107)(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 106 16)(font "Arial" (font_size 8))) - (text "data10x[127..0]" (rect 4 107 110 123)(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 97 16)(font "Arial" (font_size 8))) - (text "data9x[127..0]" (rect 4 123 101 139)(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 97 16)(font "Arial" (font_size 8))) - (text "data8x[127..0]" (rect 4 139 101 155)(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 97 16)(font "Arial" (font_size 8))) - (text "data7x[127..0]" (rect 4 155 101 171)(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 97 16)(font "Arial" (font_size 8))) - (text "data6x[127..0]" (rect 4 171 101 187)(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 97 16)(font "Arial" (font_size 8))) - (text "data5x[127..0]" (rect 4 187 101 203)(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 97 16)(font "Arial" (font_size 8))) - (text "data4x[127..0]" (rect 4 203 101 219)(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 97 16)(font "Arial" (font_size 8))) - (text "data3x[127..0]" (rect 4 219 101 235)(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 97 16)(font "Arial" (font_size 8))) - (text "data2x[127..0]" (rect 4 235 101 251)(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 97 16)(font "Arial" (font_size 8))) - (text "data1x[127..0]" (rect 4 251 101 267)(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 97 16)(font "Arial" (font_size 8))) - (text "data0x[127..0]" (rect 4 267 101 283)(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 55 16)(font "Arial" (font_size 8))) - (text "sel[3..0]" (rect 92 291 147 307)(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 89 16)(font "Arial" (font_size 8))) - (text "result[127..0]" (rect 102 147 191 163)(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)) - ) -) -(symbol - (rect 2072 1176 2232 1320) - (text "lpm_fifoDZ" (rect 41 2 133 21)(font "Arial" (font_size 10))) - (text "inst63" (rect 8 125 48 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 101 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 56 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 54 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 62 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 44 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 150 40)(font "Arial" (font_size 8))) - (line (pt 160 32)(pt 144 32)(line_width 3)) - ) - (drawing - (text "(ack)" (rect 51 67 82 82)(font "Arial" )) - (text "128 bits x 128 words" (rect 31 114 164 129)(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)) - ) -) -(block - (rect 296 2552 568 3000) - (text "BLITTER" (rect 5 5 65 21)(font "Arial" (font_size 8))) (text "BLITTER" (rect 5 434 62 449)(font "Arial" )) (block_io "nRSTO" (input)) - (block_io "MAIN_CLK" (input)) - (block_io "FB_ALE" (input)) - (block_io "nFB_WR" (input)) - (block_io "nFB_OE" (input)) - (block_io "FB_SIZE0" (input)) - (block_io "FB_SIZE1" (input)) - (block_io "VIDEO_RAM_CTR[15..0]" (input)) - (block_io "BLITTER_ON" (input)) - (block_io "FB_ADR[31..0]" (input)) - (block_io "nFB_CS1" (input)) - (block_io "nFB_CS2" (input)) - (block_io "nFB_CS3" (input)) - (block_io "DDRCLK0" (input)) - (block_io "BLITTER_DIN[127..0]" (input)) - (block_io "BLITTER_DACK[4..0]" (input)) - (block_io "BLITTER_RUN" (output)) - (block_io "BLITTER_DOUT[127..0]" (output)) - (block_io "BLITTER_ADR[31..0]" (output)) - (block_io "BLITTER_SIG" (output)) - (block_io "BLITTER_WR" (output)) - (block_io "BLITTER_TA" (output)) - (block_io "FB_AD[31..0]" (bidir)) - (mapper - (pt 272 176) - (bidir) - ) - (mapper - (pt 272 208) - (bidir) - ) - (mapper - (pt 272 240) - (bidir) - ) - (mapper - (pt 272 264) - (bidir) - ) - (mapper - (pt 272 288) - (bidir) - ) - (mapper - (pt 0 384) - (bidir) - ) - (mapper - (pt 272 72) - (bidir) - ) - (mapper - (pt 0 56) - (bidir) - ) - (mapper - (pt 0 32) - (bidir) - ) - (mapper - (pt 0 296) - (bidir) - ) - (mapper - (pt 0 272) - (bidir) - ) - (mapper - (pt 0 104) - (bidir) - ) - (mapper - (pt 0 128) - (bidir) - ) - (mapper - (pt 0 80) - (bidir) - ) - (mapper - (pt 0 248) - (bidir) - ) - (mapper - (pt 0 224) - (bidir) - ) - (mapper - (pt 0 200) - (bidir) - ) - (mapper - (pt 0 176) - (bidir) - ) - (mapper - (pt 0 152) - (bidir) - ) - (mapper - (pt 0 360) - (bidir) - ) - (mapper - (pt 0 328) - (bidir) - ) - (mapper - (pt 272 424) - (bidir) - ) - (mapper - (pt 0 408) - (bidir) - ) -) -(block - (rect 1664 1664 2016 2600) - (text "VIDEO_MOD_MUX_CLUTCTR" (rect 5 5 211 21)(font "Arial" (font_size 8))) (text "VIDEO_MOD_MUX_CLUTCTR" (rect 5 922 200 937)(font "Arial" )) (block_io "nRSTO" (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 "nFB_OE" (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 "CLK33M" (input)) - (block_io "CLK25M" (input)) - (block_io "BLITTER_RUN" (input)) - (block_io "CLK_VIDEO" (input)) - (block_io "VR_D[8..0]" (input)) - (block_io "VR_BUSY" (input)) - (block_io "COLOR8" (output)) - (block_io "ACP_CLUT_RD" (output)) - (block_io "COLOR1" (output)) - (block_io "FALCON_CLUT_RDH" (output)) - (block_io "FALCON_CLUT_RDL" (output)) - (block_io "FALCON_CLUT_WR[3..0]" (output)) - (block_io "ST_CLUT_RD" (output)) - (block_io "ST_CLUT_WR[1..0]" (output)) - (block_io "CLUT_MUX_ADR[3..0]" (output)) - (block_io "HSYNC" (output)) - (block_io "VSYNC" (output)) - (block_io "nBLANK" (output)) - (block_io "nSYNC" (output)) - (block_io "nPD_VGA" (output)) - (block_io "FIFO_RDE" (output)) - (block_io "COLOR2" (output)) - (block_io "COLOR4" (output)) - (block_io "PIXEL_CLK" (output)) - (block_io "CLUT_OFF[3..0]" (output)) - (block_io "BLITTER_ON" (output)) - (block_io "VIDEO_RAM_CTR[15..0]" (output)) - (block_io "VIDEO_MOD_TA" (output)) - (block_io "CCR[23..0]" (output)) - (block_io "CCSEL[2..0]" (output)) - (block_io "ACP_CLUT_WR[3..0]" (output)) - (block_io "INTER_ZEI" (output)) - (block_io "DOP_FIFO_CLR" (output)) - (block_io "VIDEO_RECONFIG" (output)) - (block_io "VR_WR" (output)) - (block_io "VR_RD" (output)) - (block_io "CLR_FIFO" (output)) - (block_io "FB_AD[31..0]" (bidir)) - (mapper - (pt 352 72) - (bidir) - ) - (mapper - (pt 0 272) - (bidir) - ) - (mapper - (pt 0 56) - (bidir) - ) - (mapper - (pt 0 80) - (bidir) - ) - (mapper - (pt 0 296) - (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 200) - (bidir) - ) - (mapper - (pt 0 224) - (bidir) - ) - (mapper - (pt 0 520) - (bidir) - ) - (mapper - (pt 0 544) - (bidir) - ) - (mapper - (pt 0 880) - (bidir) - ) - (mapper - (pt 352 600) - (bidir) - ) - (mapper - (pt 352 624) - (bidir) - ) - (mapper - (pt 352 648) - (bidir) - ) - (mapper - (pt 352 672) - (bidir) - ) - (mapper - (pt 352 696) - (bidir) - ) - (mapper - (pt 352 720) - (bidir) - ) - (mapper - (pt 352 840) - (bidir) - ) - (mapper - (pt 352 472) - (bidir) - ) - (mapper - (pt 352 448) - (bidir) - ) - (mapper - (pt 352 528) - (bidir) - ) - (mapper - (pt 352 320) - (bidir) - ) - (mapper - (pt 352 576) - (bidir) - ) - (mapper - (pt 352 400) - (bidir) - ) - (mapper - (pt 352 376) - (bidir) - ) - (mapper - (pt 352 352) - (bidir) - ) - (mapper - (pt 352 504) - (bidir) - ) - (mapper - (pt 352 296) - (bidir) - ) - (mapper - (pt 352 424) - (bidir) - ) - (mapper - (pt 352 552) - (bidir) - ) - (mapper - (pt 352 752) - (bidir) - ) - (mapper - (pt 352 776) - (bidir) - ) - (mapper - (pt 352 872) - (bidir) - ) - (mapper - (pt 0 496) - (bidir) - ) - (mapper - (pt 352 88) - (bidir) - ) - (mapper - (pt 352 264) - (bidir) - ) - (mapper - (pt 352 248) - (bidir) - ) - (mapper - (pt 352 232) - (bidir) - ) - (mapper - (pt 352 216) - (bidir) - ) - (mapper - (pt 352 136) - (bidir) - ) - (mapper - (pt 352 40) - (bidir) - ) - (mapper - (pt 352 152) - (bidir) - ) - (mapper - (pt 0 472) - (bidir) - ) - (mapper - (pt 0 456) - (bidir) - ) - (mapper - (pt 352 104) - (bidir) - ) -) -(block - (rect 296 1872 560 2536) - (text "DDR_CTR" (rect 5 5 74 21)(font "Arial" (font_size 8))) (text "DDR_CTR" (rect 5 650 74 665)(font "Arial" )) (block_io "FB_ADR[31..0]" (input)) - (block_io "nFB_CS1" (input)) - (block_io "nFB_CS2" (input)) - (block_io "nFB_CS3" (input)) - (block_io "nFB_OE" (input)) - (block_io "FB_SIZE0" (input)) - (block_io "FB_SIZE1" (input)) - (block_io "nRSTO" (input)) - (block_io "MAIN_CLK" (input)) - (block_io "FB_ALE" (input)) - (block_io "nFB_WR" (input)) - (block_io "DDR_SYNC_66M" (input)) - (block_io "VIDEO_RAM_CTR[15..0]" (input)) - (block_io "BLITTER_ADR[31..0]" (input)) - (block_io "BLITTER_SIG" (input)) - (block_io "BLITTER_WR" (input)) - (block_io "DDRCLK0" (input)) - (block_io "CLK33M" (input)) - (block_io "FIFO_MW[8..0]" (input)) - (block_io "CLR_FIFO" (input)) - (block_io "VA[12..0]" (output)) - (block_io "nVWE" (output)) - (block_io "nVRAS" (output)) - (block_io "nVCS" (output)) - (block_io "VCKE" (output)) - (block_io "nVCAS" (output)) - (block_io "FB_LE[3..0]" (output)) - (block_io "FB_VDOE[3..0]" (output)) - (block_io "SR_FIFO_WRE" (output)) - (block_io "SR_DDR_FB" (output)) - (block_io "SR_DDR_WR" (output)) - (block_io "SR_DDRWR_D_SEL" (output)) - (block_io "SR_VDMP[7..0]" (output)) - (block_io "VIDEO_DDR_TA" (output)) - (block_io "SR_BLITTER_DACK" (output)) - (block_io "BA[1..0]" (output)) - (block_io "DDRWR_D_SEL1" (output)) - (block_io "VDM_SEL[3..0]" (output)) - (block_io "FB_AD[31..0]" (bidir)) - (mapper - (pt 264 560) - (bidir) - ) - (mapper - (pt 264 48) - (bidir) - ) - (mapper - (pt 0 208) - (bidir) - ) - (mapper - (pt 0 256) - (bidir) - ) - (mapper - (pt 0 304) - (bidir) - ) - (mapper - (pt 264 312) - (bidir) - ) - (mapper - (pt 264 264) - (bidir) - ) - (mapper - (pt 264 536) - (bidir) - ) - (mapper - (pt 264 360) - (bidir) - ) - (mapper - (pt 264 384) - (bidir) - ) - (mapper - (pt 264 408) - (bidir) - ) - (mapper - (pt 264 432) - (bidir) - ) - (mapper - (pt 0 88) - (bidir) - ) - (mapper - (pt 0 160) - (bidir) - ) - (mapper - (pt 264 120) - (bidir) - ) - (mapper - (pt 264 144) - (bidir) - ) - (mapper - (pt 0 112) - (bidir) - ) - (mapper - (pt 0 360) - (bidir) - ) - (mapper - (pt 0 136) - (bidir) - ) - (mapper - (pt 0 40) - (bidir) - ) - (mapper - (pt 0 384) - (bidir) - ) - (mapper - (pt 0 432) - (bidir) - ) - (mapper - (pt 0 456) - (bidir) - ) - (mapper - (pt 0 480) - (bidir) - ) - (mapper - (pt 264 216) - (bidir) - ) - (mapper - (pt 264 456) - (bidir) - ) - (mapper - (pt 264 168) - (bidir) - ) - (mapper - (pt 264 480) - (bidir) - ) - (mapper - (pt 264 504) - (bidir) - ) - (mapper - (pt 0 64) - (bidir) - ) - (mapper - (pt 264 632) - (bidir) - ) - (mapper - (pt 264 608) - (bidir) - ) - (mapper - (pt 0 576) - (bidir) - ) - (mapper - (pt 0 520) - (bidir) - ) - (mapper - (pt 0 184) - (bidir) - ) - (mapper - (pt 0 232) - (bidir) - ) - (mapper - (pt 0 280) - (bidir) - ) - (mapper - (pt 0 328) - (bidir) - ) - (mapper - (pt 264 336) - (bidir) - ) -) -(connector - (text "CLUT_ADR0" (rect 2786 1272 2869 1287)(font "Arial" )) - (pt 2776 1288) - (pt 2848 1288) -) -(connector - (text "CLUT_ADR3" (rect 3082 1744 3165 1759)(font "Arial" )) - (pt 3072 1760) - (pt 3144 1760) -) -(connector - (text "CLUT_ADR2" (rect 3082 1600 3165 1615)(font "Arial" )) - (pt 3072 1616) - (pt 3144 1616) -) -(connector - (pt 3008 1624) - (pt 2984 1624) -) -(connector - (pt 2976 1688) - (pt 2984 1688) -) -(connector - (text "FB_AD[31..0]" (rect 802 1120 885 1135)(font "Arial" )) - (pt 792 1136) - (pt 912 1136) - (bus) -) -(connector - (text "FIFO_D[127..112]" (rect 2546 1248 2659 1263)(font "Arial" )) - (pt 2536 1264) - (pt 2632 1264) - (bus) -) -(connector - (text "FIFO_D[111..96]" (rect 2546 1408 2651 1423)(font "Arial" )) - (pt 2536 1424) - (pt 2632 1424) - (bus) -) -(connector - (text "FIFO_D[95..80]" (rect 2546 1568 2642 1583)(font "Arial" )) - (pt 2536 1584) - (pt 2632 1584) - (bus) -) -(connector - (text "FIFO_D[79..64]" (rect 2546 1728 2642 1743)(font "Arial" )) - (pt 2536 1744) - (pt 2632 1744) - (bus) -) -(connector - (text "FIFO_D[63..48]" (rect 2546 1888 2642 1903)(font "Arial" )) - (pt 2536 1904) - (pt 2632 1904) - (bus) -) -(connector - (text "FIFO_D[47..32]" (rect 2546 2048 2642 2063)(font "Arial" )) - (pt 2536 2064) - (pt 2632 2064) - (bus) -) -(connector - (text "FIFO_D[31..16]" (rect 2546 2208 2642 2223)(font "Arial" )) - (pt 2536 2224) - (pt 2632 2224) - (bus) -) -(connector - (text "FIFO_D[15..0]" (rect 2546 2368 2634 2383)(font "Arial" )) - (pt 2536 2384) - (pt 2632 2384) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 2546 1280 2621 1295)(font "Arial" )) - (pt 2632 1296) - (pt 2536 1296) -) -(connector - (text "PIXEL_CLK" (rect 2546 1440 2621 1455)(font "Arial" )) - (pt 2632 1456) - (pt 2536 1456) -) -(connector - (text "PIXEL_CLK" (rect 2546 1600 2621 1615)(font "Arial" )) - (pt 2632 1616) - (pt 2536 1616) -) -(connector - (text "PIXEL_CLK" (rect 2546 1760 2621 1775)(font "Arial" )) - (pt 2632 1776) - (pt 2536 1776) -) -(connector - (text "PIXEL_CLK" (rect 2546 2080 2621 2095)(font "Arial" )) - (pt 2632 2096) - (pt 2536 2096) -) -(connector - (text "PIXEL_CLK" (rect 2546 2240 2621 2255)(font "Arial" )) - (pt 2632 2256) - (pt 2536 2256) -) -(connector - (text "PIXEL_CLK" (rect 2546 2400 2621 2415)(font "Arial" )) - (pt 2632 2416) - (pt 2536 2416) -) -(connector - (pt 2496 1472) - (pt 2632 1472) -) -(connector - (pt 2496 1632) - (pt 2632 1632) -) -(connector - (pt 2496 1792) - (pt 2632 1792) -) -(connector - (pt 2496 1312) - (pt 2632 1312) -) -(connector - (pt 2496 1952) - (pt 2632 1952) -) -(connector - (pt 2496 2112) - (pt 2632 2112) -) -(connector - (text "COLOR2" (rect 2330 1344 2389 1359)(font "Arial" )) - (pt 2392 1360) - (pt 2320 1360) -) -(connector - (text "COLOR4" (rect 2330 1328 2389 1343)(font "Arial" )) - (pt 2392 1344) - (pt 2320 1344) -) -(connector - (text "COLOR2" (rect 2330 1504 2389 1519)(font "Arial" )) - (pt 2392 1520) - (pt 2320 1520) -) -(connector - (text "COLOR4" (rect 2330 1488 2389 1503)(font "Arial" )) - (pt 2392 1504) - (pt 2320 1504) -) -(connector - (text "COLOR2" (rect 2330 1664 2389 1679)(font "Arial" )) - (pt 2392 1680) - (pt 2320 1680) -) -(connector - (text "COLOR4" (rect 2330 1648 2389 1663)(font "Arial" )) - (pt 2392 1664) - (pt 2320 1664) -) -(connector - (text "COLOR2" (rect 2330 1824 2389 1839)(font "Arial" )) - (pt 2392 1840) - (pt 2320 1840) -) -(connector - (text "COLOR4" (rect 2330 1808 2389 1823)(font "Arial" )) - (pt 2392 1824) - (pt 2320 1824) -) -(connector - (text "COLOR2" (rect 2330 1984 2389 1999)(font "Arial" )) - (pt 2392 2000) - (pt 2320 2000) -) -(connector - (text "COLOR4" (rect 2330 1968 2389 1983)(font "Arial" )) - (pt 2392 1984) - (pt 2320 1984) -) -(connector - (text "COLOR2" (rect 2330 2144 2389 2159)(font "Arial" )) - (pt 2392 2160) - (pt 2320 2160) -) -(connector - (text "COLOR4" (rect 2330 2128 2389 2143)(font "Arial" )) - (pt 2392 2144) - (pt 2320 2144) -) -(connector - (pt 2984 1752) - (pt 3008 1752) -) -(connector - (pt 2984 1624) - (pt 2984 1688) -) -(connector - (pt 2984 1688) - (pt 2984 1752) -) -(connector - (pt 2392 1264) - (pt 2304 1264) -) -(connector - (pt 2392 1424) - (pt 2304 1424) -) -(connector - (pt 2392 1584) - (pt 2304 1584) -) -(connector - (pt 2392 1744) - (pt 2304 1744) -) -(connector - (pt 2392 1904) - (pt 2304 1904) -) -(connector - (pt 2392 2064) - (pt 2304 2064) -) -(connector - (text "CLUT_ADR2A" (rect 2786 1592 2878 1607)(font "Arial" )) - (pt 2776 1608) - (pt 3008 1608) -) -(connector - (text "CLUT_ADR3A" (rect 2786 1752 2878 1767)(font "Arial" )) - (pt 3008 1768) - (pt 2776 1768) -) -(connector - (text "CLUT_ADR7A" (rect 2330 2080 2422 2095)(font "Arial" )) - (pt 2320 2096) - (pt 2392 2096) -) -(connector - (text "CLUT_ADR6A" (rect 2330 2064 2422 2079)(font "Arial" )) - (pt 2320 2080) - (pt 2392 2080) -) -(connector - (text "CLUT_ADR6A" (rect 2330 1920 2422 1935)(font "Arial" )) - (pt 2320 1936) - (pt 2392 1936) -) -(connector - (text "CLUT_ADR5A" (rect 2330 1904 2422 1919)(font "Arial" )) - (pt 2320 1920) - (pt 2392 1920) -) -(connector - (text "CLUT_ADR7A" (rect 2330 1776 2422 1791)(font "Arial" )) - (pt 2320 1792) - (pt 2392 1792) -) -(connector - (text "CLUT_ADR5A" (rect 2330 1760 2422 1775)(font "Arial" )) - (pt 2320 1776) - (pt 2392 1776) -) -(connector - (text "CLUT_ADR4A" (rect 2330 1744 2422 1759)(font "Arial" )) - (pt 2320 1760) - (pt 2392 1760) -) -(connector - (text "CLUT_ADR6A" (rect 2330 1616 2422 1631)(font "Arial" )) - (pt 2320 1632) - (pt 2392 1632) -) -(connector - (text "CLUT_ADR4A" (rect 2330 1600 2422 1615)(font "Arial" )) - (pt 2320 1616) - (pt 2392 1616) -) -(connector - (text "CLUT_ADR3A" (rect 2330 1584 2422 1599)(font "Arial" )) - (pt 2320 1600) - (pt 2392 1600) -) -(connector - (text "CLUT_ADR5A" (rect 2330 1456 2422 1471)(font "Arial" )) - (pt 2320 1472) - (pt 2392 1472) -) -(connector - (text "CLUT_ADR3A" (rect 2330 1440 2422 1455)(font "Arial" )) - (pt 2320 1456) - (pt 2392 1456) -) -(connector - (text "CLUT_ADR4A" (rect 2330 1296 2422 1311)(font "Arial" )) - (pt 2320 1312) - (pt 2392 1312) -) -(connector - (text "CLUT_ADR2A" (rect 2330 1280 2422 1295)(font "Arial" )) - (pt 2320 1296) - (pt 2392 1296) -) -(connector - (text "CLUT_ADR2A" (rect 2330 1424 2422 1439)(font "Arial" )) - (pt 2392 1440) - (pt 2320 1440) -) -(connector - (text "CLUT_ADR7A" (rect 2570 2256 2662 2271)(font "Arial" )) - (pt 2560 2272) - (pt 2632 2272) -) -(connector - (text "CLUT_ADR0" (rect 2554 2416 2637 2431)(font "Arial" )) - (pt 2632 2432) - (pt 2544 2432) -) -(connector - (text "PIXEL_CLK" (rect 2546 1920 2621 1935)(font "Arial" )) - (pt 2632 1936) - (pt 2536 1936) -) -(connector - (text "CLUT_ADR4A" (rect 2794 1912 2886 1927)(font "Arial" )) - (pt 2776 1928) - (pt 2904 1928) -) -(connector - (text "CLUT_ADR5A" (rect 2786 2072 2878 2087)(font "Arial" )) - (pt 2776 2088) - (pt 2904 2088) -) -(connector - (text "CLUT_ADR6A" (rect 2794 2232 2886 2247)(font "Arial" )) - (pt 2776 2248) - (pt 2904 2248) -) -(connector - (text "CLUT_ADR7A" (rect 2794 2392 2886 2407)(font "Arial" )) - (pt 2776 2408) - (pt 2904 2408) -) -(connector - (text "COLOR8" (rect 2834 1928 2893 1943)(font "Arial" )) - (pt 2904 1944) - (pt 2824 1944) -) -(connector - (text "COLOR8" (rect 2834 2088 2893 2103)(font "Arial" )) - (pt 2904 2104) - (pt 2824 2104) -) -(connector - (text "COLOR8" (rect 2834 2248 2893 2263)(font "Arial" )) - (pt 2904 2264) - (pt 2824 2264) -) -(connector - (text "COLOR8" (rect 2834 2408 2893 2423)(font "Arial" )) - (pt 2904 2424) - (pt 2824 2424) -) -(connector - (text "CLUT_ADR4" (rect 3090 1928 3173 1943)(font "Arial" )) - (pt 3080 1944) - (pt 3152 1944) -) -(connector - (pt 3024 2112) - (pt 3016 2112) -) -(connector - (pt 3016 2112) - (pt 3016 2144) -) -(connector - (text "CLUT_ADR5" (rect 3098 2088 3181 2103)(font "Arial" )) - (pt 3088 2104) - (pt 3160 2104) -) -(connector - (text "CLUT_ADR7" (rect 3106 2408 3189 2423)(font "Arial" )) - (pt 3096 2424) - (pt 3168 2424) -) -(connector - (text "CLUT_ADR6" (rect 3098 2248 3181 2263)(font "Arial" )) - (pt 3088 2264) - (pt 3160 2264) -) -(connector - (pt 3032 2432) - (pt 3024 2432) -) -(connector - (pt 3024 2432) - (pt 3024 2464) -) -(connector - (pt 3016 1952) - (pt 3008 1952) -) -(connector - (pt 3008 1952) - (pt 3008 1984) -) -(connector - (pt 3024 2272) - (pt 3016 2272) -) -(connector - (pt 3016 2272) - (pt 3016 2304) -) -(connector - (pt 3016 1936) - (pt 2968 1936) -) -(connector - (pt 3024 2096) - (pt 2968 2096) -) -(connector - (pt 3024 2256) - (pt 2968 2256) -) -(connector - (pt 3032 2416) - (pt 2968 2416) -) -(connector - (text "CLUT_OFF0" (rect 2938 1968 3019 1983)(font "Arial" )) - (pt 2928 1984) - (pt 3008 1984) -) -(connector - (text "CLUT_OFF1" (rect 2946 2128 3027 2143)(font "Arial" )) - (pt 2936 2144) - (pt 3016 2144) -) -(connector - (text "CLUT_OFF2" (rect 2946 2288 3027 2303)(font "Arial" )) - (pt 2936 2304) - (pt 3016 2304) -) -(connector - (text "CLUT_OFF3" (rect 2954 2448 3035 2463)(font "Arial" )) - (pt 2944 2464) - (pt 3024 2464) -) -(connector - (text "COLOR4" (rect 2834 1664 2893 1679)(font "Arial" )) - (pt 2824 1680) - (pt 2912 1680) -) -(connector - (text "COLOR8" (rect 2834 1680 2893 1695)(font "Arial" )) - (pt 2912 1696) - (pt 2824 1696) -) -(connector - (text "CLUT_ADR1" (rect 3082 1440 3165 1455)(font "Arial" )) - (pt 3072 1456) - (pt 3144 1456) -) -(connector - (pt 3008 1464) - (pt 2992 1464) -) -(connector - (pt 2992 1464) - (pt 2992 1496) -) -(connector - (pt 2992 1496) - (pt 2984 1496) -) -(connector - (text "COLOR4" (rect 2842 1480 2901 1495)(font "Arial" )) - (pt 2832 1496) - (pt 2920 1496) -) -(connector - (pt 2920 1504) - (pt 2912 1504) -) -(connector - (pt 2912 1504) - (pt 2912 1520) -) -(connector - (text "COLOR8" (rect 2842 1504 2901 1519)(font "Arial" )) - (pt 2912 1520) - (pt 2832 1520) -) -(connector - (pt 2912 1488) - (pt 2912 1472) -) -(connector - (pt 2920 1488) - (pt 2912 1488) -) -(connector - (text "COLOR2" (rect 2842 1456 2901 1471)(font "Arial" )) - (pt 2912 1472) - (pt 2832 1472) -) -(connector - (text "CLUT_ADR1A" (rect 2786 1432 2878 1447)(font "Arial" )) - (pt 3008 1448) - (pt 2776 1448) -) -(connector - (text "CLUT_ADR1A" (rect 2330 1264 2422 1279)(font "Arial" )) - (pt 2320 1280) - (pt 2392 1280) -) -(connector - (text "FIFO_D[127..112]" (rect 2098 2680 2211 2695)(font "Arial" )) - (pt 2088 2696) - (pt 2224 2696) - (bus) -) -(connector - (text "FIFO_D[111..96]" (rect 2098 2664 2203 2679)(font "Arial" )) - (pt 2088 2680) - (pt 2224 2680) - (bus) -) -(connector - (text "FIFO_D[95..80]" (rect 2098 2648 2194 2663)(font "Arial" )) - (pt 2088 2664) - (pt 2224 2664) - (bus) -) -(connector - (text "FIFO_D[79..64]" (rect 2098 2632 2194 2647)(font "Arial" )) - (pt 2088 2648) - (pt 2224 2648) - (bus) -) -(connector - (text "FIFO_D[63..48]" (rect 2098 2616 2194 2631)(font "Arial" )) - (pt 2088 2632) - (pt 2224 2632) - (bus) -) -(connector - (text "FIFO_D[47..32]" (rect 2098 2600 2194 2615)(font "Arial" )) - (pt 2088 2616) - (pt 2224 2616) - (bus) -) -(connector - (text "FIFO_D[31..16]" (rect 2098 2584 2194 2599)(font "Arial" )) - (pt 2088 2600) - (pt 2224 2600) - (bus) -) -(connector - (text "FIFO_D[15..0]" (rect 2098 2568 2186 2583)(font "Arial" )) - (pt 2088 2584) - (pt 2224 2584) - (bus) -) -(connector - (text "FIFO_D[95..64]" (rect 1490 2744 1586 2759)(font "Arial" )) - (pt 1616 2760) - (pt 1480 2760) - (bus) -) -(connector - (text "FIFO_D[127..96]" (rect 1490 2760 1595 2775)(font "Arial" )) - (pt 1616 2776) - (pt 1480 2776) - (bus) -) -(connector - (text "CLUT_MUX_ADR[1..0]" (rect 1594 2824 1737 2839)(font "Arial" )) - (pt 1696 2840) - (pt 1592 2840) - (bus) -) -(connector - (text "FIFO_D[63..32]" (rect 1490 2728 1586 2743)(font "Arial" )) - (pt 1480 2744) - (pt 1616 2744) - (bus) -) -(connector - (text "FIFO_D[31..0]" (rect 1490 2712 1578 2727)(font "Arial" )) - (pt 1480 2728) - (pt 1616 2728) - (bus) -) -(connector - (pt 880 1568) - (pt 880 1592) -) -(connector - (text "FB_VDOE3" (rect 890 1576 963 1591)(font "Arial" )) - (pt 880 1592) - (pt 944 1592) -) -(connector - (pt 880 1448) - (pt 880 1472) -) -(connector - (text "FB_VDOE2" (rect 890 1456 963 1471)(font "Arial" )) - (pt 880 1472) - (pt 944 1472) -) -(connector - (pt 880 1328) - (pt 880 1352) -) -(connector - (text "FB_VDOE1" (rect 890 1336 963 1351)(font "Arial" )) - (pt 880 1352) - (pt 944 1352) -) -(connector - (pt 880 1208) - (pt 880 1232) -) -(connector - (text "FB_VDOE0" (rect 890 1216 963 1231)(font "Arial" )) - (pt 880 1232) - (pt 944 1232) -) -(connector - (pt 808 1192) - (pt 792 1192) - (bus) -) -(connector - (pt 792 1136) - (pt 792 1192) - (bus) -) -(connector - (pt 808 1312) - (pt 792 1312) - (bus) -) -(connector - (pt 792 1192) - (pt 792 1312) - (bus) -) -(connector - (pt 808 1432) - (pt 792 1432) - (bus) -) -(connector - (pt 920 1432) - (pt 960 1432) - (bus) -) -(connector - (pt 792 1312) - (pt 792 1432) - (bus) -) -(connector - (pt 808 1552) - (pt 792 1552) - (bus) -) -(connector - (pt 920 1552) - (pt 960 1552) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 1738 2824 1813 2839)(font "Arial" )) - (pt 1728 2840) - (pt 1808 2840) -) -(connector - (text "CLUT_MUX_ADR[3..0]" (rect 2722 2880 2865 2895)(font "Arial" )) - (pt 2712 2896) - (pt 2904 2896) - (bus) -) -(connector - (text "FB_AD[31..0]" (rect 570 1904 653 1919)(font "Arial" )) - (pt 680 1920) - (pt 560 1920) - (bus) -) -(connector - (text "nFB_CS1" (rect 202 2040 264 2055)(font "Arial" )) - (pt 192 2056) - (pt 296 2056) -) -(connector - (text "nFB_CS2" (rect 202 2064 264 2079)(font "Arial" )) - (pt 192 2080) - (pt 296 2080) -) -(connector - (text "nFB_CS3" (rect 202 2088 264 2103)(font "Arial" )) - (pt 192 2104) - (pt 296 2104) -) -(connector - (text "nFB_WR" (rect 202 2112 259 2127)(font "Arial" )) - (pt 192 2128) - (pt 296 2128) -) -(connector - (text "FB_SIZE0" (rect 202 2136 266 2151)(font "Arial" )) - (pt 192 2152) - (pt 296 2152) -) -(connector - (text "FB_SIZE1" (rect 202 2160 266 2175)(font "Arial" )) - (pt 192 2176) - (pt 296 2176) -) -(connector - (text "nFB_OE" (rect 202 2184 256 2199)(font "Arial" )) - (pt 192 2200) - (pt 296 2200) -) -(connector - (text "VA[12..0]" (rect 570 2168 625 2183)(font "Arial" )) - (pt 632 2184) - (pt 560 2184) - (bus) -) -(connector - (text "nVWE" (rect 570 2192 608 2207)(font "Arial" )) - (pt 632 2208) - (pt 560 2208) -) -(connector - (text "nVCAS" (rect 570 2216 614 2231)(font "Arial" )) - (pt 632 2232) - (pt 560 2232) -) -(connector - (text "nVRAS" (rect 570 2240 614 2255)(font "Arial" )) - (pt 632 2256) - (pt 560 2256) -) -(connector - (text "nVCS" (rect 570 2264 606 2279)(font "Arial" )) - (pt 632 2280) - (pt 560 2280) -) -(connector - (text "VCKE" (rect 570 2288 607 2303)(font "Arial" )) - (pt 632 2304) - (pt 560 2304) -) -(connector - (text "MAIN_CLK" (rect 202 1944 271 1959)(font "Arial" )) - (pt 296 1960) - (pt 192 1960) -) -(connector - (text "FB_ALE" (rect 202 2016 253 2031)(font "Arial" )) - (pt 296 2032) - (pt 192 2032) -) -(connector - (text "FB_LE[3..0]" (rect 570 1976 644 1991)(font "Arial" )) - (pt 560 1992) - (pt 680 1992) - (bus) -) -(connector - (text "FB_VDOE[3..0]" (rect 570 2000 665 2015)(font "Arial" )) - (pt 560 2016) - (pt 680 2016) - (bus) -) -(connector - (text "DDR_SYNC_66M" (rect 210 1968 324 1983)(font "Arial" )) - (pt 200 1984) - (pt 296 1984) -) -(connector - (text "FB_ADR[31..0]" (rect 202 1992 296 2007)(font "Arial" )) - (pt 192 2008) - (pt 296 2008) - (bus) -) -(connector - (text "nRSTO" (rect 202 1896 249 1911)(font "Arial" )) - (pt 192 1912) - (pt 296 1912) -) -(connector - (text "VIDEO_RAM_CTR[15..0]" (rect 178 2240 334 2255)(font "Arial" )) - (pt 296 2256) - (pt 168 2256) - (bus) -) -(connector - (pt 792 1648) - (pt 920 1648) - (bus) -) -(connector - (pt 792 1792) - (pt 920 1792) - (bus) -) -(connector - (pt 792 1928) - (pt 920 1928) - (bus) -) -(connector - (pt 792 2064) - (pt 920 2064) - (bus) -) -(connector - (text "FB_LE0" (rect 826 1664 877 1679)(font "Arial" )) - (pt 920 1680) - (pt 816 1680) -) -(connector - (text "FB_LE1" (rect 834 1808 885 1823)(font "Arial" )) - (pt 920 1824) - (pt 824 1824) -) -(connector - (text "FB_LE2" (rect 834 1944 885 1959)(font "Arial" )) - (pt 920 1960) - (pt 824 1960) -) -(connector - (text "FB_LE3" (rect 834 2080 885 2095)(font "Arial" )) - (pt 920 2096) - (pt 824 2096) -) -(connector - (text "DDR_SYNC_66M" (rect 834 1648 948 1663)(font "Arial" )) - (pt 824 1664) - (pt 920 1664) -) -(connector - (text "DDR_SYNC_66M" (rect 834 1792 948 1807)(font "Arial" )) - (pt 824 1808) - (pt 920 1808) -) -(connector - (text "DDR_SYNC_66M" (rect 834 1928 948 1943)(font "Arial" )) - (pt 824 1944) - (pt 920 1944) -) -(connector - (text "DDR_SYNC_66M" (rect 834 2064 948 2079)(font "Arial" )) - (pt 824 2080) - (pt 920 2080) -) -(connector - (pt 792 1792) - (pt 792 1928) - (bus) -) -(connector - (pt 792 1928) - (pt 792 2064) - (bus) -) -(connector - (pt 792 1432) - (pt 792 1552) - (bus) -) -(connector - (pt 792 1552) - (pt 792 1648) - (bus) -) -(connector - (pt 792 1648) - (pt 792 1792) - (bus) -) -(connector - (text "FIFO_RDE" (rect 1450 1408 1519 1423)(font "Arial" )) - (pt 1440 1424) - (pt 1536 1424) -) -(connector - (text "VDP_IN[63..32]" (rect 1114 1392 1211 1407)(font "Arial" )) - (pt 1104 1408) - (pt 1192 1408) - (bus) -) -(connector - (pt 1328 2856) - (pt 1360 2856) -) -(connector - (pt 1360 2904) - (pt 1328 2904) -) -(connector - (pt 1384 2840) - (pt 1384 2824) -) -(connector - (pt 1384 2880) - (pt 1384 2888) -) -(connector - (pt 1344 2880) - (pt 1384 2880) -) -(connector - (pt 1344 2928) - (pt 1384 2928) -) -(connector - (pt 1384 2928) - (pt 1384 2936) -) -(connector - (pt 1328 3008) - (pt 1360 3008) -) -(connector - (pt 1384 2984) - (pt 1384 2992) -) -(connector - (text "VDQS0" (rect 1418 2840 1465 2855)(font "Arial" )) - (pt 1408 2856) - (pt 1520 2856) -) -(connector - (text "VDQS1" (rect 1418 2888 1465 2903)(font "Arial" )) - (pt 1408 2904) - (pt 1520 2904) -) -(connector - (text "VDQS2" (rect 1418 2936 1465 2951)(font "Arial" )) - (pt 1408 2952) - (pt 1520 2952) -) -(connector - (text "VDQS3" (rect 1418 2992 1465 3007)(font "Arial" )) - (pt 1408 3008) - (pt 1520 3008) -) -(connector - (pt 1344 2984) - (pt 1384 2984) -) -(connector - (text "FB_DDR[63..32]" (rect 1074 1936 1179 1951)(font "Arial" )) - (pt 1064 1952) - (pt 1160 1952) - (bus) -) -(connector - (text "FB_DDR[31..0]" (rect 1074 2072 1170 2087)(font "Arial" )) - (pt 1064 2088) - (pt 1160 2088) - (bus) -) -(connector - (text "FB_DDR[95..64]" (rect 1074 1800 1179 1815)(font "Arial" )) - (pt 1064 1816) - (pt 1160 1816) - (bus) -) -(connector - (text "FB_DDR[127..96]" (rect 1074 1656 1187 1671)(font "Arial" )) - (pt 1064 1672) - (pt 1160 1672) - (bus) -) -(connector - (text "BLITTER_ADR[31..0]" (rect 194 2288 328 2303)(font "Arial" )) - (pt 184 2304) - (pt 296 2304) - (bus) -) -(connector - (text "BLITTER_SIG" (rect 194 2312 283 2327)(font "Arial" )) - (pt 184 2328) - (pt 296 2328) -) -(connector - (text "BLITTER_WR" (rect 194 2336 283 2351)(font "Arial" )) - (pt 184 2352) - (pt 296 2352) -) -(connector - (text "SR_FIFO_WRE" (rect 570 2072 670 2087)(font "Arial" )) - (pt 648 2088) - (pt 560 2088) -) -(connector - (text "SR_DDR_FB" (rect 570 2312 656 2327)(font "Arial" )) - (pt 640 2328) - (pt 560 2328) -) -(connector - (text "SR_FIFO_WRE" (rect 842 2280 942 2295)(font "Arial" )) - (pt 920 2296) - (pt 832 2296) -) -(connector - (text "SR_DDR_WR" (rect 570 2024 662 2039)(font "Arial" )) - (pt 664 2040) - (pt 560 2040) -) -(connector - (text "SR_VDMP[7..0]" (rect 570 2336 667 2351)(font "Arial" )) - (pt 560 2352) - (pt 664 2352) - (bus) -) -(connector - (text "SR_DDRWR_D_SEL" (rect 570 2360 708 2375)(font "Arial" )) - (pt 560 2376) - (pt 664 2376) -) -(connector - (text "BLITTER_ON" (rect 226 2920 313 2935)(font "Arial" )) - (pt 296 2936) - (pt 216 2936) -) -(connector - (text "BLITTER_RUN" (rect 578 2712 675 2727)(font "Arial" )) - (pt 568 2728) - (pt 648 2728) -) -(connector - (text "VDVZ[127..0]" (rect 810 2920 892 2935)(font "Arial" )) - (pt 800 2936) - (pt 888 2936) - (bus) -) -(connector - (text "BLITTER_DOUT[127..0]" (rect 578 2744 731 2759)(font "Arial" )) - (pt 680 2760) - (pt 568 2760) - (bus) -) -(connector - (text "BLITTER_ADR[31..0]" (rect 578 2776 712 2791)(font "Arial" )) - (pt 568 2792) - (pt 680 2792) - (bus) -) -(connector - (text "BLITTER_SIG" (rect 578 2800 667 2815)(font "Arial" )) - (pt 568 2816) - (pt 680 2816) -) -(connector - (text "BLITTER_WR" (rect 578 2824 667 2839)(font "Arial" )) - (pt 568 2840) - (pt 680 2840) -) -(connector - (text "nFB_CS1" (rect 202 2688 264 2703)(font "Arial" )) - (pt 192 2704) - (pt 296 2704) -) -(connector - (text "nFB_CS2" (rect 202 2712 264 2727)(font "Arial" )) - (pt 192 2728) - (pt 296 2728) -) -(connector - (text "nFB_CS3" (rect 202 2736 264 2751)(font "Arial" )) - (pt 192 2752) - (pt 296 2752) -) -(connector - (text "nFB_WR" (rect 202 2760 259 2775)(font "Arial" )) - (pt 192 2776) - (pt 296 2776) -) -(connector - (text "FB_SIZE0" (rect 202 2784 266 2799)(font "Arial" )) - (pt 192 2800) - (pt 296 2800) -) -(connector - (text "FB_SIZE1" (rect 202 2808 266 2823)(font "Arial" )) - (pt 192 2824) - (pt 296 2824) -) -(connector - (text "nFB_OE" (rect 202 2832 256 2847)(font "Arial" )) - (pt 192 2848) - (pt 296 2848) -) -(connector - (text "MAIN_CLK" (rect 202 2616 271 2631)(font "Arial" )) - (pt 296 2632) - (pt 192 2632) -) -(connector - (text "FB_ALE" (rect 202 2664 253 2679)(font "Arial" )) - (pt 296 2680) - (pt 192 2680) -) -(connector - (text "FB_ADR[31..0]" (rect 202 2640 296 2655)(font "Arial" )) - (pt 192 2656) - (pt 296 2656) - (bus) -) -(connector - (text "nRSTO" (rect 202 2568 249 2583)(font "Arial" )) - (pt 192 2584) - (pt 296 2584) -) -(connector - (text "VIDEO_RAM_CTR[15..0]" (rect 178 2896 334 2911)(font "Arial" )) - (pt 296 2912) - (pt 168 2912) - (bus) -) -(connector - (text "FB_AD[31..0]" (rect 578 2608 661 2623)(font "Arial" )) - (pt 688 2624) - (pt 568 2624) - (bus) -) -(connector - (text "DDRCLK0" (rect 842 2160 910 2175)(font "Arial" )) - (pt 832 2176) - (pt 920 2176) -) -(connector - (text "SR_DDR_FB" (rect 850 2176 936 2191)(font "Arial" )) - (pt 920 2192) - (pt 840 2192) -) -(connector - (pt 920 1312) - (pt 960 1312) - (bus) -) -(connector - (text "VDP_IN[31..0]" (rect 1114 1512 1203 1527)(font "Arial" )) - (pt 1104 1528) - (pt 1192 1528) - (bus) -) -(connector - (text "DDR_FB1" (rect 1106 1304 1172 1319)(font "Arial" )) - (pt 1104 1320) - (pt 1176 1320) -) -(connector - (text "DDR_FB0" (rect 1106 1544 1172 1559)(font "Arial" )) - (pt 1104 1560) - (pt 1176 1560) -) -(connector - (text "FIFO_WRE" (rect 1074 2280 1145 2295)(font "Arial" )) - (pt 1064 2296) - (pt 1144 2296) -) -(connector - (text "DDRCLK0" (rect 194 2592 262 2607)(font "Arial" )) - (pt 296 2608) - (pt 184 2608) -) -(connector - (text "DDRCLK0" (rect 194 1920 262 1935)(font "Arial" )) - (pt 296 1936) - (pt 184 1936) -) -(connector - (text "VIDEO_DDR_TA" (rect 570 2488 677 2503)(font "Arial" )) - (pt 560 2504) - (pt 664 2504) -) -(connector - (text "BLITTER_TA" (rect 578 2960 660 2975)(font "Arial" )) - (pt 568 2976) - (pt 672 2976) -) -(connector - (pt 432 1808) - (pt 472 1808) -) -(connector - (text "BLITTER_TA" (rect 274 1792 356 1807)(font "Arial" )) - (pt 264 1808) - (pt 368 1808) -) -(connector - (pt 360 1816) - (pt 360 1832) -) -(connector - (pt 368 1816) - (pt 360 1816) -) -(connector - (pt 360 1800) - (pt 360 1784) -) -(connector - (pt 368 1800) - (pt 360 1800) -) -(connector - (text "VIDEO_DDR_TA" (rect 258 1768 365 1783)(font "Arial" )) - (pt 360 1784) - (pt 264 1784) -) -(connector - (text "VDP_OUT[63..0]" (rect 1506 1328 1611 1343)(font "Arial" )) - (pt 1584 1344) - (pt 1496 1344) - (bus) -) -(connector - (text "FB_DDR[127..64]" (rect 1258 1352 1371 1367)(font "Arial" )) - (pt 1224 1368) - (pt 1344 1368) - (bus) -) -(connector - (text "BLITTER_DOUT[63..0]" (rect 1234 1304 1379 1319)(font "Arial" )) - (pt 1224 1320) - (pt 1344 1320) - (bus) -) -(connector - (text "BLITTER_DOUT[127..64]" (rect 1234 1320 1395 1335)(font "Arial" )) - (pt 1224 1336) - (pt 1344 1336) - (bus) -) -(connector - (text "FB_DDR[63..0]" (rect 1258 1336 1354 1351)(font "Arial" )) - (pt 1224 1352) - (pt 1344 1352) - (bus) -) -(connector - (text "VDR[31..0]" (rect 930 1176 998 1191)(font "Arial" )) - (pt 920 1192) - (pt 1008 1192) - (bus) -) -(connector - (text "DDRWR_D_SEL[1..0]" (rect 1298 1400 1438 1415)(font "Arial" )) - (pt 1424 1416) - (pt 1288 1416) - (bus) -) -(connector - (pt 1424 1392) - (pt 1424 1416) - (bus) -) -(connector - (text "DDR_FB0" (rect 1106 1424 1172 1439)(font "Arial" )) - (pt 1104 1440) - (pt 1176 1440) -) -(connector - (text "VDP_IN[31..0]" (rect 1114 1272 1203 1287)(font "Arial" )) - (pt 1104 1288) - (pt 1192 1288) - (bus) -) -(connector - (text "BLITTER_DACK[0]" (rect 802 2952 922 2967)(font "Arial" )) - (pt 888 2968) - (pt 808 2968) -) -(connector - (text "BLITTER_DIN[127..0]" (rect 1042 2944 1180 2959)(font "Arial" )) - (pt 1144 2960) - (pt 1032 2960) - (bus) -) -(connector - (text "BLITTER_DIN[127..0]" (rect 194 2944 332 2959)(font "Arial" )) - (pt 296 2960) - (pt 184 2960) - (bus) -) -(connector - (text "SR_BLITTER_DACK" (rect 570 2464 703 2479)(font "Arial" )) - (pt 664 2480) - (pt 560 2480) -) -(connector - (text "DDRCLK0" (rect 1114 1528 1182 1543)(font "Arial" )) - (pt 1104 1544) - (pt 1176 1544) -) -(connector - (text "DDRCLK0" (rect 1114 1408 1182 1423)(font "Arial" )) - (pt 1104 1424) - (pt 1176 1424) -) -(connector - (text "DDRCLK0" (rect 1114 1288 1182 1303)(font "Arial" )) - (pt 1104 1304) - (pt 1176 1304) -) -(connector - (text "DDRCLK0" (rect 1650 1384 1718 1399)(font "Arial" )) - (pt 1712 1400) - (pt 1640 1400) -) -(connector - (text "DDRCLK0" (rect 810 2936 878 2951)(font "Arial" )) - (pt 800 2952) - (pt 888 2952) -) -(connector - (text "DDRCLK0" (rect 842 2264 910 2279)(font "Arial" )) - (pt 832 2280) - (pt 920 2280) -) -(connector - (text "DDR_FB[4..0]" (rect 1074 2176 1162 2191)(font "Arial" )) - (pt 1064 2192) - (pt 1168 2192) - (bus) -) -(connector - (text "BLITTER_DACK[4..0]" (rect 202 2864 337 2879)(font "Arial" )) - (pt 192 2880) - (pt 296 2880) - (bus) -) -(connector - (text "CLK33M" (rect 218 2432 273 2447)(font "Arial" )) - (pt 208 2448) - (pt 296 2448) -) -(connector - (text "FIFO_D[127..0]" (rect 2170 1416 2266 1431)(font "Arial" )) - (pt 2168 1432) - (pt 2232 1432) - (bus) -) -(connector - (pt 2632 2208) - (pt 2512 2208) -) -(connector - (pt 2632 1728) - (pt 2512 1728) -) -(connector - (pt 2632 1888) - (pt 2512 1888) -) -(connector - (pt 2512 1728) - (pt 2512 1888) -) -(connector - (pt 2632 2048) - (pt 2512 2048) -) -(connector - (pt 2512 1888) - (pt 2512 2048) -) -(connector - (pt 2632 1248) - (pt 2512 1248) -) -(connector - (pt 2632 1408) - (pt 2512 1408) -) -(connector - (pt 2632 1568) - (pt 2512 1568) -) -(connector - (pt 2512 1568) - (pt 2512 1728) -) -(connector - (text "PIXEL_CLK" (rect 1634 1432 1709 1447)(font "Arial" )) - (pt 1640 1448) - (pt 1712 1448) -) -(connector - (text "PIXEL_CLK" (rect 1938 1424 2013 1439)(font "Arial" )) - (pt 1928 1440) - (pt 2000 1440) -) -(connector - (text "FIFO_RDE" (rect 1914 1440 1983 1455)(font "Arial" )) - (pt 1904 1456) - (pt 2000 1456) -) -(connector - (text "PIXEL_CLK" (rect 2018 1552 2093 1567)(font "Arial" )) - (pt 2008 1568) - (pt 2080 1568) -) -(connector - (text "FIFO_RDE" (rect 1994 1536 2063 1551)(font "Arial" )) - (pt 1984 1552) - (pt 2080 1552) -) -(connector - (pt 2512 1408) - (pt 2512 1552) -) -(connector - (pt 2512 1552) - (pt 2512 1568) -) -(connector - (pt 2144 1552) - (pt 2512 1552) -) -(connector - (pt 2512 2368) - (pt 2632 2368) -) -(connector - (pt 2512 2048) - (pt 2512 2208) -) -(connector - (pt 2512 2208) - (pt 2512 2368) -) -(connector - (text "DDR_WR" (rect 1290 2808 1353 2823)(font "Arial" )) - (pt 1280 2824) - (pt 1344 2824) -) -(connector - (pt 1344 2824) - (pt 1384 2824) -) -(connector - (pt 1344 2824) - (pt 1344 2880) -) -(connector - (pt 1344 2880) - (pt 1344 2928) -) -(connector - (pt 1344 2928) - (pt 1344 2984) -) -(connector - (pt 1328 2856) - (pt 1328 2904) -) -(connector - (pt 1328 2904) - (pt 1328 2952) -) -(connector - (pt 1328 2952) - (pt 1328 3008) -) -(connector - (text "DDRCLK0" (rect 1218 2936 1286 2951)(font "Arial" )) - (pt 1208 2952) - (pt 1328 2952) -) -(connector - (pt 1328 2952) - (pt 1360 2952) -) -(connector - (text "VDP_OUT[63..32]" (rect 1234 1520 1347 1535)(font "Arial" )) - (pt 1312 1536) - (pt 1224 1536) - (bus) -) -(connector - (text "VDP_OUT[31..0]" (rect 1234 1536 1339 1551)(font "Arial" )) - (pt 1312 1552) - (pt 1224 1552) - (bus) -) -(connector - (text "VDP_IN[63..32]" (rect 1562 1536 1659 1551)(font "Arial" )) - (pt 1552 1552) - (pt 1640 1552) - (bus) -) -(connector - (text "VD[31..0]" (rect 1578 1552 1635 1567)(font "Arial" )) - (pt 1640 1568) - (pt 1552 1568) - (bus) -) -(connector - (text "DDRCLK3" (rect 1250 1584 1318 1599)(font "Arial" )) - (pt 1312 1600) - (pt 1240 1600) -) -(connector - (text "VDP_IN[31..0]" (rect 1554 1520 1643 1535)(font "Arial" )) - (pt 1552 1536) - (pt 1632 1536) - (bus) -) -(connector - (text "DDRCLK1" (rect 1250 1568 1318 1583)(font "Arial" )) - (pt 1312 1584) - (pt 1240 1584) -) -(connector - (text "VDR[31..0]" (rect 1858 1568 1926 1583)(font "Arial" )) - (pt 1848 1584) - (pt 1936 1584) - (bus) -) -(connector - (text "DDR_SYNC_66M" (rect 1602 1584 1716 1599)(font "Arial" )) - (pt 1592 1600) - (pt 1688 1600) -) -(connector - (pt 1552 1584) - (pt 1688 1584) - (bus) -) -(connector - (text "VDOUT_OE" (rect 1242 1552 1318 1567)(font "Arial" )) - (pt 1232 1568) - (pt 1312 1568) -) -(connector - (text "DDRCLK3" (rect 1170 2472 1238 2487)(font "Arial" )) - (pt 1160 2488) - (pt 1240 2488) -) -(connector - (text "VDM[3..0]" (rect 1482 2440 1542 2455)(font "Arial" )) - (pt 1536 2456) - (pt 1472 2456) - (bus) -) -(connector - (text "VDMP[7..4]" (rect 1170 2440 1239 2455)(font "Arial" )) - (pt 1160 2456) - (pt 1240 2456) - (bus) -) -(connector - (text "VDMP[3..0]" (rect 1170 2456 1239 2471)(font "Arial" )) - (pt 1160 2472) - (pt 1240 2472) - (bus) -) -(connector - (text "VDMP[7..0]" (rect 1242 2672 1311 2687)(font "Arial" )) - (pt 1232 2688) - (pt 1304 2688) - (bus) -) -(connector - (text "BA[1..0]" (rect 570 2120 618 2135)(font "Arial" )) - (pt 632 2136) - (pt 560 2136) - (bus) -) -(connector - (text "DDRWR_D_SEL0" (rect 1066 2768 1184 2783)(font "Arial" )) - (pt 1056 2784) - (pt 1152 2784) -) -(connector - (text "DDRCLK3" (rect 930 2784 998 2799)(font "Arial" )) - (pt 928 2800) - (pt 992 2800) -) -(connector - (text "SR_VDMP[7..0]" (rect 1002 2656 1099 2671)(font "Arial" )) - (pt 992 2672) - (pt 1088 2672) - (bus) -) -(connector - (text "SR_DDRWR_D_SEL" (rect 890 2768 1028 2783)(font "Arial" )) - (pt 888 2784) - (pt 992 2784) -) -(connector - (text "DDRWR_D_SEL1" (rect 570 2392 688 2407)(font "Arial" )) - (pt 656 2408) - (pt 560 2408) -) -(connector - (text "VDOUT_OE" (rect 1386 2328 1462 2343)(font "Arial" )) - (pt 1376 2344) - (pt 1456 2344) -) -(connector - (text "DDR_WR" (rect 1258 2336 1321 2351)(font "Arial" )) - (pt 1248 2352) - (pt 1312 2352) -) -(connector - (text "SR_DDR_WR" (rect 1242 2320 1334 2335)(font "Arial" )) - (pt 1248 2336) - (pt 1312 2336) -) -(connector - (text "DDRCLK3" (rect 906 2400 974 2415)(font "Arial" )) - (pt 904 2416) - (pt 968 2416) -) -(connector - (text "SR_DDR_WR" (rect 898 2384 990 2399)(font "Arial" )) - (pt 896 2400) - (pt 968 2400) -) -(connector - (text "DDR_WR" (rect 1042 2384 1105 2399)(font "Arial" )) - (pt 1032 2400) - (pt 1096 2400) -) -(connector - (text "SR_BLITTER_DACK" (rect 810 2560 943 2575)(font "Arial" )) - (pt 904 2576) - (pt 800 2576) -) -(connector - (text "DDRCLK0" (rect 826 2544 894 2559)(font "Arial" )) - (pt 816 2560) - (pt 904 2560) -) -(connector - (text "BLITTER_DACK[4..0]" (rect 1058 2560 1193 2575)(font "Arial" )) - (pt 1048 2576) - (pt 1152 2576) - (bus) -) -(connector - (text "DDRCLK2" (rect 1018 2672 1086 2687)(font "Arial" )) - (pt 1008 2688) - (pt 1088 2688) -) -(connector - (pt 1696 2840) - (pt 1696 2816) - (bus) -) -(connector - (pt 1832 2760) - (pt 1768 2760) - (bus) -) -(connector - (pt 1808 2776) - (pt 1832 2776) -) -(connector - (pt 1808 2840) - (pt 1808 2776) -) -(connector - (text "PIXEL_CLK" (rect 1546 2776 1621 2791)(font "Arial" )) - (pt 1536 2792) - (pt 1616 2792) -) -(connector - (text "CLUT_MUX_ADR[2..0]" (rect 2130 2744 2273 2759)(font "Arial" )) - (pt 2304 2760) - (pt 2120 2760) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 2338 2744 2413 2759)(font "Arial" )) - (pt 2400 2760) - (pt 2328 2760) -) -(connector - (pt 2376 2648) - (pt 2416 2648) - (bus) -) -(connector - (pt 2400 2664) - (pt 2416 2664) -) -(connector - (pt 2400 2760) - (pt 2400 2664) -) -(connector - (pt 2304 2760) - (pt 2304 2736) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 2162 2696 2237 2711)(font "Arial" )) - (pt 2224 2712) - (pt 2152 2712) -) -(connector - (text "FIFO_D[7..0]" (rect 2730 2568 2810 2583)(font "Arial" )) - (pt 2824 2584) - (pt 2720 2584) - (bus) -) -(connector - (text "FIFO_D[15..8]" (rect 2730 2584 2818 2599)(font "Arial" )) - (pt 2824 2600) - (pt 2720 2600) - (bus) -) -(connector - (text "FIFO_D[23..16]" (rect 2730 2600 2826 2615)(font "Arial" )) - (pt 2824 2616) - (pt 2720 2616) - (bus) -) -(connector - (text "FIFO_D[31..24]" (rect 2730 2616 2826 2631)(font "Arial" )) - (pt 2824 2632) - (pt 2720 2632) - (bus) -) -(connector - (text "FIFO_D[39..32]" (rect 2730 2632 2826 2647)(font "Arial" )) - (pt 2824 2648) - (pt 2720 2648) - (bus) -) -(connector - (text "FIFO_D[47..40]" (rect 2730 2648 2826 2663)(font "Arial" )) - (pt 2824 2664) - (pt 2720 2664) - (bus) -) -(connector - (text "FIFO_D[55..48]" (rect 2730 2664 2826 2679)(font "Arial" )) - (pt 2824 2680) - (pt 2720 2680) - (bus) -) -(connector - (text "FIFO_D[63..56]" (rect 2730 2680 2826 2695)(font "Arial" )) - (pt 2824 2696) - (pt 2720 2696) - (bus) -) -(connector - (text "FIFO_D[71..64]" (rect 2730 2696 2826 2711)(font "Arial" )) - (pt 2824 2712) - (pt 2720 2712) - (bus) -) -(connector - (text "FIFO_D[79..72]" (rect 2730 2712 2826 2727)(font "Arial" )) - (pt 2824 2728) - (pt 2720 2728) - (bus) -) -(connector - (text "FIFO_D[87..80]" (rect 2730 2728 2826 2743)(font "Arial" )) - (pt 2824 2744) - (pt 2720 2744) - (bus) -) -(connector - (text "FIFO_D[95..88]" (rect 2730 2744 2826 2759)(font "Arial" )) - (pt 2824 2760) - (pt 2720 2760) - (bus) -) -(connector - (text "FIFO_D[103..96]" (rect 2730 2760 2835 2775)(font "Arial" )) - (pt 2824 2776) - (pt 2720 2776) - (bus) -) -(connector - (text "FIFO_D[111..104]" (rect 2730 2776 2843 2791)(font "Arial" )) - (pt 2824 2792) - (pt 2720 2792) - (bus) -) -(connector - (text "FIFO_D[119..112]" (rect 2730 2792 2843 2807)(font "Arial" )) - (pt 2824 2808) - (pt 2720 2808) - (bus) -) -(connector - (text "FIFO_D[127..120]" (rect 2730 2808 2843 2823)(font "Arial" )) - (pt 2824 2824) - (pt 2720 2824) - (bus) -) -(connector - (text "CCF[23..0]" (rect 3362 2752 3430 2767)(font "Arial" )) - (pt 3432 2768) - (pt 3352 2768) - (bus) -) -(connector - (text "CCR[23..0]" (rect 3954 2720 4024 2735)(font "Arial" )) - (pt 4024 2736) - (pt 3944 2736) - (bus) -) -(connector - (text "CCS[23..0]" (rect 3362 2840 3431 2855)(font "Arial" )) - (pt 3432 2856) - (pt 3352 2856) - (bus) -) -(connector - (text "CC16[23..0]" (rect 3954 2752 4030 2767)(font "Arial" )) - (pt 4024 2768) - (pt 3944 2768) - (bus) -) -(connector - (text "VR[7..0],VG[7..0],VB[7..0]" (rect 4522 2776 4676 2791)(font "Arial" )) - (pt 4512 2792) - (pt 4664 2792) - (bus) -) -(connector - (pt 4240 2808) - (pt 4280 2808) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 4202 2808 4277 2823)(font "Arial" )) - (pt 4192 2824) - (pt 4280 2824) -) -(connector - (pt 4240 2792) - (pt 4280 2792) - (bus) -) -(connector - (pt 4240 2800) - (pt 4176 2800) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 3946 2848 4021 2863)(font "Arial" )) - (pt 3936 2864) - (pt 4024 2864) -) -(connector - (pt 4104 2888) - (pt 4104 2920) - (bus) -) -(connector - (text "CCSEL[2..0]" (rect 4010 2904 4089 2919)(font "Arial" )) - (pt 4104 2920) - (pt 4000 2920) - (bus) -) -(connector - (text "CCA[23..0]" (rect 3954 2768 4022 2783)(font "Arial" )) - (pt 4024 2784) - (pt 3944 2784) - (bus) -) -(connector - (pt 2904 2896) - (pt 2904 2864) - (bus) -) -(connector - (text "ZR_C8[7..0]" (rect 3232 2712 3308 2727)(font "Arial" )) - (pt 3232 2728) - (pt 3304 2728) - (bus) -) -(connector - (pt 3088 2712) - (pt 2968 2712) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 2746 2824 2821 2839)(font "Arial" )) - (pt 2824 2840) - (pt 2736 2840) -) -(connector - (text "CC24[23..0]" (rect 3954 2736 4030 2751)(font "Arial" )) - (pt 3944 2752) - (pt 4024 2752) - (bus) -) -(connector - (pt 4240 2792) - (pt 4240 2800) - (bus) -) -(connector - (pt 4240 2800) - (pt 4240 2808) - (bus) -) -(connector - (pt 3576 2784) - (pt 3672 2784) - (bus) -) -(connector - (pt 3576 2872) - (pt 3672 2872) - (bus) -) -(connector - (pt 3816 2800) - (pt 3888 2800) - (bus) -) -(connector - (pt 3888 2800) - (pt 3888 2832) - (bus) -) -(connector - (pt 3888 2832) - (pt 4024 2832) - (bus) -) -(connector - (pt 4024 2848) - (pt 3888 2848) - (bus) -) -(connector - (pt 3888 2888) - (pt 3816 2888) - (bus) -) -(connector - (pt 3888 2848) - (pt 3888 2888) - (bus) -) -(connector - (text "PIXEL_CLK" (rect 3034 2712 3109 2727)(font "Arial" )) - (pt 3032 2728) - (pt 3088 2728) -) -(connector - (text "PIXEL_CLK" (rect 3618 2784 3693 2799)(font "Arial" )) - (pt 3616 2800) - (pt 3672 2800) -) -(connector - (text "PIXEL_CLK" (rect 3618 2872 3693 2887)(font "Arial" )) - (pt 3616 2888) - (pt 3672 2888) -) -(connector - (text "PIXEL_CLK" (rect 3378 2856 3453 2871)(font "Arial" )) - (pt 3376 2872) - (pt 3432 2872) -) -(connector - (text "PIXEL_CLK" (rect 3378 2768 3453 2783)(font "Arial" )) - (pt 3376 2784) - (pt 3432 2784) -) -(connector - (text "CC16[23..19],CC16[15..10],CC16[7..3]" (rect 2506 2592 2751 2607)(font "Arial" )) - (pt 2688 2664) - (pt 2560 2664) - (bus) -) -(connector - (text "CC16[18..16],CC16[9..8],CC16[2..0]" (rect 2530 2728 2758 2743)(font "Arial" )) - (pt 2696 2744) - (pt 2520 2744) - (bus) -) -(connector - (text "CC24[31..0]" (rect 1986 2760 2062 2775)(font "Arial" )) - (pt 1976 2776) - (pt 2072 2776) - (bus) -) -(connector - (text "ZR_C8B[0]" (rect 3282 2952 3352 2967)(font "Arial" )) - (pt 3272 2968) - (pt 3344 2968) -) -(connector - (text "COLOR1" (rect 3154 3008 3213 3023)(font "Arial" )) - (pt 3232 3024) - (pt 3144 3024) -) -(connector - (text "ZR_C8[7..1]" (rect 3090 3072 3166 3087)(font "Arial" )) - (pt 3080 3088) - (pt 3160 3088) - (bus) -) -(connector - (pt 3232 3000) - (pt 3232 3024) -) -(connector - (pt 3232 3024) - (pt 3232 3064) -) -(connector - (text "ZR_C8B[7..1]" (rect 3306 3080 3392 3095)(font "Arial" )) - (pt 3296 3096) - (pt 3392 3096) - (bus) -) -(connector - (pt 3072 3104) - (pt 3160 3104) - (bus) -) -(connector - (text "ZR_C8[0]" (rect 3146 2960 3207 2975)(font "Arial" )) - (pt 3136 2976) - (pt 3192 2976) -) -(connector - (text "CLUT_ADR0" (rect 2842 2944 2925 2959)(font "Arial" )) - (pt 2832 2960) - (pt 2912 2960) -) -(connector - (text "PIXEL_CLK" (rect 2858 2960 2933 2975)(font "Arial" )) - (pt 2856 2976) - (pt 2912 2976) -) -(connector - (text "PIXEL_CLK" (rect 2994 2960 3069 2975)(font "Arial" )) - (pt 2992 2976) - (pt 3048 2976) -) -(connector - (pt 2976 2960) - (pt 3048 2960) -) -(connector - (pt 3112 2960) - (pt 3192 2960) -) -(connector - (text "FIFO_MW[8..0]" (rect 194 2376 287 2391)(font "Arial" )) - (pt 296 2392) - (pt 184 2392) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 2208 3439 2223)(font "Arial" )) - (pt 3448 2224) - (pt 3360 2224) -) -(connector - (text "PIXEL_CLK" (rect 3370 2224 3445 2239)(font "Arial" )) - (pt 3448 2240) - (pt 3360 2240) -) -(connector - (pt 3808 2112) - (pt 3808 2128) -) -(connector - (text "ACP_CLUT_RD" (rect 3722 2112 3825 2127)(font "Arial" )) - (pt 3808 2128) - (pt 3712 2128) -) -(connector - (pt 3328 2192) - (pt 3448 2192) -) -(connector - (pt 3704 2096) - (pt 3768 2096) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 2416 3439 2431)(font "Arial" )) - (pt 3448 2432) - (pt 3360 2432) -) -(connector - (text "PIXEL_CLK" (rect 3370 2432 3445 2447)(font "Arial" )) - (pt 3448 2448) - (pt 3360 2448) -) -(connector - (pt 3808 2320) - (pt 3808 2336) -) -(connector - (text "ACP_CLUT_RD" (rect 3722 2320 3825 2335)(font "Arial" )) - (pt 3808 2336) - (pt 3712 2336) -) -(connector - (pt 3328 2400) - (pt 3448 2400) -) -(connector - (pt 3704 2304) - (pt 3768 2304) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 2624 3439 2639)(font "Arial" )) - (pt 3448 2640) - (pt 3360 2640) -) -(connector - (text "PIXEL_CLK" (rect 3370 2640 3445 2655)(font "Arial" )) - (pt 3448 2656) - (pt 3360 2656) -) -(connector - (pt 3808 2528) - (pt 3808 2544) -) -(connector - (text "ACP_CLUT_RD" (rect 3722 2528 3825 2543)(font "Arial" )) - (pt 3808 2544) - (pt 3712 2544) -) -(connector - (pt 3328 2608) - (pt 3448 2608) -) -(connector - (pt 3704 2512) - (pt 3768 2512) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 1560 3439 1575)(font "Arial" )) - (pt 3448 1576) - (pt 3360 1576) -) -(connector - (text "PIXEL_CLK" (rect 3370 1576 3445 1591)(font "Arial" )) - (pt 3448 1592) - (pt 3360 1592) -) -(connector - (pt 3840 1448) - (pt 3704 1448) - (bus) -) -(connector - (text "FB_AD[31..26]" (rect 3930 1432 4022 1447)(font "Arial" )) - (pt 3920 1448) - (pt 4032 1448) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 1768 3439 1783)(font "Arial" )) - (pt 3448 1784) - (pt 3360 1784) -) -(connector - (text "PIXEL_CLK" (rect 3370 1784 3445 1799)(font "Arial" )) - (pt 3448 1800) - (pt 3360 1800) -) -(connector - (pt 3840 1656) - (pt 3704 1656) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 1976 3439 1991)(font "Arial" )) - (pt 3448 1992) - (pt 3360 1992) -) -(connector - (text "PIXEL_CLK" (rect 3370 1992 3445 2007)(font "Arial" )) - (pt 3448 2008) - (pt 3360 2008) -) -(connector - (pt 3328 1960) - (pt 3448 1960) -) -(connector - (pt 3840 1864) - (pt 3704 1864) - (bus) -) -(connector - (text "CLUT_ADR[7..0]" (rect 3338 1928 3444 1943)(font "Arial" )) - (pt 3336 1944) - (pt 3448 1944) - (bus) -) -(connector - (text "FB_AD[23..18]" (rect 3930 1640 4022 1655)(font "Arial" )) - (pt 3920 1656) - (pt 4032 1656) - (bus) -) -(connector - (text "FB_AD[23..18]" (rect 3930 1848 4022 1863)(font "Arial" )) - (pt 3920 1864) - (pt 4032 1864) - (bus) -) -(connector - (pt 3880 1464) - (pt 3880 1480) -) -(connector - (text "FALCON_CLUT_RDH" (rect 3762 1464 3904 1479)(font "Arial" )) - (pt 3880 1480) - (pt 3752 1480) -) -(connector - (pt 3880 1672) - (pt 3880 1688) -) -(connector - (text "FALCON_CLUT_RDH" (rect 3762 1672 3904 1687)(font "Arial" )) - (pt 3880 1688) - (pt 3752 1688) -) -(connector - (pt 3880 1880) - (pt 3880 1896) -) -(connector - (text "FALCON_CLUT_RDL" (rect 3762 1880 3902 1895)(font "Arial" )) - (pt 3880 1896) - (pt 3752 1896) -) -(connector - (text "FALCON_CLUT_WR3" (rect 3346 1880 3488 1895)(font "Arial" )) - (pt 3448 1896) - (pt 3336 1896) -) -(connector - (text "FALCON_CLUT_WR0" (rect 3346 1464 3488 1479)(font "Arial" )) - (pt 3448 1480) - (pt 3336 1480) -) -(connector - (text "FALCON_CLUT_WR1" (rect 3346 1672 3488 1687)(font "Arial" )) - (pt 3448 1688) - (pt 3336 1688) -) -(connector - (text "CCF[7..2]" (rect 3834 1912 3894 1927)(font "Arial" )) - (pt 3904 1928) - (pt 3704 1928) - (bus) -) -(connector - (text "CCF[1..0]" (rect 3842 1944 3902 1959)(font "Arial" )) - (pt 3904 1960) - (pt 3816 1960) - (bus) -) -(connector - (text "CCF[23..18]" (rect 3826 1496 3902 1511)(font "Arial" )) - (pt 3904 1512) - (pt 3704 1512) - (bus) -) -(connector - (text "CCF[15..10]" (rect 3826 1704 3902 1719)(font "Arial" )) - (pt 3904 1720) - (pt 3704 1720) - (bus) -) -(connector - (text "CCF[9..8]" (rect 3842 1744 3902 1759)(font "Arial" )) - (pt 3904 1760) - (pt 3816 1760) - (bus) -) -(connector - (text "CCF[17..16]" (rect 3842 1536 3918 1551)(font "Arial" )) - (pt 3904 1552) - (pt 3816 1552) - (bus) -) -(connector - (text "CLUT_ADR[7..0]" (rect 3338 1720 3444 1735)(font "Arial" )) - (pt 3336 1736) - (pt 3448 1736) - (bus) -) -(connector - (pt 3328 1752) - (pt 3448 1752) -) -(connector - (text "FB_AD[23..18]" (rect 3346 1848 3438 1863)(font "Arial" )) - (pt 3336 1864) - (pt 3448 1864) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3346 1864 3432 1879)(font "Arial" )) - (pt 3336 1880) - (pt 3448 1880) - (bus) -) -(connector - (text "CLUT_ADR[7..0]" (rect 3338 1512 3444 1527)(font "Arial" )) - (pt 3336 1528) - (pt 3448 1528) - (bus) -) -(connector - (pt 3328 1544) - (pt 3448 1544) -) -(connector - (text "FB_AD[23..18]" (rect 3346 1640 3438 1655)(font "Arial" )) - (pt 3336 1656) - (pt 3448 1656) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3346 1656 3432 1671)(font "Arial" )) - (pt 3336 1672) - (pt 3448 1672) - (bus) -) -(connector - (text "FB_AD[31..26]" (rect 3346 1432 3438 1447)(font "Arial" )) - (pt 3336 1448) - (pt 3448 1448) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3346 1448 3432 1463)(font "Arial" )) - (pt 3336 1464) - (pt 3448 1464) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 920 3439 935)(font "Arial" )) - (pt 3448 936) - (pt 3360 936) -) -(connector - (text "PIXEL_CLK" (rect 3370 936 3445 951)(font "Arial" )) - (pt 3448 952) - (pt 3360 952) -) -(connector - (pt 3704 808) - (pt 3840 808) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 1128 3439 1143)(font "Arial" )) - (pt 3448 1144) - (pt 3360 1144) -) -(connector - (text "PIXEL_CLK" (rect 3370 1144 3445 1159)(font "Arial" )) - (pt 3448 1160) - (pt 3360 1160) -) -(connector - (pt 3704 1016) - (pt 3840 1016) - (bus) -) -(connector - (pt 3704 1224) - (pt 3840 1224) - (bus) -) -(connector - (text "MAIN_CLK" (rect 3370 1336 3439 1351)(font "Arial" )) - (pt 3448 1352) - (pt 3360 1352) -) -(connector - (text "PIXEL_CLK" (rect 3370 1352 3445 1367)(font "Arial" )) - (pt 3448 1368) - (pt 3360 1368) -) -(connector - (text "CLUT_ADR[3..0]" (rect 3338 1288 3444 1303)(font "Arial" )) - (pt 3336 1304) - (pt 3448 1304) - (bus) -) -(connector - (pt 3328 1320) - (pt 3448 1320) -) -(connector - (text "FB_AD[26..24]" (rect 3930 792 4022 807)(font "Arial" )) - (pt 3920 808) - (pt 4032 808) - (bus) -) -(connector - (text "FB_AD[22..20]" (rect 3930 1000 4022 1015)(font "Arial" )) - (pt 3920 1016) - (pt 4032 1016) - (bus) -) -(connector - (text "FB_AD[18..16]" (rect 3930 1208 4022 1223)(font "Arial" )) - (pt 3920 1224) - (pt 4032 1224) - (bus) -) -(connector - (pt 3880 824) - (pt 3880 840) -) -(connector - (text "ST_CLUT_RD" (rect 3802 824 3895 839)(font "Arial" )) - (pt 3880 840) - (pt 3792 840) -) -(connector - (pt 3880 1032) - (pt 3880 1048) -) -(connector - (text "ST_CLUT_RD" (rect 3802 1032 3895 1047)(font "Arial" )) - (pt 3880 1048) - (pt 3792 1048) -) -(connector - (pt 3880 1240) - (pt 3880 1256) -) -(connector - (text "ST_CLUT_RD" (rect 3802 1240 3895 1255)(font "Arial" )) - (pt 3880 1256) - (pt 3792 1256) -) -(connector - (text "ST_CLUT_WR1" (rect 3346 1240 3449 1255)(font "Arial" )) - (pt 3448 1256) - (pt 3336 1256) -) -(connector - (text "ST_CLUT_WR0" (rect 3346 824 3449 839)(font "Arial" )) - (pt 3448 840) - (pt 3336 840) -) -(connector - (text "ST_CLUT_WR1" (rect 3346 1032 3449 1047)(font "Arial" )) - (pt 3448 1048) - (pt 3336 1048) -) -(connector - (text "CCS[15..13]" (rect 3826 1064 3903 1079)(font "Arial" )) - (pt 3920 1080) - (pt 3704 1080) - (bus) -) -(connector - (text "CCS[12..8]" (rect 3826 1096 3895 1111)(font "Arial" )) - (pt 3816 1112) - (pt 3920 1112) - (bus) -) -(connector - (text "CCS[23..21]" (rect 3810 856 3887 871)(font "Arial" )) - (pt 3904 872) - (pt 3704 872) - (bus) -) -(connector - (text "CCS[20..16]" (rect 3818 888 3895 903)(font "Arial" )) - (pt 3808 904) - (pt 3904 904) - (bus) -) -(connector - (text "CCS[7..5]" (rect 3714 1272 3775 1287)(font "Arial" )) - (pt 3920 1288) - (pt 3704 1288) - (bus) -) -(connector - (text "CCS[4..0]" (rect 3818 1304 3879 1319)(font "Arial" )) - (pt 3808 1320) - (pt 3920 1320) - (bus) -) -(connector - (text "FB_AD[26..24]" (rect 3346 792 3438 807)(font "Arial" )) - (pt 3336 808) - (pt 3448 808) - (bus) -) -(connector - (text "FB_ADR[4..1]" (rect 3346 808 3432 823)(font "Arial" )) - (pt 3336 824) - (pt 3448 824) - (bus) -) -(connector - (text "CLUT_ADR[3..0]" (rect 3338 872 3444 887)(font "Arial" )) - (pt 3336 888) - (pt 3448 888) - (bus) -) -(connector - (pt 3328 904) - (pt 3448 904) -) -(connector - (text "FB_AD[22..20]" (rect 3346 1000 3438 1015)(font "Arial" )) - (pt 3336 1016) - (pt 3448 1016) - (bus) -) -(connector - (text "FB_ADR[4..1]" (rect 3346 1016 3432 1031)(font "Arial" )) - (pt 3336 1032) - (pt 3448 1032) - (bus) -) -(connector - (text "CLUT_ADR[3..0]" (rect 3338 1080 3444 1095)(font "Arial" )) - (pt 3336 1096) - (pt 3448 1096) - (bus) -) -(connector - (pt 3328 1112) - (pt 3448 1112) -) -(connector - (text "FB_AD[18..16]" (rect 3346 1208 3438 1223)(font "Arial" )) - (pt 3336 1224) - (pt 3448 1224) - (bus) -) -(connector - (text "FB_ADR[4..1]" (rect 3346 1224 3432 1239)(font "Arial" )) - (pt 3336 1240) - (pt 3448 1240) - (bus) -) -(connector - (text "ACP_CLUT_WR1" (rect 3314 2112 3428 2127)(font "Arial" )) - (pt 3304 2128) - (pt 3448 2128) -) -(connector - (text "FB_AD[23..16]" (rect 3874 2080 3966 2095)(font "Arial" )) - (pt 3960 2096) - (pt 3864 2096) - (bus) -) -(connector - (text "FB_AD[15..8]" (rect 3874 2288 3957 2303)(font "Arial" )) - (pt 3864 2304) - (pt 3952 2304) - (bus) -) -(connector - (text "FB_AD[15..8]" (rect 3370 2288 3453 2303)(font "Arial" )) - (pt 3360 2304) - (pt 3448 2304) - (bus) -) -(connector - (text "FB_AD[7..0]" (rect 3874 2496 3949 2511)(font "Arial" )) - (pt 3864 2512) - (pt 3952 2512) - (bus) -) -(connector - (text "FB_AD[7..0]" (rect 3370 2496 3445 2511)(font "Arial" )) - (pt 3360 2512) - (pt 3448 2512) - (bus) -) -(connector - (text "CCA[23..16]" (rect 3730 2144 3806 2159)(font "Arial" )) - (pt 3808 2160) - (pt 3704 2160) - (bus) -) -(connector - (text "CCA[15..8]" (rect 3730 2352 3798 2367)(font "Arial" )) - (pt 3808 2368) - (pt 3704 2368) - (bus) -) -(connector - (text "CCA[7..0]" (rect 3730 2560 3790 2575)(font "Arial" )) - (pt 3808 2576) - (pt 3704 2576) - (bus) -) -(connector - (text "FB_AD[23..16]" (rect 3362 2080 3454 2095)(font "Arial" )) - (pt 3448 2096) - (pt 3352 2096) - (bus) -) -(connector - (text "ZR_C8B[7..0]" (rect 3354 2576 3440 2591)(font "Arial" )) - (pt 3448 2592) - (pt 3344 2592) - (bus) -) -(connector - (text "ZR_C8B[7..0]" (rect 3362 2368 3448 2383)(font "Arial" )) - (pt 3448 2384) - (pt 3352 2384) - (bus) -) -(connector - (text "ZR_C8B[7..0]" (rect 3362 2160 3448 2175)(font "Arial" )) - (pt 3448 2176) - (pt 3352 2176) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3266 2304 3352 2319)(font "Arial" )) - (pt 3448 2320) - (pt 3256 2320) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3266 2096 3352 2111)(font "Arial" )) - (pt 3448 2112) - (pt 3256 2112) - (bus) -) -(connector - (text "FB_ADR[9..2]" (rect 3266 2512 3352 2527)(font "Arial" )) - (pt 3448 2528) - (pt 3256 2528) - (bus) -) -(connector - (text "ACP_CLUT_WR3" (rect 3346 2528 3460 2543)(font "Arial" )) - (pt 3448 2544) - (pt 3336 2544) -) -(connector - (text "ACP_CLUT_WR2" (rect 3346 2320 3460 2335)(font "Arial" )) - (pt 3448 2336) - (pt 3336 2336) -) -(connector - (text "FIFO_MW[8..0]" (rect 1882 1384 1975 1399)(font "Arial" )) - (pt 1952 1400) - (pt 1872 1400) - (bus) -) -(connector - (pt 2000 1408) - (pt 1984 1408) - (bus) -) -(connector - (pt 1984 1344) - (pt 1984 1408) - (bus) -) -(connector - (pt 1984 1344) - (pt 2248 1344) - (bus) -) -(connector - (pt 1968 1424) - (pt 1968 1208) - (bus) -) -(connector - (pt 2248 1208) - (pt 2232 1208) - (bus) -) -(connector - (pt 2248 1344) - (pt 2248 1208) - (bus) -) -(connector - (pt 1872 1424) - (pt 1968 1424) - (bus) -) -(connector - (pt 1968 1424) - (pt 2000 1424) - (bus) -) -(connector - (pt 1968 1208) - (pt 2072 1208) - (bus) -) -(connector - (pt 2512 1248) - (pt 2512 1408) -) -(connector - (pt 2088 1480) - (pt 2088 1512) -) -(connector - (text "INTER_ZEI" (rect 1994 1496 2065 1511)(font "Arial" )) - (pt 1984 1512) - (pt 2088 1512) -) -(connector - (text "INTER_ZEI" (rect 1362 1424 1433 1439)(font "Arial" )) - (pt 1352 1440) - (pt 1456 1440) -) -(connector - (pt 1504 1440) - (pt 1536 1440) -) -(connector - (text "VDVZ[127..0]" (rect 1090 1120 1172 1135)(font "Arial" )) - (pt 1088 1136) - (pt 1160 1136) - (bus) -) -(connector - (text "DOP_FIFO_CLR" (rect 1978 1280 2085 1295)(font "Arial" )) - (pt 2072 1296) - (pt 1992 1296) -) -(connector - (text "PIXEL_CLK" (rect 2002 1256 2077 1271)(font "Arial" )) - (pt 2072 1272) - (pt 1992 1272) -) -(connector - (text "VDVZ[127..96]" (rect 1450 936 1540 951)(font "Arial" )) - (pt 1440 952) - (pt 1520 952) - (bus) -) -(connector - (text "VDVZ[63..32]" (rect 1194 920 1276 935)(font "Arial" )) - (pt 1184 936) - (pt 1296 936) - (bus) -) -(connector - (text "VDP_IN[31..0]" (rect 962 992 1051 1007)(font "Arial" )) - (pt 952 1008) - (pt 1040 1008) - (bus) -) -(connector - (text "VDVZ[95..64]" (rect 1450 1024 1532 1039)(font "Arial" )) - (pt 1440 1040) - (pt 1520 1040) - (bus) -) -(connector - (text "VDVZ[31..0]" (rect 1194 1008 1268 1023)(font "Arial" )) - (pt 1184 1024) - (pt 1296 1024) - (bus) -) -(connector - (text "VDP_IN[63..32]" (rect 962 904 1059 919)(font "Arial" )) - (pt 952 920) - (pt 1040 920) - (bus) -) -(connector - (text "DDRCLK0" (rect 978 920 1046 935)(font "Arial" )) - (pt 1040 936) - (pt 968 936) -) -(connector - (text "DDRCLK0" (rect 978 1008 1046 1023)(font "Arial" )) - (pt 1040 1024) - (pt 968 1024) -) -(connector - (text "DDRCLK0" (rect 1234 936 1302 951)(font "Arial" )) - (pt 1296 952) - (pt 1224 952) -) -(connector - (text "DDRCLK0" (rect 1234 1024 1302 1039)(font "Arial" )) - (pt 1224 1040) - (pt 1296 1040) -) -(connector - (text "DDRCLK0" (rect 1098 1136 1166 1151)(font "Arial" )) - (pt 1160 1152) - (pt 1088 1152) -) -(connector - (text "DDRCLK0" (rect 1338 1160 1406 1175)(font "Arial" )) - (pt 1400 1176) - (pt 1328 1176) -) -(connector - (text "VDMB[127..0]" (rect 1554 1168 1640 1183)(font "Arial" )) - (pt 1544 1184) - (pt 1624 1184) - (bus) -) -(connector - (text "VDMA[127..0]" (rect 1314 1144 1398 1159)(font "Arial" )) - (pt 1304 1160) - (pt 1400 1160) - (bus) -) -(connector - (text "VDMC[127..0]" (rect 1642 1344 1729 1359)(font "Arial" )) - (pt 1640 1360) - (pt 1712 1360) - (bus) -) -(connector - (text "VDMC[127..0]" (rect 1970 960 2057 975)(font "Arial" )) - (pt 1968 976) - (pt 2040 976) - (bus) -) -(connector - (text "VDM_SEL[3..0]" (rect 570 2416 665 2431)(font "Arial" )) - (pt 560 2432) - (pt 656 2432) - (bus) -) -(connector - (text "VDMB[127..0]" (rect 1586 1080 1672 1095)(font "Arial" )) - (pt 1576 1096) - (pt 1800 1096) - (bus) -) -(connector - (text "VDMB[119..0],VDMA[127..120]" (rect 1586 1064 1777 1079)(font "Arial" )) - (pt 1576 1080) - (pt 1800 1080) - (bus) -) -(connector - (text "VDMB[111..0],VDMA[127..112]" (rect 1586 1048 1777 1063)(font "Arial" )) - (pt 1576 1064) - (pt 1800 1064) - (bus) -) -(connector - (text "VDMB[103..0],VDMA[127..104]" (rect 1586 1032 1777 1047)(font "Arial" )) - (pt 1576 1048) - (pt 1800 1048) - (bus) -) -(connector - (text "VDMB[95..0],VDMA[127..96]" (rect 1586 1016 1760 1031)(font "Arial" )) - (pt 1576 1032) - (pt 1800 1032) - (bus) -) -(connector - (text "VDMB[87..0],VDMA[127..88]" (rect 1586 1000 1760 1015)(font "Arial" )) - (pt 1576 1016) - (pt 1800 1016) - (bus) -) -(connector - (text "VDMB[79..0],VDMA[127..80]" (rect 1586 984 1760 999)(font "Arial" )) - (pt 1576 1000) - (pt 1800 1000) - (bus) -) -(connector - (text "VDMB[71..0],VDMA[127..72]" (rect 1586 968 1760 983)(font "Arial" )) - (pt 1576 984) - (pt 1800 984) - (bus) -) -(connector - (text "VDMB[63..0],VDMA[127..64]" (rect 1586 952 1760 967)(font "Arial" )) - (pt 1576 968) - (pt 1800 968) - (bus) -) -(connector - (text "VDMB[55..0],VDMA[127..56]" (rect 1586 936 1760 951)(font "Arial" )) - (pt 1576 952) - (pt 1800 952) - (bus) -) -(connector - (text "VDMB[47..0],VDMA[127..48]" (rect 1586 920 1760 935)(font "Arial" )) - (pt 1576 936) - (pt 1800 936) - (bus) -) -(connector - (text "VDMB[39..0],VDMA[127..40]" (rect 1586 904 1760 919)(font "Arial" )) - (pt 1576 920) - (pt 1800 920) - (bus) -) -(connector - (text "VDMB[31..0],VDMA[127..32]" (rect 1586 888 1760 903)(font "Arial" )) - (pt 1576 904) - (pt 1800 904) - (bus) -) -(connector - (text "VDMB[23..0],VDMA[127..24]" (rect 1586 872 1760 887)(font "Arial" )) - (pt 1576 888) - (pt 1800 888) - (bus) -) -(connector - (text "VDMB[15..0],VDMA[127..16]" (rect 1586 856 1760 871)(font "Arial" )) - (pt 1576 872) - (pt 1800 872) - (bus) -) -(connector - (text "VDMB[7..0],VDMA[127..8]" (rect 1586 840 1744 855)(font "Arial" )) - (pt 1576 856) - (pt 1800 856) - (bus) -) -(connector - (text "FIFO_WRE" (rect 1098 1152 1169 1167)(font "Arial" )) - (pt 1088 1168) - (pt 1160 1168) -) -(connector - (text "FIFO_WRE" (rect 1338 1176 1409 1191)(font "Arial" )) - (pt 1328 1192) - (pt 1400 1192) -) -(connector - (text "FIFO_WRE" (rect 1650 1368 1721 1383)(font "Arial" )) - (pt 1640 1384) - (pt 1712 1384) -) -(connector - (text "nFB_BURST" (rect 1570 1896 1652 1911)(font "Arial" )) - (pt 1560 1912) - (pt 1664 1912) -) -(connector - (text "nFB_OE" (rect 1570 1920 1624 1935)(font "Arial" )) - (pt 1560 1936) - (pt 1664 1936) -) -(connector - (text "nRSTO" (rect 1570 1704 1617 1719)(font "Arial" )) - (pt 1560 1720) - (pt 1664 1720) -) -(connector - (text "MAIN_CLK" (rect 1570 1728 1639 1743)(font "Arial" )) - (pt 1664 1744) - (pt 1560 1744) -) -(connector - (text "nFB_CS1" (rect 1570 1752 1632 1767)(font "Arial" )) - (pt 1560 1768) - (pt 1664 1768) -) -(connector - (text "nFB_CS2" (rect 1570 1776 1632 1791)(font "Arial" )) - (pt 1560 1792) - (pt 1664 1792) -) -(connector - (text "nFB_CS3" (rect 1570 1800 1632 1815)(font "Arial" )) - (pt 1560 1816) - (pt 1664 1816) -) -(connector - (text "nFB_WR" (rect 1570 1824 1627 1839)(font "Arial" )) - (pt 1560 1840) - (pt 1664 1840) -) -(connector - (text "FB_SIZE0" (rect 1570 1848 1634 1863)(font "Arial" )) - (pt 1560 1864) - (pt 1664 1864) -) -(connector - (text "FB_SIZE1" (rect 1570 1872 1634 1887)(font "Arial" )) - (pt 1560 1888) - (pt 1664 1888) -) -(connector - (text "FB_AD[31..0]" (rect 2026 1720 2109 1735)(font "Arial" )) - (pt 2136 1736) - (pt 2016 1736) - (bus) -) -(connector - (text "FB_ADR[31..0]" (rect 1570 1944 1664 1959)(font "Arial" )) - (pt 1664 1960) - (pt 1560 1960) - (bus) -) -(connector - (text "ACP_CLUT_RD" (rect 2026 1968 2129 1983)(font "Arial" )) - (pt 2016 1984) - (pt 2112 1984) -) -(connector - (text "PIXEL_CLK" (rect 2026 2224 2101 2239)(font "Arial" )) - (pt 2104 2240) - (pt 2016 2240) -) -(connector - (text "ST_CLUT_RD" (rect 2026 2096 2119 2111)(font "Arial" )) - (pt 2016 2112) - (pt 2120 2112) -) -(connector - (text "FALCON_CLUT_RDH" (rect 2026 2024 2168 2039)(font "Arial" )) - (pt 2016 2040) - (pt 2120 2040) -) -(connector - (text "FALCON_CLUT_RDL" (rect 2026 2000 2166 2015)(font "Arial" )) - (pt 2016 2016) - (pt 2120 2016) -) -(connector - (text "ST_CLUT_WR[1..0]" (rect 2026 2120 2152 2135)(font "Arial" )) - (pt 2016 2136) - (pt 2112 2136) - (bus) -) -(connector - (text "CLUT_MUX_ADR[3..0]" (rect 2026 2152 2169 2167)(font "Arial" )) - (pt 2016 2168) - (pt 2120 2168) - (bus) -) -(connector - (text "HSYNC" (rect 2026 2248 2075 2263)(font "Arial" )) - (pt 2104 2264) - (pt 2016 2264) -) -(connector - (text "VSYNC" (rect 2026 2272 2073 2287)(font "Arial" )) - (pt 2104 2288) - (pt 2016 2288) -) -(connector - (text "nBLANK" (rect 2026 2296 2080 2311)(font "Arial" )) - (pt 2104 2312) - (pt 2016 2312) -) -(connector - (text "nSYNC" (rect 2026 2320 2073 2335)(font "Arial" )) - (pt 2104 2336) - (pt 2016 2336) -) -(connector - (text "nPD_VGA" (rect 2026 2344 2089 2359)(font "Arial" )) - (pt 2104 2360) - (pt 2016 2360) -) -(connector - (text "CLUT_OFF[3..0]" (rect 2026 2072 2129 2087)(font "Arial" )) - (pt 2016 2088) - (pt 2112 2088) - (bus) -) -(connector - (text "BLITTER_ON" (rect 2026 2488 2113 2503)(font "Arial" )) - (pt 2096 2504) - (pt 2016 2504) -) -(connector - (text "VIDEO_RAM_CTR[15..0]" (rect 2026 2368 2182 2383)(font "Arial" )) - (pt 2144 2384) - (pt 2016 2384) - (bus) -) -(connector - (text "CCR[23..0]" (rect 2026 2176 2096 2191)(font "Arial" )) - (pt 2096 2192) - (pt 2016 2192) - (bus) -) -(connector - (text "CCSEL[2..0]" (rect 2026 2200 2105 2215)(font "Arial" )) - (pt 2016 2216) - (pt 2096 2216) - (bus) -) -(connector - (text "ACP_CLUT_WR[3..0]" (rect 2026 1944 2162 1959)(font "Arial" )) - (pt 2136 1960) - (pt 2016 1960) - (bus) -) -(connector - (text "FALCON_CLUT_WR[3..0]" (rect 2026 2048 2191 2063)(font "Arial" )) - (pt 2144 2064) - (pt 2016 2064) - (bus) -) -(connector - (text "INTER_ZEI" (rect 2026 2400 2097 2415)(font "Arial" )) - (pt 2016 2416) - (pt 2136 2416) -) -(connector - (text "DOP_FIFO_CLR" (rect 2026 2424 2133 2439)(font "Arial" )) - (pt 2016 2440) - (pt 2128 2440) -) -(connector - (text "VIDEO_MOD_TA" (rect 2026 2520 2133 2535)(font "Arial" )) - (pt 2088 2536) - (pt 2016 2536) -) -(connector - (text "BLITTER_RUN" (rect 1546 2528 1643 2543)(font "Arial" )) - (pt 1664 2544) - (pt 1536 2544) -) -(connector - (pt 1888 1120) - (pt 1888 1160) - (bus) -) -(connector - (text "VDM_SEL[3..0]" (rect 1810 1144 1905 1159)(font "Arial" )) - (pt 1888 1160) - (pt 1800 1160) - (bus) -) -(connector - (pt 1608 1432) - (pt 1608 1232) -) -(connector - (pt 1600 1432) - (pt 1608 1432) -) -(connector - (pt 1608 1432) - (pt 1712 1432) -) -(connector - (pt 1608 1232) - (pt 2072 1232) -) -(connector - (pt 2072 1248) - (pt 1944 1248) -) -(connector - (pt 1944 1248) - (pt 1944 1296) -) -(connector - (pt 1944 1296) - (pt 1920 1296) -) -(connector - (text "FIFO_RDE" (rect 1770 1272 1839 1287)(font "Arial" )) - (pt 1760 1288) - (pt 1856 1288) -) -(connector - (text "INTER_ZEI" (rect 1762 1288 1833 1303)(font "Arial" )) - (pt 1752 1304) - (pt 1856 1304) -) -(connector - (text "CLK33M" (rect 1586 2168 1641 2183)(font "Arial" )) - (pt 1512 2184) - (pt 1664 2184) -) -(connector - (text "CLK25M" (rect 1586 2192 1641 2207)(font "Arial" )) - (pt 1512 2208) - (pt 1664 2208) -) -(connector - (text "CLK_VIDEO" (rect 1570 2144 1649 2159)(font "Arial" )) - (pt 1512 2160) - (pt 1664 2160) -) -(connector - (text "VIDEO_MOD_TA" (rect 258 1816 365 1831)(font "Arial" )) - (pt 264 1832) - (pt 360 1832) -) -(connector - (text "COLOR8" (rect 2026 1912 2085 1927)(font "Arial" )) - (pt 2016 1928) - (pt 2120 1928) -) -(connector - (text "COLOR4" (rect 2026 1896 2085 1911)(font "Arial" )) - (pt 2016 1912) - (pt 2120 1912) -) -(connector - (text "COLOR2" (rect 2026 1880 2085 1895)(font "Arial" )) - (pt 2016 1896) - (pt 2120 1896) -) -(connector - (text "COLOR1" (rect 2026 1864 2085 1879)(font "Arial" )) - (pt 2016 1880) - (pt 2120 1880) -) -(connector - (text "FIFO_RDE" (rect 2026 1736 2095 1751)(font "Arial" )) - (pt 2104 1752) - (pt 2016 1752) -) -(connector - (text "VIDEO_RECONFIG" (rect 2026 1688 2151 1703)(font "Arial" )) - (pt 2144 1704) - (pt 2016 1704) -) -(connector - (text "VR_WR" (rect 2026 1784 2076 1799)(font "Arial" )) - (pt 2016 1800) - (pt 2112 1800) -) -(connector - (text "VR_RD" (rect 2026 1800 2074 1815)(font "Arial" )) - (pt 2016 1816) - (pt 2112 1816) -) -(connector - (text "VR_D[8..0]" (rect 1570 2120 1638 2135)(font "Arial" )) - (pt 1512 2136) - (pt 1664 2136) - (bus) -) -(connector - (text "VR_BUSY" (rect 1578 2104 1642 2119)(font "Arial" )) - (pt 1512 2120) - (pt 1664 2120) -) -(connector - (text "CLR_FIFO" (rect 202 2216 270 2231)(font "Arial" )) - (pt 296 2232) - (pt 192 2232) -) -(connector - (text "CLR_FIFO" (rect 2026 1752 2094 1767)(font "Arial" )) - (pt 2016 1768) - (pt 2112 1768) -) -(connector - (text "CLR_FIFO" (rect 1634 1456 1702 1471)(font "Arial" )) - (pt 1712 1472) - (pt 1632 1472) -) -(junction (pt 2984 1688)) -(junction (pt 792 1192)) -(junction (pt 792 1312)) -(junction (pt 792 1432)) -(junction (pt 792 1792)) -(junction (pt 792 1928)) -(junction (pt 792 1552)) -(junction (pt 792 1648)) -(junction (pt 2512 1728)) -(junction (pt 2512 1888)) -(junction (pt 2512 2048)) -(junction (pt 2512 1408)) -(junction (pt 2512 1568)) -(junction (pt 2512 1552)) -(junction (pt 2512 2208)) -(junction (pt 1344 2880)) -(junction (pt 1344 2824)) -(junction (pt 1344 2928)) -(junction (pt 1328 2904)) -(junction (pt 1328 2952)) -(junction (pt 4240 2800)) -(junction (pt 3232 3024)) -(junction (pt 1968 1424)) -(junction (pt 1608 1432)) diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.bsf b/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.bsf deleted file mode 100644 index bcf7f28..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.bsf +++ /dev/null @@ -1,99 +0,0 @@ -/* -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 240 136) - (text "altddio_bidir0" (rect 82 1 171 17)(font "Arial" (font_size 10))) - (text "inst" (rect 8 120 25 132)(font "Arial" )) - (port - (pt 0 24) - (input) - (text "datain_h[31..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) - (text "datain_h[31..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[31..0]" (rect 0 0 79 14)(font "Arial" (font_size 8))) - (text "datain_l[31..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 "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) - (text "oe" (rect 4 43 16 56)(font "Arial" (font_size 8))) - (line (pt 0 56)(pt 88 56)(line_width 1)) - ) - (port - (pt 0 72) - (input) - (text "inclock" (rect 0 0 38 14)(font "Arial" (font_size 8))) - (text "inclock" (rect 4 59 36 72)(font "Arial" (font_size 8))) - (line (pt 0 72)(pt 88 72)(line_width 1)) - ) - (port - (pt 0 88) - (input) - (text "outclock" (rect 0 0 47 14)(font "Arial" (font_size 8))) - (text "outclock" (rect 4 75 42 88)(font "Arial" (font_size 8))) - (line (pt 0 88)(pt 88 88)(line_width 1)) - ) - (port - (pt 240 24) - (output) - (text "dataout_h[31..0]" (rect 0 0 92 14)(font "Arial" (font_size 8))) - (text "dataout_h[31..0]" (rect 159 11 237 24)(font "Arial" (font_size 8))) - (line (pt 240 24)(pt 144 24)(line_width 3)) - ) - (port - (pt 240 40) - (output) - (text "dataout_l[31..0]" (rect 0 0 87 14)(font "Arial" (font_size 8))) - (text "dataout_l[31..0]" (rect 163 27 238 40)(font "Arial" (font_size 8))) - (line (pt 240 40)(pt 144 40)(line_width 3)) - ) - (port - (pt 240 72) - (output) - (text "combout[31..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) - (text "combout[31..0]" (rect 166 59 237 72)(font "Arial" (font_size 8))) - (line (pt 240 72)(pt 144 72)(line_width 3)) - ) - (port - (pt 240 56) - (bidir) - (text "padio[31..0]" (rect 0 0 66 14)(font "Arial" (font_size 8))) - (text "padio[31..0]" (rect 181 43 238 56)(font "Arial" (font_size 8))) - (line (pt 240 56)(pt 144 56)(line_width 3)) - ) - (drawing - (text "ddio" (rect 108 27 129 40)(font "Arial" (font_size 8))) - (text "bidir" (rect 108 42 129 55)(font "Arial" (font_size 8))) - (text "power up" (rect 92 90 129 102)(font "Arial" )) - (text "low" (rect 92 100 105 112)(font "Arial" )) - (line (pt 88 16)(pt 144 16)(line_width 1)) - (line (pt 144 16)(pt 144 112)(line_width 1)) - (line (pt 144 112)(pt 88 112)(line_width 1)) - (line (pt 88 112)(pt 88 16)(line_width 1)) - ) -) diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.inc b/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.inc deleted file mode 100644 index 5969513..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.inc +++ /dev/null @@ -1,30 +0,0 @@ ---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_bidir0 -( - datain_h[31..0], - datain_l[31..0], - inclock, - oe, - outclock -) - -RETURNS ( - combout[31..0], - dataout_h[31..0], - dataout_l[31..0], - padio[31..0] -); diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.ppf b/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.ppf deleted file mode 100644 index 5601bba..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.ppf +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.qip b/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.qip deleted file mode 100644 index 3339057..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/Video/altddio_bidir0.vhd b/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.vhd deleted file mode 100644 index a0ae0e0..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_bidir0.vhd +++ /dev/null @@ -1,172 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altddio_out0.bsf b/FPGA_by_Gregory_Estrade/Video/altddio_out0.bsf deleted file mode 100644 index 6554c2f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out0.bsf +++ /dev/null @@ -1,64 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altddio_out0.inc b/FPGA_by_Gregory_Estrade/Video/altddio_out0.inc deleted file mode 100644 index f534925..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out0.inc +++ /dev/null @@ -1,25 +0,0 @@ ---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_by_Gregory_Estrade/Video/altddio_out0.ppf b/FPGA_by_Gregory_Estrade/Video/altddio_out0.ppf deleted file mode 100644 index 3f3cfb5..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out0.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_out0.qip b/FPGA_by_Gregory_Estrade/Video/altddio_out0.qip deleted file mode 100644 index 8193856..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out0.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/Video/altddio_out0.vhd b/FPGA_by_Gregory_Estrade/Video/altddio_out0.vhd deleted file mode 100644 index f129798..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out0.vhd +++ /dev/null @@ -1,136 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altddio_out1.bsf b/FPGA_by_Gregory_Estrade/Video/altddio_out1.bsf deleted file mode 100644 index 8289852..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out1.bsf +++ /dev/null @@ -1,64 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altddio_out1.inc b/FPGA_by_Gregory_Estrade/Video/altddio_out1.inc deleted file mode 100644 index 4d50b26..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out1.inc +++ /dev/null @@ -1,25 +0,0 @@ ---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_by_Gregory_Estrade/Video/altddio_out1.ppf b/FPGA_by_Gregory_Estrade/Video/altddio_out1.ppf deleted file mode 100644 index 9772cd3..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out1.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_out1.qip b/FPGA_by_Gregory_Estrade/Video/altddio_out1.qip deleted file mode 100644 index 606e0b7..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out1.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/Video/altddio_out1.vhd b/FPGA_by_Gregory_Estrade/Video/altddio_out1.vhd deleted file mode 100644 index cb76474..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out1.vhd +++ /dev/null @@ -1,146 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altddio_out2.bsf b/FPGA_by_Gregory_Estrade/Video/altddio_out2.bsf deleted file mode 100644 index ff039ee..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out2.bsf +++ /dev/null @@ -1,64 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altddio_out2.inc b/FPGA_by_Gregory_Estrade/Video/altddio_out2.inc deleted file mode 100644 index 2257c30..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out2.inc +++ /dev/null @@ -1,25 +0,0 @@ ---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_by_Gregory_Estrade/Video/altddio_out2.ppf b/FPGA_by_Gregory_Estrade/Video/altddio_out2.ppf deleted file mode 100644 index 93df472..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out2.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/Video/altddio_out2.qip b/FPGA_by_Gregory_Estrade/Video/altddio_out2.qip deleted file mode 100644 index d72d5ce..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out2.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/Video/altddio_out2.vhd b/FPGA_by_Gregory_Estrade/Video/altddio_out2.vhd deleted file mode 100644 index 30a8586..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altddio_out2.vhd +++ /dev/null @@ -1,136 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altdpram0.bsf b/FPGA_by_Gregory_Estrade/Video/altdpram0.bsf deleted file mode 100644 index e0d3ce3..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram0.bsf +++ /dev/null @@ -1,173 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altdpram0.inc b/FPGA_by_Gregory_Estrade/Video/altdpram0.inc deleted file mode 100644 index 828067d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram0.inc +++ /dev/null @@ -1,31 +0,0 @@ ---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_by_Gregory_Estrade/Video/altdpram0.qip b/FPGA_by_Gregory_Estrade/Video/altdpram0.qip deleted file mode 100644 index e4d02ab..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram0.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/altdpram0.vhd b/FPGA_by_Gregory_Estrade/Video/altdpram0.vhd deleted file mode 100644 index c883f02..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram0.vhd +++ /dev/null @@ -1,273 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altdpram1.bsf b/FPGA_by_Gregory_Estrade/Video/altdpram1.bsf deleted file mode 100644 index d75db28..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram1.bsf +++ /dev/null @@ -1,173 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altdpram1.inc b/FPGA_by_Gregory_Estrade/Video/altdpram1.inc deleted file mode 100644 index 4a7924e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram1.inc +++ /dev/null @@ -1,31 +0,0 @@ ---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_by_Gregory_Estrade/Video/altdpram1.qip b/FPGA_by_Gregory_Estrade/Video/altdpram1.qip deleted file mode 100644 index cdd178f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram1.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/altdpram1.vhd b/FPGA_by_Gregory_Estrade/Video/altdpram1.vhd deleted file mode 100644 index b2e0435..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram1.vhd +++ /dev/null @@ -1,273 +0,0 @@ --- 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_by_Gregory_Estrade/Video/altdpram2.bsf b/FPGA_by_Gregory_Estrade/Video/altdpram2.bsf deleted file mode 100644 index 75c64aa..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram2.bsf +++ /dev/null @@ -1,173 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/altdpram2.inc b/FPGA_by_Gregory_Estrade/Video/altdpram2.inc deleted file mode 100644 index 1909de8..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram2.inc +++ /dev/null @@ -1,31 +0,0 @@ ---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_by_Gregory_Estrade/Video/altdpram2.qip b/FPGA_by_Gregory_Estrade/Video/altdpram2.qip deleted file mode 100644 index f84925c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram2.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/altdpram2.vhd b/FPGA_by_Gregory_Estrade/Video/altdpram2.vhd deleted file mode 100644 index 238e6f3..0000000 --- a/FPGA_by_Gregory_Estrade/Video/altdpram2.vhd +++ /dev/null @@ -1,273 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.bsf deleted file mode 100644 index f65e217..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri0.inc b/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.inc deleted file mode 100644 index 1b15c22..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_bustri0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.qip deleted file mode 100644 index c70041d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.vhd deleted file mode 100644 index 494b3c2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri0.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.bsf deleted file mode 100644 index 058fffb..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.qip deleted file mode 100644 index fd76bb2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.vhd deleted file mode 100644 index 47db597..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri1.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.bsf deleted file mode 100644 index 36a4813..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.qip deleted file mode 100644 index 676e430..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.vhd deleted file mode 100644 index 0966743..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri2.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri3.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.bsf deleted file mode 100644 index 2dde401..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri3.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.qip deleted file mode 100644 index 8c41556..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri3.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.vhd deleted file mode 100644 index 2344712..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri3.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri4.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.bsf deleted file mode 100644 index cd9edcc..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri4.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.qip deleted file mode 100644 index 39eb21d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri4.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.vhd deleted file mode 100644 index 5bb209b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri4.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri5.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.bsf deleted file mode 100644 index 1d9b178..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri5.inc b/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.inc deleted file mode 100644 index fdb4877..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_bustri5.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.qip deleted file mode 100644 index daa3efa..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri5.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.vhd deleted file mode 100644 index e1973b4..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri5.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri6.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.bsf deleted file mode 100644 index 4c9344e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri6.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.qip deleted file mode 100644 index 6b9f1df..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri6.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.vhd deleted file mode 100644 index 45f409f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri6.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_bustri7.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.bsf deleted file mode 100644 index 399a828..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_bustri7.qip b/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.qip deleted file mode 100644 index f32324c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_bustri7.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.vhd deleted file mode 100644 index 4bf883d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_bustri7.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_compare1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_compare1.bsf deleted file mode 100644 index 9ec3796..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_compare1.bsf +++ /dev/null @@ -1,54 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_compare1.inc b/FPGA_by_Gregory_Estrade/Video/lpm_compare1.inc deleted file mode 100644 index bde0ab9..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_compare1.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_compare1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_compare1.qip deleted file mode 100644 index ea93f3c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_compare1.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_compare1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_compare1.vhd deleted file mode 100644 index a85e3b2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_compare1.vhd +++ /dev/null @@ -1,127 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_constant0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_constant0.bsf deleted file mode 100644 index 684bbae..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant0.bsf +++ /dev/null @@ -1,42 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_constant0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_constant0.qip deleted file mode 100644 index bb19c49..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_constant0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_constant0.vhd deleted file mode 100644 index 63631cc..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant0.vhd +++ /dev/null @@ -1,108 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_constant1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_constant1.bsf deleted file mode 100644 index 01fdb2b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant1.bsf +++ /dev/null @@ -1,42 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_constant1.inc b/FPGA_by_Gregory_Estrade/Video/lpm_constant1.inc deleted file mode 100644 index 9b556e7..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant1.inc +++ /dev/null @@ -1,23 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_constant1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_constant1.qip deleted file mode 100644 index 2bc12e7..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant1.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_constant1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_constant1.vhd deleted file mode 100644 index afa67ba..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant1.vhd +++ /dev/null @@ -1,108 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_constant2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_constant2.bsf deleted file mode 100644 index a4b7697..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant2.bsf +++ /dev/null @@ -1,42 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_constant2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_constant2.qip deleted file mode 100644 index ad38485..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant2.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_constant2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_constant2.vhd deleted file mode 100644 index f25e68f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant2.vhd +++ /dev/null @@ -1,108 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_constant3.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_constant3.bsf deleted file mode 100644 index 7616869..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant3.bsf +++ /dev/null @@ -1,42 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_constant3.qip b/FPGA_by_Gregory_Estrade/Video/lpm_constant3.qip deleted file mode 100644 index 615a781..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant3.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_constant3.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_constant3.vhd deleted file mode 100644 index 5d47d8e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant3.vhd +++ /dev/null @@ -1,108 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_constant4.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_constant4.bsf deleted file mode 100644 index 181c667..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant4.bsf +++ /dev/null @@ -1,42 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_constant4.inc b/FPGA_by_Gregory_Estrade/Video/lpm_constant4.inc deleted file mode 100644 index a913739..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant4.inc +++ /dev/null @@ -1,23 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_constant4.qip b/FPGA_by_Gregory_Estrade/Video/lpm_constant4.qip deleted file mode 100644 index 44fa63f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant4.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_constant4.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_constant4.vhd deleted file mode 100644 index e0fc73d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_constant4.vhd +++ /dev/null @@ -1,108 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff0.bsf deleted file mode 100644 index 6675606..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff0.bsf +++ /dev/null @@ -1,63 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff0.qip deleted file mode 100644 index d33c680..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff0.vhd deleted file mode 100644 index 4c17d8f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff0.vhd +++ /dev/null @@ -1,127 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff1.bsf deleted file mode 100644 index 947a023..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff1.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff1.qip deleted file mode 100644 index 94b30af..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff1.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff1.vhd deleted file mode 100644 index da02a15..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff1.vhd +++ /dev/null @@ -1,122 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff2.bsf deleted file mode 100644 index b52c75b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff2.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff2.qip deleted file mode 100644 index 9c46273..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff2.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff2.vhd deleted file mode 100644 index 27b4c3a..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff2.vhd +++ /dev/null @@ -1,122 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff3.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff3.bsf deleted file mode 100644 index 51248ea..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff3.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff3.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff3.qip deleted file mode 100644 index 98d1312..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff3.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff3.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff3.vhd deleted file mode 100644 index a86b4ee..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff3.vhd +++ /dev/null @@ -1,122 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff4.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff4.bsf deleted file mode 100644 index be432cb..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff4.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff4.inc b/FPGA_by_Gregory_Estrade/Video/lpm_ff4.inc deleted file mode 100644 index ea243d6..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff4.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_ff4.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff4.qip deleted file mode 100644 index f5a0a35..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff4.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff4.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff4.vhd deleted file mode 100644 index a738a64..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff4.vhd +++ /dev/null @@ -1,122 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff5.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff5.bsf deleted file mode 100644 index a69af6e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff5.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff5.inc b/FPGA_by_Gregory_Estrade/Video/lpm_ff5.inc deleted file mode 100644 index f65f941..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff5.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_ff5.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff5.qip deleted file mode 100644 index 0d13267..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff5.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff5.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff5.vhd deleted file mode 100644 index 96063a2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff5.vhd +++ /dev/null @@ -1,122 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_ff6.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_ff6.bsf deleted file mode 100644 index 73a2df0..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff6.bsf +++ /dev/null @@ -1,63 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_ff6.inc b/FPGA_by_Gregory_Estrade/Video/lpm_ff6.inc deleted file mode 100644 index c8a5a36..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff6.inc +++ /dev/null @@ -1,25 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_ff6.qip b/FPGA_by_Gregory_Estrade/Video/lpm_ff6.qip deleted file mode 100644 index 08e02f0..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff6.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_ff6.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_ff6.vhd deleted file mode 100644 index 5cc384d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_ff6.vhd +++ /dev/null @@ -1,127 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_fifoDZ.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.bsf deleted file mode 100644 index 1e24640..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.bsf +++ /dev/null @@ -1,79 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_fifoDZ.qip b/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.qip deleted file mode 100644 index 5444627..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_fifoDZ.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.vhd deleted file mode 100644 index 95486bb..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifoDZ.vhd +++ /dev/null @@ -1,178 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_fifo_dc0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.bsf deleted file mode 100644 index 61b485b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.bsf +++ /dev/null @@ -1,102 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_fifo_dc0.inc b/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.inc deleted file mode 100644 index d29fb88..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.inc +++ /dev/null @@ -1,30 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_fifo_dc0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.qip deleted file mode 100644 index e883724..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_fifo_dc0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.vhd deleted file mode 100644 index 8646d9c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_fifo_dc0.vhd +++ /dev/null @@ -1,203 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_latch1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_latch1.bsf deleted file mode 100644 index 7197b2f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_latch1.bsf +++ /dev/null @@ -1,53 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_latch1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_latch1.qip deleted file mode 100644 index bc53d50..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_latch1.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_latch1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_latch1.vhd deleted file mode 100644 index 0afc209..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_latch1.vhd +++ /dev/null @@ -1,110 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux0.bsf deleted file mode 100644 index ce1e27e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux0.bsf +++ /dev/null @@ -1,83 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux0.inc b/FPGA_by_Gregory_Estrade/Video/lpm_mux0.inc deleted file mode 100644 index b0bc2be..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux0.inc +++ /dev/null @@ -1,28 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_mux0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux0.qip deleted file mode 100644 index 5e8e2b6..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux0.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux0.vhd deleted file mode 100644 index 9d641a4..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux0.vhd +++ /dev/null @@ -1,251 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux1.bsf deleted file mode 100644 index 24ee953..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux1.bsf +++ /dev/null @@ -1,111 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux1.inc b/FPGA_by_Gregory_Estrade/Video/lpm_mux1.inc deleted file mode 100644 index e2f94a4..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux1.inc +++ /dev/null @@ -1,32 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_mux1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux1.qip deleted file mode 100644 index 8a445b2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux1.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux1.vhd deleted file mode 100644 index a9ad991..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux1.vhd +++ /dev/null @@ -1,271 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux2.bsf deleted file mode 100644 index b37c425..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux2.bsf +++ /dev/null @@ -1,167 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux2.inc b/FPGA_by_Gregory_Estrade/Video/lpm_mux2.inc deleted file mode 100644 index 2334c7e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux2.inc +++ /dev/null @@ -1,40 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_mux2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux2.qip deleted file mode 100644 index 7b5db74..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux2.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux2.vhd deleted file mode 100644 index cfece2e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux2.vhd +++ /dev/null @@ -1,311 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux3.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux3.bsf deleted file mode 100644 index c389543..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux3.bsf +++ /dev/null @@ -1,60 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux3.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux3.qip deleted file mode 100644 index ca1e672..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux3.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux3.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux3.vhd deleted file mode 100644 index b975686..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux3.vhd +++ /dev/null @@ -1,115 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux4.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux4.bsf deleted file mode 100644 index a1c9ca0..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux4.bsf +++ /dev/null @@ -1,60 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux4.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux4.qip deleted file mode 100644 index 7712e39..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux4.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux4.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux4.vhd deleted file mode 100644 index 854a491..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux4.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux5.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux5.bsf deleted file mode 100644 index e63ce50..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux5.bsf +++ /dev/null @@ -1,74 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux5.inc b/FPGA_by_Gregory_Estrade/Video/lpm_mux5.inc deleted file mode 100644 index a063f55..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux5.inc +++ /dev/null @@ -1,27 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_mux5.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux5.qip deleted file mode 100644 index 08b2e74..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux5.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux5.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux5.vhd deleted file mode 100644 index 1d35347..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux5.vhd +++ /dev/null @@ -1,373 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_mux6.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_mux6.bsf deleted file mode 100644 index 2196842..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux6.bsf +++ /dev/null @@ -1,111 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_mux6.inc b/FPGA_by_Gregory_Estrade/Video/lpm_mux6.inc deleted file mode 100644 index 3cf223d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux6.inc +++ /dev/null @@ -1,32 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_mux6.qip b/FPGA_by_Gregory_Estrade/Video/lpm_mux6.qip deleted file mode 100644 index 051a945..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux6.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_mux6.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_mux6.vhd deleted file mode 100644 index 42d5aae..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_mux6.vhd +++ /dev/null @@ -1,335 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_muxDZ.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.bsf deleted file mode 100644 index f4f1c7d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.bsf +++ /dev/null @@ -1,76 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_muxDZ.qip b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.qip deleted file mode 100644 index 34ffc75..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_muxDZ.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.vhd deleted file mode 100644 index e9bd32e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ.vhd +++ /dev/null @@ -1,377 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_muxDZ2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.bsf deleted file mode 100644 index b7e3184..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.bsf +++ /dev/null @@ -1,60 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_muxDZ2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.qip deleted file mode 100644 index 8203bc6..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_muxDZ2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.vhd deleted file mode 100644 index 42e0c81..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxDZ2.vhd +++ /dev/null @@ -1,115 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_muxVDM.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.bsf deleted file mode 100644 index 42d235c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.bsf +++ /dev/null @@ -1,158 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_muxVDM.qip b/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.qip deleted file mode 100644 index 08a824e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_muxVDM.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.vhd deleted file mode 100644 index 662c8be..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_muxVDM.vhd +++ /dev/null @@ -1,2225 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg0.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.bsf deleted file mode 100644 index fb70a4b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.bsf +++ /dev/null @@ -1,70 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg0.inc b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.inc deleted file mode 100644 index 1c0c4a2..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.inc +++ /dev/null @@ -1,26 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_shiftreg0.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.qip deleted file mode 100644 index a233319..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg0.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.vhd deleted file mode 100644 index 6e5d954..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg0.vhd +++ /dev/null @@ -1,135 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg1.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.bsf deleted file mode 100644 index aa20405..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg1.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.qip deleted file mode 100644 index 8a8e8a5..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg1.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.vhd deleted file mode 100644 index 781fe1b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg1.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg2.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.bsf deleted file mode 100644 index 0caa084..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg2.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.qip deleted file mode 100644 index 3c5305b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg2.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.vhd deleted file mode 100644 index ca02c26..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg2.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg3.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.bsf deleted file mode 100644 index d18b388..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg3.inc b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.inc deleted file mode 100644 index 4f70ce5..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_shiftreg3.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.qip deleted file mode 100644 index 783fdea..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg3.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.vhd deleted file mode 100644 index b87c221..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg3.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg4.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.bsf deleted file mode 100644 index 658958d..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg4.inc b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.inc deleted file mode 100644 index 322863a..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_shiftreg4.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.qip deleted file mode 100644 index 363cd59..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg4.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.vhd deleted file mode 100644 index 3d8f5d1..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg4.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg5.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.bsf deleted file mode 100644 index a528c96..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg5.inc b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.inc deleted file mode 100644 index 431ed2c..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_shiftreg5.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.qip deleted file mode 100644 index 9b71f4b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg5.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.vhd deleted file mode 100644 index 71a1232..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg5.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/lpm_shiftreg6.bsf b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.bsf deleted file mode 100644 index aa0296b..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/Video/lpm_shiftreg6.inc b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.inc deleted file mode 100644 index 7767c57..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/Video/lpm_shiftreg6.qip b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.qip deleted file mode 100644 index adb4909..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/Video/lpm_shiftreg6.vhd b/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.vhd deleted file mode 100644 index 773243e..0000000 --- a/FPGA_by_Gregory_Estrade/Video/lpm_shiftreg6.vhd +++ /dev/null @@ -1,125 +0,0 @@ --- 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_by_Gregory_Estrade/Video/mux41_0.v b/FPGA_by_Gregory_Estrade/Video/mux41_0.v deleted file mode 100644 index a1c3219..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_0.v +++ /dev/null @@ -1,30 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_0(S0,S1,D0,INH,D1,Q); -input S0; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_0.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_0.vhd deleted file mode 100644 index 5002edc..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_0.vhd +++ /dev/null @@ -1,52 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_0 IS -PORT -( - S0 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_0; - -ARCHITECTURE bdf_type OF mux41_0 IS -BEGIN - --- instantiate macrofunction - -b2v_inst40 : mux41 -PORT MAP(S0 => S0, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_1.v b/FPGA_by_Gregory_Estrade/Video/mux41_1.v deleted file mode 100644 index 042a8ce..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_1.v +++ /dev/null @@ -1,30 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_1(S0,S1,D0,INH,D1,Q); -input S0; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_1.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_1.vhd deleted file mode 100644 index fe14f8f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_1.vhd +++ /dev/null @@ -1,52 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_1 IS -PORT -( - S0 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_1; - -ARCHITECTURE bdf_type OF mux41_1 IS -BEGIN - --- instantiate macrofunction - -b2v_inst41 : mux41 -PORT MAP(S0 => S0, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_2.v b/FPGA_by_Gregory_Estrade/Video/mux41_2.v deleted file mode 100644 index 63aac29..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_2.v +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_2(S0,D2,S1,D0,INH,D1,Q); -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.D2(D2),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_2.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_2.vhd deleted file mode 100644 index ce26e48..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_2.vhd +++ /dev/null @@ -1,54 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_2 IS -PORT -( - S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_2; - -ARCHITECTURE bdf_type OF mux41_2 IS -BEGIN - --- instantiate macrofunction - -b2v_inst42 : mux41 -PORT MAP(S0 => S0, - D2 => D2, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_3.v b/FPGA_by_Gregory_Estrade/Video/mux41_3.v deleted file mode 100644 index 6676d45..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_3.v +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_3(S0,D2,S1,D0,INH,D1,Q); -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.D2(D2),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_3.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_3.vhd deleted file mode 100644 index 3a218f8..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_3.vhd +++ /dev/null @@ -1,54 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_3 IS -PORT -( - S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_3; - -ARCHITECTURE bdf_type OF mux41_3 IS -BEGIN - --- instantiate macrofunction - -b2v_inst43 : mux41 -PORT MAP(S0 => S0, - D2 => D2, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_4.v b/FPGA_by_Gregory_Estrade/Video/mux41_4.v deleted file mode 100644 index 61e48cb..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_4.v +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_4(S0,D2,S1,D0,INH,D1,Q); -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.D2(D2),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_4.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_4.vhd deleted file mode 100644 index 09fa038..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_4.vhd +++ /dev/null @@ -1,54 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_4 IS -PORT -( - S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_4; - -ARCHITECTURE bdf_type OF mux41_4 IS -BEGIN - --- instantiate macrofunction - -b2v_inst44 : mux41 -PORT MAP(S0 => S0, - D2 => D2, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_5.v b/FPGA_by_Gregory_Estrade/Video/mux41_5.v deleted file mode 100644 index d2d0205..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_5.v +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - - -module mux41_5(S0,D2,S1,D0,INH,D1,Q); -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -mux41 lpm_instance(.S0(S0),.D2(D2),.S1(S1),.D0(D0),.INH(INH),.D1(D1),.Q(Q)); - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/mux41_5.vhd b/FPGA_by_Gregory_Estrade/Video/mux41_5.vhd deleted file mode 100644 index c876641..0000000 --- a/FPGA_by_Gregory_Estrade/Video/mux41_5.vhd +++ /dev/null @@ -1,54 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY altera; -USE altera.maxplus2.all; - -LIBRARY work; - -ENTITY mux41_5 IS -PORT -( - S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC -); -END mux41_5; - -ARCHITECTURE bdf_type OF mux41_5 IS -BEGIN - --- instantiate macrofunction - -b2v_inst45 : mux41 -PORT MAP(S0 => S0, - D2 => D2, - S1 => S1, - D0 => D0, - INH => INH, - D1 => D1, - Q => Q); - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/Video/video.v b/FPGA_by_Gregory_Estrade/Video/video.v deleted file mode 100644 index 536dc6f..0000000 --- a/FPGA_by_Gregory_Estrade/Video/video.v +++ /dev/null @@ -1,1313 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:01 2014" - -module video( - MAIN_CLK, - nFB_CS1, - nFB_CS2, - nFB_CS3, - nFB_WR, - FB_SIZE0, - FB_SIZE1, - nRSTO, - nFB_OE, - FB_ALE, - DDR_SYNC_66M, - CLK33M, - CLK25M, - CLK_VIDEO, - VR_BUSY, - DDRCLK, - FB_ADR, - VR_D, - nBLANK, - nVWE, - nVCAS, - nVRAS, - nVCS, - nPD_VGA, - VCKE, - VSYNC, - HSYNC, - nSYNC, - VIDEO_TA, - PIXEL_CLK, - VIDEO_RECONFIG, - VR_WR, - VR_RD, - BA, - FB_AD, - VA, - VB, - VD, - VDM, - VDQS, - VG, - VR -); - - -input MAIN_CLK; -input nFB_CS1; -input nFB_CS2; -input nFB_CS3; -input nFB_WR; -input FB_SIZE0; -input FB_SIZE1; -input nRSTO; -input nFB_OE; -input FB_ALE; -input DDR_SYNC_66M; -input CLK33M; -input CLK25M; -input CLK_VIDEO; -input VR_BUSY; -input [3:0] DDRCLK; -input [31:0] FB_ADR; -input [8:0] VR_D; -output nBLANK; -output nVWE; -output nVCAS; -output nVRAS; -output nVCS; -output nPD_VGA; -output VCKE; -output VSYNC; -output HSYNC; -output nSYNC; -output VIDEO_TA; -output PIXEL_CLK; -output VIDEO_RECONFIG; -output VR_WR; -output VR_RD; -output [1:0] BA; -inout [31:0] FB_AD; -output [12:0] VA; -output [7:0] VB; -inout [31:0] VD; -output [3:0] VDM; -inout [3:0] VDQS; -output [7:0] VG; -output [7:0] VR; - -wire ACP_CLUT_RD; -wire [3:0] ACP_CLUT_WR; -wire [31:0] BLITTER_ADR; -wire [4:0] BLITTER_DACK; -wire [127:0] BLITTER_DIN; -wire [127:0] BLITTER_DOUT; -wire BLITTER_ON; -wire BLITTER_RUN; -wire BLITTER_SIG; -wire BLITTER_TA; -wire BLITTER_WR; -wire [23:0] CC16; -wire [31:0] CC24; -wire [23:0] CCA; -wire [23:0] CCF; -wire [23:0] CCR; -wire [23:0] CCS; -wire [2:0] CCSEL; -wire CLR_FIFO; -wire [7:0] CLUT_ADR; -wire CLUT_ADR1A; -wire CLUT_ADR2A; -wire CLUT_ADR3A; -wire CLUT_ADR4A; -wire CLUT_ADR5A; -wire CLUT_ADR6A; -wire CLUT_ADR7A; -wire [3:0] CLUT_MUX_ADR; -wire [3:0] CLUT_OFF; -wire COLOR1; -wire COLOR2; -wire COLOR4; -wire COLOR8; -wire [4:0] DDR_FB; -reg DDR_WR; - -//GE reg [1:0] DDRWR_D_SEL; -wire DDRWR_D_SEL1; -reg DDRWR_D_SEL0; - -wire DOP_FIFO_CLR; -wire FALCON_CLUT_RDH; -wire FALCON_CLUT_RDL; -wire [3:0] FALCON_CLUT_WR; -wire [127:0] FB_DDR; -wire [3:0] FB_LE; -wire [3:0] FB_VDOE; -wire [127:0] FIFO_D; -wire [8:0] FIFO_MW; -wire FIFO_RDE; -wire FIFO_WRE; -wire INTER_ZEI; -wire nFB_BURST; -wire PIXEL_CLK_ALTERA_SYNTHESIZED; -wire SR_BLITTER_DACK; -wire SR_DDR_FB; -wire SR_DDR_WR; -wire SR_DDRWR_D_SEL; -wire SR_FIFO_WRE; -wire [7:0] SR_VDMP; -wire ST_CLUT_RD; -wire [1:0] ST_CLUT_WR; -wire [3:0] VDM_SEL; -wire [127:0] VDMA; -wire [127:0] VDMB; -wire [127:0] VDMC; -wire [7:0] VDMP; -wire VDOUT_OE; -wire [63:0] VDP_IN; -wire [63:0] VDP_OUT; -wire [31:0] VDR; -wire [127:0] VDVZ; -wire VIDEO_DDR_TA; -wire VIDEO_MOD_TA; -wire [15:0] VIDEO_RAM_CTR; -wire [7:0] ZR_C8; -wire [7:0] ZR_C8B; -wire SYNTHESIZED_WIRE_0; -wire SYNTHESIZED_WIRE_1; -wire SYNTHESIZED_WIRE_2; -wire SYNTHESIZED_WIRE_3; -wire SYNTHESIZED_WIRE_4; -wire SYNTHESIZED_WIRE_5; -wire SYNTHESIZED_WIRE_60; -wire [15:0] SYNTHESIZED_WIRE_7; -reg DFF_inst93; -wire SYNTHESIZED_WIRE_8; -wire SYNTHESIZED_WIRE_9; -wire SYNTHESIZED_WIRE_61; -wire [31:0] SYNTHESIZED_WIRE_11; -wire [7:0] SYNTHESIZED_WIRE_12; -wire [31:0] SYNTHESIZED_WIRE_13; -wire [31:0] SYNTHESIZED_WIRE_14; -wire [31:0] SYNTHESIZED_WIRE_15; -wire SYNTHESIZED_WIRE_16; -wire SYNTHESIZED_WIRE_18; -wire SYNTHESIZED_WIRE_19; -wire SYNTHESIZED_WIRE_20; -wire SYNTHESIZED_WIRE_21; -wire SYNTHESIZED_WIRE_22; -wire SYNTHESIZED_WIRE_23; -wire SYNTHESIZED_WIRE_24; -wire [23:0] SYNTHESIZED_WIRE_25; -wire [23:0] SYNTHESIZED_WIRE_26; -wire [23:0] SYNTHESIZED_WIRE_62; -wire [2:0] SYNTHESIZED_WIRE_29; -wire [7:0] SYNTHESIZED_WIRE_30; -wire [2:0] SYNTHESIZED_WIRE_31; -wire [7:0] SYNTHESIZED_WIRE_32; -wire [7:0] SYNTHESIZED_WIRE_33; -wire [2:0] SYNTHESIZED_WIRE_34; -wire [127:0] SYNTHESIZED_WIRE_63; -wire [127:0] SYNTHESIZED_WIRE_36; -wire SYNTHESIZED_WIRE_38; -wire SYNTHESIZED_WIRE_40; -wire [5:0] SYNTHESIZED_WIRE_41; -wire [23:0] SYNTHESIZED_WIRE_42; -wire [23:0] SYNTHESIZED_WIRE_43; -wire [5:0] SYNTHESIZED_WIRE_44; -wire [5:0] SYNTHESIZED_WIRE_45; -wire SYNTHESIZED_WIRE_46; -wire [6:0] SYNTHESIZED_WIRE_47; -wire [31:0] SYNTHESIZED_WIRE_48; -reg DFF_inst91; -reg SYNTHESIZED_WIRE_64; -wire SYNTHESIZED_WIRE_49; -wire SYNTHESIZED_WIRE_50; -wire SYNTHESIZED_WIRE_51; -wire SYNTHESIZED_WIRE_52; -wire SYNTHESIZED_WIRE_53; -wire SYNTHESIZED_WIRE_54; -wire SYNTHESIZED_WIRE_55; -wire SYNTHESIZED_WIRE_56; -wire SYNTHESIZED_WIRE_57; -wire [23:0] SYNTHESIZED_WIRE_65; - -assign VB[7:0] = SYNTHESIZED_WIRE_65[7:0]; -assign VG[7:0] = SYNTHESIZED_WIRE_65[15:8]; -assign VR[7:0] = SYNTHESIZED_WIRE_65[23:16]; -assign SYNTHESIZED_WIRE_0 = 0; -assign SYNTHESIZED_WIRE_1 = 0; -assign SYNTHESIZED_WIRE_2 = 0; -assign SYNTHESIZED_WIRE_3 = 0; -assign SYNTHESIZED_WIRE_4 = 0; -assign SYNTHESIZED_WIRE_5 = 0; -assign SYNTHESIZED_WIRE_19 = 0; -assign SYNTHESIZED_WIRE_20 = 0; -assign SYNTHESIZED_WIRE_21 = 0; -assign SYNTHESIZED_WIRE_22 = 0; -assign SYNTHESIZED_WIRE_23 = 0; -assign SYNTHESIZED_WIRE_24 = 0; -assign SYNTHESIZED_WIRE_55 = 0; -assign SYNTHESIZED_WIRE_56 = 0; -assign SYNTHESIZED_WIRE_57 = 0; -wire [127:0] GDFX_TEMP_SIGNAL_6; -wire [127:0] GDFX_TEMP_SIGNAL_7; -wire [127:0] GDFX_TEMP_SIGNAL_8; -wire [127:0] GDFX_TEMP_SIGNAL_9; -wire [127:0] GDFX_TEMP_SIGNAL_10; -wire [127:0] GDFX_TEMP_SIGNAL_11; -wire [127:0] GDFX_TEMP_SIGNAL_12; -wire [127:0] GDFX_TEMP_SIGNAL_13; -wire [127:0] GDFX_TEMP_SIGNAL_14; -wire [127:0] GDFX_TEMP_SIGNAL_0; -wire [127:0] GDFX_TEMP_SIGNAL_1; -wire [127:0] GDFX_TEMP_SIGNAL_2; -wire [127:0] GDFX_TEMP_SIGNAL_3; -wire [127:0] GDFX_TEMP_SIGNAL_4; -wire [127:0] GDFX_TEMP_SIGNAL_5; - - -assign GDFX_TEMP_SIGNAL_6 = {VDMB[119:0],VDMA[127:120]}; -assign GDFX_TEMP_SIGNAL_7 = {VDMB[111:0],VDMA[127:112]}; -assign GDFX_TEMP_SIGNAL_8 = {VDMB[103:0],VDMA[127:104]}; -assign GDFX_TEMP_SIGNAL_9 = {VDMB[95:0],VDMA[127:96]}; -assign GDFX_TEMP_SIGNAL_10 = {VDMB[87:0],VDMA[127:88]}; -assign GDFX_TEMP_SIGNAL_11 = {VDMB[79:0],VDMA[127:80]}; -assign GDFX_TEMP_SIGNAL_12 = {VDMB[71:0],VDMA[127:72]}; -assign GDFX_TEMP_SIGNAL_13 = {VDMB[63:0],VDMA[127:64]}; -assign GDFX_TEMP_SIGNAL_14 = {VDMB[55:0],VDMA[127:56]}; -assign GDFX_TEMP_SIGNAL_0 = {VDMB[47:0],VDMA[127:48]}; -assign GDFX_TEMP_SIGNAL_1 = {VDMB[39:0],VDMA[127:40]}; -assign GDFX_TEMP_SIGNAL_2 = {VDMB[31:0],VDMA[127:32]}; -assign GDFX_TEMP_SIGNAL_3 = {VDMB[23:0],VDMA[127:24]}; -assign GDFX_TEMP_SIGNAL_4 = {VDMB[15:0],VDMA[127:16]}; -assign GDFX_TEMP_SIGNAL_5 = {VDMB[7:0],VDMA[127:8]}; - - -altdpram2 b2v_ACP_CLUT_RAM( - .wren_a(ACP_CLUT_WR[3]), - .wren_b(SYNTHESIZED_WIRE_0), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(ZR_C8B), - .data_a(FB_AD[7:0]), - - .q_a(SYNTHESIZED_WIRE_30), - .q_b(CCA[7:0])); - - -altdpram2 b2v_ACP_CLUT_RAM54( - .wren_a(ACP_CLUT_WR[2]), - .wren_b(SYNTHESIZED_WIRE_1), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(ZR_C8B), - .data_a(FB_AD[15:8]), - - .q_a(SYNTHESIZED_WIRE_32), - .q_b(CCA[15:8])); - - -altdpram2 b2v_ACP_CLUT_RAM55( - .wren_a(ACP_CLUT_WR[1]), - .wren_b(SYNTHESIZED_WIRE_2), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(ZR_C8B), - .data_a(FB_AD[23:16]), - - .q_a(SYNTHESIZED_WIRE_33), - .q_b(CCA[23:16])); - - -BLITTER b2v_BLITTER( - .nRSTO(nRSTO), - .MAIN_CLK(MAIN_CLK), - .FB_ALE(FB_ALE), - .nFB_WR(nFB_WR), - .nFB_OE(nFB_OE), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .BLITTER_ON(BLITTER_ON), - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .nFB_CS3(nFB_CS3), - .DDRCLK0(DDRCLK[0]), - .BLITTER_DACK(BLITTER_DACK), - .BLITTER_DIN(BLITTER_DIN), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .VIDEO_RAM_CTR(VIDEO_RAM_CTR), - .BLITTER_RUN(BLITTER_RUN), - .BLITTER_SIG(BLITTER_SIG), - .BLITTER_WR(BLITTER_WR), - .BLITTER_TA(BLITTER_TA), - .BLITTER_ADR(BLITTER_ADR), - .BLITTER_DOUT(BLITTER_DOUT) - ); - - -DDR_CTR b2v_DDR_CTR( - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .nFB_CS3(nFB_CS3), - .nFB_OE(nFB_OE), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .nRSTO(nRSTO), - .MAIN_CLK(MAIN_CLK), - .FB_ALE(FB_ALE), - .nFB_WR(nFB_WR), - .DDR_SYNC_66M(DDR_SYNC_66M), - .BLITTER_SIG(BLITTER_SIG), - .BLITTER_WR(BLITTER_WR), - .DDRCLK0(DDRCLK[0]), - .CLK33M(CLK33M), - .CLR_FIFO(CLR_FIFO), - .BLITTER_ADR(BLITTER_ADR), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .FIFO_MW(FIFO_MW), - .VIDEO_RAM_CTR(VIDEO_RAM_CTR), - .nVWE(nVWE), - .nVRAS(nVRAS), - .nVCS(nVCS), - .VCKE(VCKE), - .nVCAS(nVCAS), - .SR_FIFO_WRE(SR_FIFO_WRE), - .SR_DDR_FB(SR_DDR_FB), - .SR_DDR_WR(SR_DDR_WR), - .SR_DDRWR_D_SEL(SR_DDRWR_D_SEL), - .VIDEO_DDR_TA(VIDEO_DDR_TA), - .SR_BLITTER_DACK(SR_BLITTER_DACK), - .DDRWR_D_SEL1(DDRWR_D_SEL1), - .BA(BA), - - .FB_LE(FB_LE), - .FB_VDOE(FB_VDOE), - .SR_VDMP(SR_VDMP), - .VA(VA), - .VDM_SEL(VDM_SEL)); - - -altdpram1 b2v_FALCON_CLUT_BLUE( - .wren_a(FALCON_CLUT_WR[3]), - .wren_b(SYNTHESIZED_WIRE_3), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(CLUT_ADR), - .data_a(FB_AD[23:18]), - - .q_a(SYNTHESIZED_WIRE_45), - .q_b(CCF[7:2])); - - -altdpram1 b2v_FALCON_CLUT_GREEN( - .wren_a(FALCON_CLUT_WR[1]), - .wren_b(SYNTHESIZED_WIRE_4), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(CLUT_ADR), - .data_a(FB_AD[23:18]), - - .q_a(SYNTHESIZED_WIRE_44), - .q_b(CCF[15:10])); - - -altdpram1 b2v_FALCON_CLUT_RED( - .wren_a(FALCON_CLUT_WR[0]), - .wren_b(SYNTHESIZED_WIRE_5), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[9:2]), - .address_b(CLUT_ADR), - .data_a(FB_AD[31:26]), - - .q_a(SYNTHESIZED_WIRE_41), - .q_b(CCF[23:18])); - - -lpm_fifo_dc0 b2v_inst( - .wrreq(FIFO_WRE), - .wrclk(DDRCLK[0]), - .rdreq(SYNTHESIZED_WIRE_60), - .rdclk(PIXEL_CLK_ALTERA_SYNTHESIZED), - .aclr(CLR_FIFO), - .data(VDMC), - - .q(SYNTHESIZED_WIRE_63), - .wrusedw(FIFO_MW)); - - -altddio_bidir0 b2v_inst1( - .oe(VDOUT_OE), - .inclock(DDRCLK[1]), - .outclock(DDRCLK[3]), - .datain_h(VDP_OUT[63:32]), - .datain_l(VDP_OUT[31:0]), - .padio(VD), - .combout(SYNTHESIZED_WIRE_15), - .dataout_h(VDP_IN[31:0]), - .dataout_l(VDP_IN[63:32]) - ); - - -lpm_ff4 b2v_inst10( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(SYNTHESIZED_WIRE_7), - .q({CC16[23:19],CC16[15:10],CC16[7:3]})); - - -lpm_muxVDM b2v_inst100( - .data0x(VDMB), - .data10x(GDFX_TEMP_SIGNAL_0), - .data11x(GDFX_TEMP_SIGNAL_1), - .data12x(GDFX_TEMP_SIGNAL_2), - .data13x(GDFX_TEMP_SIGNAL_3), - .data14x(GDFX_TEMP_SIGNAL_4), - .data15x(GDFX_TEMP_SIGNAL_5), - .data1x(GDFX_TEMP_SIGNAL_6), - .data2x(GDFX_TEMP_SIGNAL_7), - .data3x(GDFX_TEMP_SIGNAL_8), - .data4x(GDFX_TEMP_SIGNAL_9), - .data5x(GDFX_TEMP_SIGNAL_10), - .data6x(GDFX_TEMP_SIGNAL_11), - .data7x(GDFX_TEMP_SIGNAL_12), - .data8x(GDFX_TEMP_SIGNAL_13), - .data9x(GDFX_TEMP_SIGNAL_14), - .sel(VDM_SEL), - .result(VDMC)); - - -lpm_mux3 b2v_inst102( - .data1(DFF_inst93), - .data0(ZR_C8[0]), - .sel(COLOR1), - .result(ZR_C8B[0])); - -assign CLUT_ADR[4] = CLUT_OFF[0] | SYNTHESIZED_WIRE_8; - -assign CLUT_ADR[6] = CLUT_OFF[2] | SYNTHESIZED_WIRE_9; - -assign SYNTHESIZED_WIRE_61 = COLOR8 | COLOR4; - -assign CLUT_ADR[2] = CLUT_ADR2A & SYNTHESIZED_WIRE_61; - -assign SYNTHESIZED_WIRE_16 = COLOR4 | COLOR8 | COLOR2; - - -/*lpm_bustri_LONG b2v_inst108( - .enabledt(FB_VDOE[0]), - .data(VDR), - .tridata(FB_AD) - );*/ -assign FB_AD = (FB_VDOE[0]) ? VDR : 32'hzzzzzzzz; - - -/*lpm_bustri_LONG b2v_inst109( - .enabledt(FB_VDOE[1]), - .data(SYNTHESIZED_WIRE_11), - .tridata(FB_AD) - );*/ -assign FB_AD = (FB_VDOE[1]) ? SYNTHESIZED_WIRE_11 : 32'hzzzzzzzz; - - -lpm_ff5 b2v_inst11( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(SYNTHESIZED_WIRE_12), - .q(ZR_C8)); - - -/*lpm_bustri_LONG b2v_inst110( - .enabledt(FB_VDOE[2]), - .data(SYNTHESIZED_WIRE_13), - .tridata(FB_AD) - );*/ -assign FB_AD = (FB_VDOE[2]) ? SYNTHESIZED_WIRE_13 : 32'hzzzzzzzz; - - -/*lpm_bustri_LONG b2v_inst119( - .enabledt(FB_VDOE[3]), - .data(SYNTHESIZED_WIRE_14), - .tridata(FB_AD) - );*/ -assign FB_AD = (FB_VDOE[3]) ? SYNTHESIZED_WIRE_14 : 32'hzzzzzzzz; - - -lpm_ff1 b2v_inst12( - .clock(DDRCLK[0]), - .data(VDP_IN[31:0]), - .q(VDVZ[31:0])); - - -lpm_ff0 b2v_inst13( - .clock(DDR_SYNC_66M), - .enable(FB_LE[0]), - .data(FB_AD), - .q(FB_DDR[127:96])); - - -lpm_ff0 b2v_inst14( - .clock(DDR_SYNC_66M), - .enable(FB_LE[1]), - .data(FB_AD), - .q(FB_DDR[95:64])); - - -lpm_ff0 b2v_inst15( - .clock(DDR_SYNC_66M), - .enable(FB_LE[2]), - .data(FB_AD), - .q(FB_DDR[63:32])); - - -lpm_ff0 b2v_inst16( - .clock(DDR_SYNC_66M), - .enable(FB_LE[3]), - .data(FB_AD), - .q(FB_DDR[31:0])); - - -lpm_ff0 b2v_inst17( - .clock(DDRCLK[0]), - .enable(DDR_FB[1]), - .data(VDP_IN[31:0]), - .q(SYNTHESIZED_WIRE_11)); - - -lpm_ff0 b2v_inst18( - .clock(DDRCLK[0]), - .enable(DDR_FB[0]), - .data(VDP_IN[63:32]), - .q(SYNTHESIZED_WIRE_13)); - - -lpm_ff0 b2v_inst19( - .clock(DDRCLK[0]), - .enable(DDR_FB[0]), - .data(VDP_IN[31:0]), - .q(SYNTHESIZED_WIRE_14)); - - -altddio_out0 b2v_inst2( - .outclock(DDRCLK[3]), - .datain_h(VDMP[7:4]), - .datain_l(VDMP[3:0]), - .dataout(VDM)); - - -lpm_ff1 b2v_inst20( - .clock(DDRCLK[0]), - .data(VDVZ[31:0]), - .q(VDVZ[95:64])); - - -lpm_mux0 b2v_inst21( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data0x(FIFO_D[127:96]), - .data1x(FIFO_D[95:64]), - .data2x(FIFO_D[63:32]), - .data3x(FIFO_D[31:0]), - .sel(CLUT_MUX_ADR[1:0]), - .result(SYNTHESIZED_WIRE_48)); - - -lpm_mux5 b2v_inst22( - .data0x(FB_DDR[127:64]), - .data1x(FB_DDR[63:0]), - .data2x(BLITTER_DOUT[127:64]), - .data3x(BLITTER_DOUT[63:0]), - .sel({DDRWR_D_SEL1, DDRWR_D_SEL0}), - .result(VDP_OUT)); - - -lpm_constant2 b2v_inst23( - .result({CC16[18:16],CC16[9:8],CC16[2:0]})); - - -lpm_mux1 b2v_inst24( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data0x(FIFO_D[127:112]), - .data1x(FIFO_D[111:96]), - .data2x(FIFO_D[95:80]), - .data3x(FIFO_D[79:64]), - .data4x(FIFO_D[63:48]), - .data5x(FIFO_D[47:32]), - .data6x(FIFO_D[31:16]), - .data7x(FIFO_D[15:0]), - .sel(CLUT_MUX_ADR[2:0]), - .result(SYNTHESIZED_WIRE_7)); - - -lpm_mux2 b2v_inst25( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data0x(FIFO_D[127:120]), - .data10x(FIFO_D[47:40]), - .data11x(FIFO_D[39:32]), - .data12x(FIFO_D[31:24]), - .data13x(FIFO_D[23:16]), - .data14x(FIFO_D[15:8]), - .data15x(FIFO_D[7:0]), - .data1x(FIFO_D[119:112]), - .data2x(FIFO_D[111:104]), - .data3x(FIFO_D[103:96]), - .data4x(FIFO_D[95:88]), - .data5x(FIFO_D[87:80]), - .data6x(FIFO_D[79:72]), - .data7x(FIFO_D[71:64]), - .data8x(FIFO_D[63:56]), - .data9x(FIFO_D[55:48]), - .sel(CLUT_MUX_ADR), - .result(SYNTHESIZED_WIRE_12)); - - -lpm_shiftreg4 b2v_inst26( - .clock(DDRCLK[0]), - .shiftin(SR_FIFO_WRE), - .shiftout(FIFO_WRE)); - - -/*lpm_latch0 b2v_inst27( - .gate(DDR_SYNC_66M), - .data(SYNTHESIZED_WIRE_15), - .q(VDR));*/ -reg [31:0] VDR_q = 32'd0; -assign VDR = VDR_q; -always @(DDR_SYNC_66M or SYNTHESIZED_WIRE_15) begin - if (DDR_SYNC_66M) begin - VDR_q <= SYNTHESIZED_WIRE_15; - end else begin - VDR_q <= VDR_q; - end -end - - -assign CLUT_ADR[1] = CLUT_ADR1A & SYNTHESIZED_WIRE_16; - - -lpm_ff1 b2v_inst3( - .clock(DDRCLK[0]), - .data(VDP_IN[63:32]), - .q(VDVZ[63:32])); - -assign CLUT_ADR[3] = SYNTHESIZED_WIRE_61 & CLUT_ADR3A; - -assign CLUT_ADR[5] = CLUT_OFF[1] | SYNTHESIZED_WIRE_18; - -assign SYNTHESIZED_WIRE_8 = CLUT_ADR4A & COLOR8; - -assign SYNTHESIZED_WIRE_18 = CLUT_ADR5A & COLOR8; - -assign SYNTHESIZED_WIRE_9 = CLUT_ADR6A & COLOR8; - -assign SYNTHESIZED_WIRE_46 = CLUT_ADR7A & COLOR8; - - -lpm_ff6 b2v_inst36( - .clock(DDRCLK[0]), - .enable(BLITTER_DACK[0]), - .data(VDVZ), - .q(BLITTER_DIN)); - -assign VDOUT_OE = DDR_WR | SR_DDR_WR; - - -assign VIDEO_TA = BLITTER_TA | VIDEO_MOD_TA | VIDEO_DDR_TA; - - -lpm_ff1 b2v_inst4( - .clock(DDRCLK[0]), - .data(VDVZ[63:32]), - .q(VDVZ[127:96])); - - -mux41_0 b2v_inst40( - .S0(COLOR2), - - .S1(COLOR4), - - .D0(CLUT_ADR6A), - .INH(SYNTHESIZED_WIRE_19), - .D1(CLUT_ADR7A), - .Q(SYNTHESIZED_WIRE_54)); - - -mux41_1 b2v_inst41( - .S0(COLOR2), - - .S1(COLOR4), - - .D0(CLUT_ADR5A), - .INH(SYNTHESIZED_WIRE_20), - .D1(CLUT_ADR6A), - .Q(SYNTHESIZED_WIRE_53)); - - -mux41_2 b2v_inst42( - .S0(COLOR2), - .D2(CLUT_ADR7A), - .S1(COLOR4), - - .D0(CLUT_ADR4A), - .INH(SYNTHESIZED_WIRE_21), - .D1(CLUT_ADR5A), - .Q(SYNTHESIZED_WIRE_52)); - - -mux41_3 b2v_inst43( - .S0(COLOR2), - .D2(CLUT_ADR6A), - .S1(COLOR4), - - .D0(CLUT_ADR3A), - .INH(SYNTHESIZED_WIRE_22), - .D1(CLUT_ADR4A), - .Q(SYNTHESIZED_WIRE_51)); - - -mux41_4 b2v_inst44( - .S0(COLOR2), - .D2(CLUT_ADR5A), - .S1(COLOR4), - - .D0(CLUT_ADR2A), - .INH(SYNTHESIZED_WIRE_23), - .D1(CLUT_ADR3A), - .Q(SYNTHESIZED_WIRE_50)); - - -mux41_5 b2v_inst45( - .S0(COLOR2), - .D2(CLUT_ADR4A), - .S1(COLOR4), - - .D0(CLUT_ADR1A), - .INH(SYNTHESIZED_WIRE_24), - .D1(CLUT_ADR2A), - .Q(SYNTHESIZED_WIRE_49)); - - -lpm_ff3 b2v_inst46( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(SYNTHESIZED_WIRE_25), - .q(SYNTHESIZED_WIRE_43)); - - -lpm_ff3 b2v_inst47( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(CCF), - .q(SYNTHESIZED_WIRE_25)); - - - -lpm_ff3 b2v_inst49( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(SYNTHESIZED_WIRE_26), - .q(SYNTHESIZED_WIRE_42)); - - -altddio_out2 b2v_inst5( - .outclock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .datain_h(SYNTHESIZED_WIRE_62), - .datain_l(SYNTHESIZED_WIRE_62), - .dataout(SYNTHESIZED_WIRE_65)); - - - -/*lpm_bustri1 b2v_inst51( - .enabledt(ST_CLUT_RD), - .data(SYNTHESIZED_WIRE_29), - .tridata(FB_AD[26:24]) - );*/ -assign FB_AD[26:24] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_29 : 3'bzzz; - - -lpm_ff3 b2v_inst52( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(CCS), - .q(SYNTHESIZED_WIRE_26)); - - -/*lpm_bustri_BYT b2v_inst53( - .enabledt(ACP_CLUT_RD), - .data(SYNTHESIZED_WIRE_30), - .tridata(FB_AD[7:0]) - );*/ -assign FB_AD[7:0] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_30 : 8'hzz; - - -lpm_constant0 b2v_inst54( - .result(CCS[20:16])); - - - -/*lpm_bustri1 b2v_inst56( - .enabledt(ST_CLUT_RD), - .data(SYNTHESIZED_WIRE_31), - .tridata(FB_AD[22:20]) - );*/ -assign FB_AD[22:20] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_31 : 3'bzzz; - - -/*lpm_bustri_BYT b2v_inst57( - .enabledt(ACP_CLUT_RD), - .data(SYNTHESIZED_WIRE_32), - .tridata(FB_AD[15:8]) - );*/ -assign FB_AD[15:8] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_32 : 8'hzz; - -/*lpm_bustri_BYT b2v_inst58( - .enabledt(ACP_CLUT_RD), - .data(SYNTHESIZED_WIRE_33), - .tridata(FB_AD[23:16]) - );*/ -assign FB_AD[23:16] = (ACP_CLUT_RD) ? SYNTHESIZED_WIRE_33 : 8'hzz; - - -lpm_constant0 b2v_inst59( - .result(CCS[12:8])); - - - - -/*lpm_bustri1 b2v_inst61( - .enabledt(ST_CLUT_RD), - .data(SYNTHESIZED_WIRE_34), - .tridata(FB_AD[18:16]) - );*/ -assign FB_AD[18:16] = (ST_CLUT_RD) ? SYNTHESIZED_WIRE_34 : 3'bzzz; - - -lpm_muxDZ b2v_inst62( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .clken(FIFO_RDE), - .sel(INTER_ZEI), - .data0x(SYNTHESIZED_WIRE_63), - .data1x(SYNTHESIZED_WIRE_36), - .result(FIFO_D)); - - -lpm_fifoDZ b2v_inst63( - .wrreq(SYNTHESIZED_WIRE_60), - .rdreq(SYNTHESIZED_WIRE_38), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .aclr(DOP_FIFO_CLR), - .data(SYNTHESIZED_WIRE_63), - .q(SYNTHESIZED_WIRE_36)); - - -lpm_constant0 b2v_inst64( - .result(CCS[4:0])); - -assign SYNTHESIZED_WIRE_60 = FIFO_RDE & SYNTHESIZED_WIRE_40; - - -/*lpm_bustri3 b2v_inst66( - .enabledt(FALCON_CLUT_RDH), - .data(SYNTHESIZED_WIRE_41), - .tridata(FB_AD[31:26]) - );*/ -assign FB_AD[31:26] = (FALCON_CLUT_RDH) ? SYNTHESIZED_WIRE_41 : 6'bzzzzzz; - -assign SYNTHESIZED_WIRE_38 = FIFO_RDE & INTER_ZEI; - - -assign SYNTHESIZED_WIRE_40 = ~INTER_ZEI; - - -lpm_mux6 b2v_inst7( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data0x(SYNTHESIZED_WIRE_42), - .data1x(SYNTHESIZED_WIRE_43), - - - .data4x(CCA), - .data5x(CC16), - .data6x(CC24[23:0]), - .data7x(CCR), - .sel(CCSEL), - .result(SYNTHESIZED_WIRE_62)); - - -/*lpm_bustri3 b2v_inst70( - .enabledt(FALCON_CLUT_RDH), - .data(SYNTHESIZED_WIRE_44), - .tridata(FB_AD[23:18]) - );*/ -assign FB_AD[23:18] = (FALCON_CLUT_RDH) ? SYNTHESIZED_WIRE_44 : 6'bzzzzzz; - - -lpm_ff6 b2v_inst71( - .clock(DDRCLK[0]), - .enable(FIFO_WRE), - .data(VDVZ), - .q(VDMA)); - - - - -/*lpm_bustri3 b2v_inst74( - .enabledt(FALCON_CLUT_RDL), - .data(SYNTHESIZED_WIRE_45), - .tridata(FB_AD[23:18]) - );*/ -assign FB_AD[23:18] = (FALCON_CLUT_RDL) ? SYNTHESIZED_WIRE_45 : 6'bzzzzzz; - - - - -lpm_constant1 b2v_inst77( - .result(CCF[1:0])); - - -assign CLUT_ADR[7] = CLUT_OFF[3] | SYNTHESIZED_WIRE_46; - - - -lpm_constant1 b2v_inst80( - .result(CCF[9:8])); - - -lpm_mux4 b2v_inst81( - .sel(COLOR1), - .data0x(ZR_C8[7:1]), - .data1x(SYNTHESIZED_WIRE_47), - .result(ZR_C8B[7:1])); - - -lpm_constant3 b2v_inst82( - .result(SYNTHESIZED_WIRE_47)); - - -lpm_constant1 b2v_inst83( - .result(CCF[17:16])); - -assign VDQS[3] = DDR_WR ? DDRCLK[0] : 1'bz; - -assign VDQS[2] = DDR_WR ? DDRCLK[0] : 1'bz; - -assign VDQS[1] = DDR_WR ? DDRCLK[0] : 1'bz; - -assign VDQS[0] = DDR_WR ? DDRCLK[0] : 1'bz; - - -always@(posedge DDRCLK[3]) -begin - begin - DDRWR_D_SEL0 = SR_DDRWR_D_SEL; - end -end - - -lpm_shiftreg6 b2v_inst89( - .clock(DDRCLK[0]), - .shiftin(SR_BLITTER_DACK), - .q(BLITTER_DACK)); - - -lpm_ff1 b2v_inst9( - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .data(SYNTHESIZED_WIRE_48), - .q(CC24)); - - -always@(posedge DDRCLK[3]) -begin - begin - DDR_WR = SR_DDR_WR; - end -end - - -always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) -begin - begin - DFF_inst91 = CLUT_ADR[0]; - end -end - - -lpm_shiftreg6 b2v_inst92( - .clock(DDRCLK[0]), - .shiftin(SR_DDR_FB), - .q(DDR_FB)); - - -always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) -begin - begin - DFF_inst93 = DFF_inst91; - end -end - - -lpm_ff6 b2v_inst94( - .clock(DDRCLK[0]), - .enable(FIFO_WRE), - .data(VDMA), - .q(VDMB)); - - -always@(posedge PIXEL_CLK_ALTERA_SYNTHESIZED) -begin - begin - SYNTHESIZED_WIRE_64 = FIFO_RDE; - end -end - - - -lpm_ff5 b2v_inst97( - .clock(DDRCLK[2]), - .data(SR_VDMP), - .q(VDMP)); - - -lpm_shiftreg0 b2v_sr0( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_49), - .data(FIFO_D[127:112]), - .shiftout(CLUT_ADR[0])); - - -lpm_shiftreg0 b2v_sr1( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_50), - .data(FIFO_D[111:96]), - .shiftout(CLUT_ADR1A)); - - -lpm_shiftreg0 b2v_sr2( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_51), - .data(FIFO_D[95:80]), - .shiftout(CLUT_ADR2A)); - - -lpm_shiftreg0 b2v_sr3( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_52), - .data(FIFO_D[79:64]), - .shiftout(CLUT_ADR3A)); - - -lpm_shiftreg0 b2v_sr4( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_53), - .data(FIFO_D[63:48]), - .shiftout(CLUT_ADR4A)); - - -lpm_shiftreg0 b2v_sr5( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(SYNTHESIZED_WIRE_54), - .data(FIFO_D[47:32]), - .shiftout(CLUT_ADR5A)); - - -lpm_shiftreg0 b2v_sr6( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(CLUT_ADR7A), - .data(FIFO_D[31:16]), - .shiftout(CLUT_ADR6A)); - - -lpm_shiftreg0 b2v_sr7( - .load(SYNTHESIZED_WIRE_64), - .clock(PIXEL_CLK_ALTERA_SYNTHESIZED), - .shiftin(CLUT_ADR[0]), - .data(FIFO_D[15:0]), - .shiftout(CLUT_ADR7A)); - - -altdpram0 b2v_ST_CLUT_BLUE( - .wren_a(ST_CLUT_WR[1]), - .wren_b(SYNTHESIZED_WIRE_55), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[4:1]), - .address_b(CLUT_ADR[3:0]), - .data_a(FB_AD[18:16]), - - .q_a(SYNTHESIZED_WIRE_34), - .q_b(CCS[7:5])); - - -altdpram0 b2v_ST_CLUT_GREEN( - .wren_a(ST_CLUT_WR[1]), - .wren_b(SYNTHESIZED_WIRE_56), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[4:1]), - .address_b(CLUT_ADR[3:0]), - .data_a(FB_AD[22:20]), - - .q_a(SYNTHESIZED_WIRE_31), - .q_b(CCS[15:13])); - - -altdpram0 b2v_ST_CLUT_RED( - .wren_a(ST_CLUT_WR[0]), - .wren_b(SYNTHESIZED_WIRE_57), - .clock_a(MAIN_CLK), - .clock_b(PIXEL_CLK_ALTERA_SYNTHESIZED), - .address_a(FB_ADR[4:1]), - .address_b(CLUT_ADR[3:0]), - .data_a(FB_AD[26:24]), - - .q_a(SYNTHESIZED_WIRE_29), - .q_b(CCS[23:21])); - - -VIDEO_MOD_MUX_CLUTCTR b2v_VIDEO_MOD_MUX_CLUTCTR( - .nRSTO(nRSTO), - .MAIN_CLK(MAIN_CLK), - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .nFB_CS3(nFB_CS3), - .nFB_WR(nFB_WR), - .nFB_OE(nFB_OE), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .nFB_BURST(nFB_BURST), - .CLK33M(CLK33M), - .CLK25M(CLK25M), - .BLITTER_RUN(BLITTER_RUN), - .CLK_VIDEO(CLK_VIDEO), - .VR_BUSY(VR_BUSY), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .VR_D(VR_D), - .COLOR8(COLOR8), - .ACP_CLUT_RD(ACP_CLUT_RD), - .COLOR1(COLOR1), - .FALCON_CLUT_RDH(FALCON_CLUT_RDH), - .FALCON_CLUT_RDL(FALCON_CLUT_RDL), - .ST_CLUT_RD(ST_CLUT_RD), - .HSYNC(HSYNC), - .VSYNC(VSYNC), - .nBLANK(nBLANK), - .nSYNC(nSYNC), - .nPD_VGA(nPD_VGA), - .FIFO_RDE(FIFO_RDE), - .COLOR2(COLOR2), - .COLOR4(COLOR4), - .PIXEL_CLK(PIXEL_CLK_ALTERA_SYNTHESIZED), - .BLITTER_ON(BLITTER_ON), - .VIDEO_MOD_TA(VIDEO_MOD_TA), - .INTER_ZEI(INTER_ZEI), - .DOP_FIFO_CLR(DOP_FIFO_CLR), - .VIDEO_RECONFIG(VIDEO_RECONFIG), - .VR_WR(VR_WR), - .VR_RD(VR_RD), - .CLR_FIFO(CLR_FIFO), - .ACP_CLUT_WR(ACP_CLUT_WR), - .CCR(CCR), - .CCSEL(CCSEL), - .CLUT_MUX_ADR(CLUT_MUX_ADR), - .CLUT_OFF(CLUT_OFF), - .FALCON_CLUT_WR(FALCON_CLUT_WR), - - .ST_CLUT_WR(ST_CLUT_WR), - .VIDEO_RAM_CTR(VIDEO_RAM_CTR)); - -assign PIXEL_CLK = PIXEL_CLK_ALTERA_SYNTHESIZED; - -endmodule - -module mux41_0(S0,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule - -module mux41_1(S0,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule - -module mux41_2(S0,D2,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule - -module mux41_3(S0,D2,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule - -module mux41_4(S0,D2,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule - -module mux41_5(S0,D2,S1,D0,INH,D1,Q); -/* synthesis black_box */ - -input S0; -input D2; -input S1; -input D0; -input INH; -input D1; -output Q; - -endmodule diff --git a/FPGA_by_Gregory_Estrade/Video/video.vhd b/FPGA_by_Gregory_Estrade/Video/video.vhd deleted file mode 100644 index 7faebdc..0000000 --- a/FPGA_by_Gregory_Estrade/Video/video.vhd +++ /dev/null @@ -1,1755 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:19:30 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY work; - -ENTITY video IS - PORT - ( - MAIN_CLK : IN STD_LOGIC; - nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - nFB_WR : IN STD_LOGIC; - FB_SIZE0 : IN STD_LOGIC; - FB_SIZE1 : IN STD_LOGIC; - nRSTO : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - FB_ALE : IN STD_LOGIC; - DDR_SYNC_66M : IN STD_LOGIC; - CLK33M : IN STD_LOGIC; - CLK25M : IN STD_LOGIC; - CLK_VIDEO : IN STD_LOGIC; - VR_BUSY : IN STD_LOGIC; - DDRCLK : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - VD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - VDQS : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0); - VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0); - nBLANK : OUT STD_LOGIC; - nVWE : OUT STD_LOGIC; - nVCAS : OUT STD_LOGIC; - nVRAS : OUT STD_LOGIC; - nVCS : OUT STD_LOGIC; - nPD_VGA : OUT STD_LOGIC; - VCKE : OUT STD_LOGIC; - VSYNC : OUT STD_LOGIC; - HSYNC : OUT STD_LOGIC; - nSYNC : OUT STD_LOGIC; - VIDEO_TA : OUT STD_LOGIC; - PIXEL_CLK : OUT STD_LOGIC; - VIDEO_RECONFIG : OUT STD_LOGIC; - VR_WR : OUT STD_LOGIC; - VR_RD : OUT STD_LOGIC; - BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); - VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); - VB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VDM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - VG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) - ); -END video; - -ARCHITECTURE bdf_type OF video IS - -ATTRIBUTE black_box : BOOLEAN; -ATTRIBUTE noopt : BOOLEAN; - -COMPONENT mux41_0 - PORT(S0 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_0: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_0: COMPONENT IS true; - -COMPONENT mux41_1 - PORT(S0 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_1: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_1: COMPONENT IS true; - -COMPONENT mux41_2 - PORT(S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_2: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_2: COMPONENT IS true; - -COMPONENT mux41_3 - PORT(S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_3: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_3: COMPONENT IS true; - -COMPONENT mux41_4 - PORT(S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_4: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_4: COMPONENT IS true; - -COMPONENT mux41_5 - PORT(S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - D0 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D1 : IN STD_LOGIC; - Q : OUT STD_LOGIC); -END COMPONENT; -ATTRIBUTE black_box OF mux41_5: COMPONENT IS true; -ATTRIBUTE noopt OF mux41_5: COMPONENT IS true; - -COMPONENT altdpram2 - PORT(wren_a : IN STD_LOGIC; - wren_b : IN STD_LOGIC; - clock_a : IN STD_LOGIC; - clock_b : IN STD_LOGIC; - address_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - address_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - data_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - data_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) - ); -END COMPONENT; - -COMPONENT blitter - 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; - BLITTER_ON : IN STD_LOGIC; - nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - DDRCLK0 : IN STD_LOGIC; - BLITTER_DACK : IN STD_LOGIC_VECTOR(4 DOWNTO 0); - BLITTER_DIN : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 DOWNTO 0); - BLITTER_RUN : OUT STD_LOGIC; - BLITTER_SIG : OUT STD_LOGIC; - BLITTER_WR : OUT STD_LOGIC; - BLITTER_TA : OUT STD_LOGIC; - BLITTER_ADR : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); - BLITTER_DOUT : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT ddr_ctr - PORT(nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - FB_SIZE0 : IN STD_LOGIC; - FB_SIZE1 : IN STD_LOGIC; - nRSTO : IN STD_LOGIC; - MAIN_CLK : IN STD_LOGIC; - FB_ALE : IN STD_LOGIC; - nFB_WR : IN STD_LOGIC; - DDR_SYNC_66M : IN STD_LOGIC; - BLITTER_SIG : IN STD_LOGIC; - BLITTER_WR : IN STD_LOGIC; - DDRCLK0 : IN STD_LOGIC; - CLK33M : IN STD_LOGIC; - CLR_FIFO : IN STD_LOGIC; - BLITTER_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - FIFO_MW : IN STD_LOGIC_VECTOR(8 DOWNTO 0); - VIDEO_RAM_CTR : IN STD_LOGIC_VECTOR(15 DOWNTO 0); - nVWE : OUT STD_LOGIC; - nVRAS : OUT STD_LOGIC; - nVCS : OUT STD_LOGIC; - VCKE : OUT STD_LOGIC; - nVCAS : OUT STD_LOGIC; - SR_FIFO_WRE : OUT STD_LOGIC; - SR_DDR_FB : OUT STD_LOGIC; - SR_DDR_WR : OUT STD_LOGIC; - SR_DDRWR_D_SEL : OUT STD_LOGIC; - VIDEO_DDR_TA : OUT STD_LOGIC; - SR_BLITTER_DACK : OUT STD_LOGIC; - DDRWR_D_SEL1 : OUT STD_LOGIC; - BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); - FB_LE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - FB_VDOE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - SR_VDMP : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); - VDM_SEL : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altdpram1 - PORT(wren_a : IN STD_LOGIC; - wren_b : IN STD_LOGIC; - clock_a : IN STD_LOGIC; - clock_b : IN STD_LOGIC; - address_a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - address_b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - data_a : IN STD_LOGIC_VECTOR(5 DOWNTO 0); - data_b : IN STD_LOGIC_VECTOR(5 DOWNTO 0); - q_a : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); - q_b : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_fifo_dc0 - PORT(wrreq : IN STD_LOGIC; - wrclk : IN STD_LOGIC; - rdreq : IN STD_LOGIC; - rdclk : IN STD_LOGIC; - aclr : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - rdempty : OUT STD_LOGIC; - q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0); - wrusedw : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altddio_bidir0 - PORT(oe : IN STD_LOGIC; - inclock : IN STD_LOGIC; - outclock : IN STD_LOGIC; - datain_h : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - datain_l : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - padio : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - 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) - ); -END COMPONENT; - -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; - -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; - -COMPONENT lpm_mux3 - PORT(data1 : IN STD_LOGIC; - data0 : IN STD_LOGIC; - sel : IN STD_LOGIC; - result : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT lpm_bustri_long - PORT(enabledt : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - tridata : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0) - ); -END COMPONENT; - -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; - -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; - -COMPONENT lpm_ff0 - PORT(clock : IN STD_LOGIC; - enable : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altddio_out0 - PORT(outclock : IN STD_LOGIC; - datain_h : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - datain_l : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - dataout : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) - ); -END COMPONENT; - -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; - -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; - -COMPONENT lpm_constant2 - PORT( result : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) - ); -END COMPONENT; - -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; - -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; - -COMPONENT lpm_shiftreg4 - PORT(clock : IN STD_LOGIC; - shiftin : IN STD_LOGIC; - shiftout : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT lpm_latch0 - PORT(gate : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_ff6 - PORT(clock : IN STD_LOGIC; - enable : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) - ); -END COMPONENT; - -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; - -COMPONENT altddio_out2 - PORT(outclock : IN STD_LOGIC; - datain_h : IN STD_LOGIC_VECTOR(23 DOWNTO 0); - datain_l : IN STD_LOGIC_VECTOR(23 DOWNTO 0); - dataout : OUT STD_LOGIC_VECTOR(23 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_bustri1 - PORT(enabledt : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(2 DOWNTO 0); - tridata : INOUT STD_LOGIC_VECTOR(2 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_bustri_byt - PORT(enabledt : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - tridata : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_constant0 - PORT( result : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_muxdz - PORT(clock : IN STD_LOGIC; - clken : IN STD_LOGIC; - sel : IN STD_LOGIC; - data0x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - data1x : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - result : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_fifodz - PORT(wrreq : IN STD_LOGIC; - rdreq : IN STD_LOGIC; - clock : IN STD_LOGIC; - aclr : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(127 DOWNTO 0); - q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_bustri3 - PORT(enabledt : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(5 DOWNTO 0); - tridata : INOUT STD_LOGIC_VECTOR(5 DOWNTO 0) - ); -END COMPONENT; - -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; - -COMPONENT lpm_constant1 - PORT( result : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_mux4 - PORT(sel : IN STD_LOGIC; - data0x : IN STD_LOGIC_VECTOR(6 DOWNTO 0); - data1x : IN STD_LOGIC_VECTOR(6 DOWNTO 0); - result : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_constant3 - PORT( result : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_shiftreg6 - PORT(clock : IN STD_LOGIC; - shiftin : IN STD_LOGIC; - q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT lpm_shiftreg0 - PORT(load : IN STD_LOGIC; - clock : IN STD_LOGIC; - shiftin : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(15 DOWNTO 0); - shiftout : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT altdpram0 - PORT(wren_a : IN STD_LOGIC; - wren_b : IN STD_LOGIC; - clock_a : IN STD_LOGIC; - clock_b : IN STD_LOGIC; - address_a : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - address_b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - data_a : IN STD_LOGIC_VECTOR(2 DOWNTO 0); - data_b : IN STD_LOGIC_VECTOR(2 DOWNTO 0); - q_a : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); - q_b : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT video_mod_mux_clutctr - PORT(nRSTO : IN STD_LOGIC; - MAIN_CLK : IN STD_LOGIC; - nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - nFB_WR : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - FB_SIZE0 : IN STD_LOGIC; - FB_SIZE1 : IN STD_LOGIC; - nFB_BURST : IN STD_LOGIC; - CLK33M : IN STD_LOGIC; - CLK25M : IN STD_LOGIC; - BLITTER_RUN : IN STD_LOGIC; - CLK_VIDEO : IN STD_LOGIC; - VR_BUSY : IN STD_LOGIC; - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0); - COLOR8 : OUT STD_LOGIC; - ACP_CLUT_RD : OUT STD_LOGIC; - COLOR1 : OUT STD_LOGIC; - FALCON_CLUT_RDH : OUT STD_LOGIC; - FALCON_CLUT_RDL : OUT STD_LOGIC; - ST_CLUT_RD : OUT STD_LOGIC; - HSYNC : OUT STD_LOGIC; - VSYNC : OUT STD_LOGIC; - nBLANK : OUT STD_LOGIC; - nSYNC : OUT STD_LOGIC; - nPD_VGA : OUT STD_LOGIC; - FIFO_RDE : OUT STD_LOGIC; - COLOR2 : OUT STD_LOGIC; - COLOR4 : OUT STD_LOGIC; - PIXEL_CLK : OUT STD_LOGIC; - BLITTER_ON : OUT STD_LOGIC; - VIDEO_MOD_TA : OUT STD_LOGIC; - INTER_ZEI : OUT STD_LOGIC; - DOP_FIFO_CLR : OUT STD_LOGIC; - VIDEO_RECONFIG : OUT STD_LOGIC; - VR_WR : OUT STD_LOGIC; - VR_RD : OUT STD_LOGIC; - CLR_FIFO : OUT STD_LOGIC; - ACP_CLUT_WR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - CCR : OUT STD_LOGIC_VECTOR(23 DOWNTO 0); - CCSEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); - CLUT_MUX_ADR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - CLUT_OFF : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - FALCON_CLUT_WR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - ST_CLUT_WR : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); - VIDEO_RAM_CTR : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) - ); -END COMPONENT; - -SIGNAL ACP_CLUT_RD : STD_LOGIC; -SIGNAL ACP_CLUT_WR : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL BLITTER_ADR : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL BLITTER_DACK : STD_LOGIC_VECTOR(4 DOWNTO 0); -SIGNAL BLITTER_DIN : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL BLITTER_DOUT : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL BLITTER_ON : STD_LOGIC; -SIGNAL BLITTER_RUN : STD_LOGIC; -SIGNAL BLITTER_SIG : STD_LOGIC; -SIGNAL BLITTER_TA : STD_LOGIC; -SIGNAL BLITTER_WR : STD_LOGIC; -SIGNAL CC16 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL CC24 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL CCA : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL CCF : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL CCR : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL CCS : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL CCSEL : STD_LOGIC_VECTOR(2 DOWNTO 0); -SIGNAL CLR_FIFO : STD_LOGIC; -SIGNAL CLUT_ADR : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL CLUT_ADR1A : STD_LOGIC; -SIGNAL CLUT_ADR2A : STD_LOGIC; -SIGNAL CLUT_ADR3A : STD_LOGIC; -SIGNAL CLUT_ADR4A : STD_LOGIC; -SIGNAL CLUT_ADR5A : STD_LOGIC; -SIGNAL CLUT_ADR6A : STD_LOGIC; -SIGNAL CLUT_ADR7A : STD_LOGIC; -SIGNAL CLUT_MUX_ADR : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL CLUT_OFF : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL COLOR1 : STD_LOGIC; -SIGNAL COLOR2 : STD_LOGIC; -SIGNAL COLOR4 : STD_LOGIC; -SIGNAL COLOR8 : STD_LOGIC; -SIGNAL DDR_FB : STD_LOGIC_VECTOR(4 DOWNTO 0); -SIGNAL DDR_WR : STD_LOGIC; -SIGNAL DDRWR_D_SEL : STD_LOGIC_VECTOR(1 DOWNTO 0); -SIGNAL DOP_FIFO_CLR : STD_LOGIC; -SIGNAL FALCON_CLUT_RDH : STD_LOGIC; -SIGNAL FALCON_CLUT_RDL : STD_LOGIC; -SIGNAL FALCON_CLUT_WR : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL FB_DDR : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL FB_LE : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL FB_VDOE : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL FIFO_D : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL FIFO_MW : STD_LOGIC_VECTOR(8 DOWNTO 0); -SIGNAL FIFO_RDE : STD_LOGIC; -SIGNAL FIFO_WRE : STD_LOGIC; -SIGNAL INTER_ZEI : STD_LOGIC; -SIGNAL nFB_BURST : STD_LOGIC; -SIGNAL PIXEL_CLK_ALTERA_SYNTHESIZED : STD_LOGIC; -SIGNAL SR_BLITTER_DACK : STD_LOGIC; -SIGNAL SR_DDR_FB : STD_LOGIC; -SIGNAL SR_DDR_WR : STD_LOGIC; -SIGNAL SR_DDRWR_D_SEL : STD_LOGIC; -SIGNAL SR_FIFO_WRE : STD_LOGIC; -SIGNAL SR_VDMP : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL ST_CLUT_RD : STD_LOGIC; -SIGNAL ST_CLUT_WR : STD_LOGIC_VECTOR(1 DOWNTO 0); -SIGNAL VDM_SEL : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL VDMA : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL VDMB : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL VDMC : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL VDMP : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL VDOUT_OE : STD_LOGIC; -SIGNAL VDP_IN : STD_LOGIC_VECTOR(63 DOWNTO 0); -SIGNAL VDP_OUT : STD_LOGIC_VECTOR(63 DOWNTO 0); -SIGNAL VDR : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL VDVZ : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL VIDEO_DDR_TA : STD_LOGIC; -SIGNAL VIDEO_MOD_TA : STD_LOGIC; -SIGNAL VIDEO_RAM_CTR : STD_LOGIC_VECTOR(15 DOWNTO 0); -SIGNAL ZR_C8 : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL ZR_C8B : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_3 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_4 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_5 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_60 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_7 : STD_LOGIC_VECTOR(15 DOWNTO 0); -SIGNAL DFF_inst93 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_8 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_9 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_61 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_11 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_12 : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_15 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_16 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_18 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_19 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_20 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_21 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_22 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_23 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_24 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_25 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_26 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_62 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_29 : STD_LOGIC_VECTOR(2 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_30 : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_31 : STD_LOGIC_VECTOR(2 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_32 : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_33 : STD_LOGIC_VECTOR(7 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_34 : STD_LOGIC_VECTOR(2 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_63 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_36 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_38 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_40 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_41 : STD_LOGIC_VECTOR(5 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_42 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_43 : STD_LOGIC_VECTOR(23 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_44 : STD_LOGIC_VECTOR(5 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_45 : STD_LOGIC_VECTOR(5 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_46 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_47 : STD_LOGIC_VECTOR(6 DOWNTO 0); -SIGNAL SYNTHESIZED_WIRE_48 : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL DFF_inst91 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_64 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_49 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_50 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_51 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_52 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_53 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_54 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_55 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_56 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_57 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_65 : STD_LOGIC_VECTOR(23 DOWNTO 0); - -SIGNAL GDFX_TEMP_SIGNAL_7 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_8 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_9 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_10 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_11 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_12 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_13 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_14 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_15 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_1 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_2 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_3 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_4 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_5 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_6 : STD_LOGIC_VECTOR(127 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_0 : STD_LOGIC_VECTOR(15 DOWNTO 0); -SIGNAL GDFX_TEMP_SIGNAL_16 : STD_LOGIC_VECTOR(7 DOWNTO 0); - -BEGIN -VB(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(7 DOWNTO 0); -VG(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(15 DOWNTO 8); -VR(7 DOWNTO 0) <= SYNTHESIZED_WIRE_65(23 DOWNTO 16); -SYNTHESIZED_WIRE_0 <= '0'; -SYNTHESIZED_WIRE_1 <= '0'; -SYNTHESIZED_WIRE_2 <= '0'; -SYNTHESIZED_WIRE_3 <= '0'; -SYNTHESIZED_WIRE_4 <= '0'; -SYNTHESIZED_WIRE_5 <= '0'; -SYNTHESIZED_WIRE_19 <= '0'; -SYNTHESIZED_WIRE_20 <= '0'; -SYNTHESIZED_WIRE_21 <= '0'; -SYNTHESIZED_WIRE_22 <= '0'; -SYNTHESIZED_WIRE_23 <= '0'; -SYNTHESIZED_WIRE_24 <= '0'; -SYNTHESIZED_WIRE_55 <= '0'; -SYNTHESIZED_WIRE_56 <= '0'; -SYNTHESIZED_WIRE_57 <= '0'; - -GDFX_TEMP_SIGNAL_7 <= (VDMB(119 DOWNTO 0) & VDMA(127 DOWNTO 120)); -GDFX_TEMP_SIGNAL_8 <= (VDMB(111 DOWNTO 0) & VDMA(127 DOWNTO 112)); -GDFX_TEMP_SIGNAL_9 <= (VDMB(103 DOWNTO 0) & VDMA(127 DOWNTO 104)); -GDFX_TEMP_SIGNAL_10 <= (VDMB(95 DOWNTO 0) & VDMA(127 DOWNTO 96)); -GDFX_TEMP_SIGNAL_11 <= (VDMB(87 DOWNTO 0) & VDMA(127 DOWNTO 88)); -GDFX_TEMP_SIGNAL_12 <= (VDMB(79 DOWNTO 0) & VDMA(127 DOWNTO 80)); -GDFX_TEMP_SIGNAL_13 <= (VDMB(71 DOWNTO 0) & VDMA(127 DOWNTO 72)); -GDFX_TEMP_SIGNAL_14 <= (VDMB(63 DOWNTO 0) & VDMA(127 DOWNTO 64)); -GDFX_TEMP_SIGNAL_15 <= (VDMB(55 DOWNTO 0) & VDMA(127 DOWNTO 56)); -GDFX_TEMP_SIGNAL_1 <= (VDMB(47 DOWNTO 0) & VDMA(127 DOWNTO 48)); -GDFX_TEMP_SIGNAL_2 <= (VDMB(39 DOWNTO 0) & VDMA(127 DOWNTO 40)); -GDFX_TEMP_SIGNAL_3 <= (VDMB(31 DOWNTO 0) & VDMA(127 DOWNTO 32)); -GDFX_TEMP_SIGNAL_4 <= (VDMB(23 DOWNTO 0) & VDMA(127 DOWNTO 24)); -GDFX_TEMP_SIGNAL_5 <= (VDMB(15 DOWNTO 0) & VDMA(127 DOWNTO 16)); -GDFX_TEMP_SIGNAL_6 <= (VDMB(7 DOWNTO 0) & VDMA(127 DOWNTO 8)); -CC16(23) <= GDFX_TEMP_SIGNAL_0(15); -CC16(22) <= GDFX_TEMP_SIGNAL_0(14); -CC16(21) <= GDFX_TEMP_SIGNAL_0(13); -CC16(20) <= GDFX_TEMP_SIGNAL_0(12); -CC16(19) <= GDFX_TEMP_SIGNAL_0(11); -CC16(15) <= GDFX_TEMP_SIGNAL_0(10); -CC16(14) <= GDFX_TEMP_SIGNAL_0(9); -CC16(13) <= GDFX_TEMP_SIGNAL_0(8); -CC16(12) <= GDFX_TEMP_SIGNAL_0(7); -CC16(11) <= GDFX_TEMP_SIGNAL_0(6); -CC16(10) <= GDFX_TEMP_SIGNAL_0(5); -CC16(7) <= GDFX_TEMP_SIGNAL_0(4); -CC16(6) <= GDFX_TEMP_SIGNAL_0(3); -CC16(5) <= GDFX_TEMP_SIGNAL_0(2); -CC16(4) <= GDFX_TEMP_SIGNAL_0(1); -CC16(3) <= GDFX_TEMP_SIGNAL_0(0); - -CC16(18) <= GDFX_TEMP_SIGNAL_16(7); -CC16(17) <= GDFX_TEMP_SIGNAL_16(6); -CC16(16) <= GDFX_TEMP_SIGNAL_16(5); -CC16(9) <= GDFX_TEMP_SIGNAL_16(4); -CC16(8) <= GDFX_TEMP_SIGNAL_16(3); -CC16(2) <= GDFX_TEMP_SIGNAL_16(2); -CC16(1) <= GDFX_TEMP_SIGNAL_16(1); -CC16(0) <= GDFX_TEMP_SIGNAL_16(0); - - - -b2v_ACP_CLUT_RAM : altdpram2 -PORT MAP(wren_a => ACP_CLUT_WR(3), - wren_b => SYNTHESIZED_WIRE_0, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => ZR_C8B, - data_a => FB_AD(7 DOWNTO 0), - q_a => SYNTHESIZED_WIRE_30, - q_b => CCA(7 DOWNTO 0)); - - -b2v_ACP_CLUT_RAM54 : altdpram2 -PORT MAP(wren_a => ACP_CLUT_WR(2), - wren_b => SYNTHESIZED_WIRE_1, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => ZR_C8B, - data_a => FB_AD(15 DOWNTO 8), - q_a => SYNTHESIZED_WIRE_32, - q_b => CCA(15 DOWNTO 8)); - - -b2v_ACP_CLUT_RAM55 : altdpram2 -PORT MAP(wren_a => ACP_CLUT_WR(1), - wren_b => SYNTHESIZED_WIRE_2, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => ZR_C8B, - data_a => FB_AD(23 DOWNTO 16), - q_a => SYNTHESIZED_WIRE_33, - q_b => CCA(23 DOWNTO 16)); - - -b2v_BLITTER : blitter -PORT MAP(nRSTO => nRSTO, - MAIN_CLK => MAIN_CLK, - FB_ALE => FB_ALE, - nFB_WR => nFB_WR, - nFB_OE => nFB_OE, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - BLITTER_ON => BLITTER_ON, - nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - nFB_CS3 => nFB_CS3, - DDRCLK0 => DDRCLK(0), - BLITTER_DACK => BLITTER_DACK, - BLITTER_DIN => BLITTER_DIN, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - VIDEO_RAM_CTR => VIDEO_RAM_CTR, - BLITTER_RUN => BLITTER_RUN, - BLITTER_SIG => BLITTER_SIG, - BLITTER_WR => BLITTER_WR, - BLITTER_TA => BLITTER_TA, - BLITTER_ADR => BLITTER_ADR, - BLITTER_DOUT => BLITTER_DOUT); - - -b2v_DDR_CTR : ddr_ctr -PORT MAP(nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - nFB_CS3 => nFB_CS3, - nFB_OE => nFB_OE, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - nRSTO => nRSTO, - MAIN_CLK => MAIN_CLK, - FB_ALE => FB_ALE, - nFB_WR => nFB_WR, - DDR_SYNC_66M => DDR_SYNC_66M, - BLITTER_SIG => BLITTER_SIG, - BLITTER_WR => BLITTER_WR, - DDRCLK0 => DDRCLK(0), - CLK33M => CLK33M, - CLR_FIFO => CLR_FIFO, - BLITTER_ADR => BLITTER_ADR, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - FIFO_MW => FIFO_MW, - VIDEO_RAM_CTR => VIDEO_RAM_CTR, - nVWE => nVWE, - nVRAS => nVRAS, - nVCS => nVCS, - VCKE => VCKE, - nVCAS => nVCAS, - SR_FIFO_WRE => SR_FIFO_WRE, - SR_DDR_FB => SR_DDR_FB, - SR_DDR_WR => SR_DDR_WR, - SR_DDRWR_D_SEL => SR_DDRWR_D_SEL, - VIDEO_DDR_TA => VIDEO_DDR_TA, - SR_BLITTER_DACK => SR_BLITTER_DACK, - DDRWR_D_SEL1 => DDRWR_D_SEL(1), - BA => BA, - FB_LE => FB_LE, - FB_VDOE => FB_VDOE, - SR_VDMP => SR_VDMP, - VA => VA, - VDM_SEL => VDM_SEL); - - -b2v_FALCON_CLUT_BLUE : altdpram1 -PORT MAP(wren_a => FALCON_CLUT_WR(3), - wren_b => SYNTHESIZED_WIRE_3, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => CLUT_ADR, - data_a => FB_AD(23 DOWNTO 18), - q_a => SYNTHESIZED_WIRE_45, - q_b => CCF(7 DOWNTO 2)); - - -b2v_FALCON_CLUT_GREEN : altdpram1 -PORT MAP(wren_a => FALCON_CLUT_WR(1), - wren_b => SYNTHESIZED_WIRE_4, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => CLUT_ADR, - data_a => FB_AD(23 DOWNTO 18), - q_a => SYNTHESIZED_WIRE_44, - q_b => CCF(15 DOWNTO 10)); - - -b2v_FALCON_CLUT_RED : altdpram1 -PORT MAP(wren_a => FALCON_CLUT_WR(0), - wren_b => SYNTHESIZED_WIRE_5, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(9 DOWNTO 2), - address_b => CLUT_ADR, - data_a => FB_AD(31 DOWNTO 26), - q_a => SYNTHESIZED_WIRE_41, - q_b => CCF(23 DOWNTO 18)); - - -b2v_inst : lpm_fifo_dc0 -PORT MAP(wrreq => FIFO_WRE, - wrclk => DDRCLK(0), - rdreq => SYNTHESIZED_WIRE_60, - rdclk => PIXEL_CLK_ALTERA_SYNTHESIZED, - aclr => CLR_FIFO, - data => VDMC, - q => SYNTHESIZED_WIRE_63, - wrusedw => FIFO_MW); - - -b2v_inst1 : altddio_bidir0 -PORT MAP(oe => VDOUT_OE, - inclock => DDRCLK(1), - outclock => DDRCLK(3), - datain_h => VDP_OUT(63 DOWNTO 32), - datain_l => VDP_OUT(31 DOWNTO 0), - padio => VD, - combout => SYNTHESIZED_WIRE_15, - dataout_h => VDP_IN(31 DOWNTO 0), - dataout_l => VDP_IN(63 DOWNTO 32)); - - -b2v_inst10 : lpm_ff4 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => SYNTHESIZED_WIRE_7, - q => GDFX_TEMP_SIGNAL_0); - - -b2v_inst100 : lpm_muxvdm -PORT MAP(data0x => VDMB, - data10x => GDFX_TEMP_SIGNAL_1, - data11x => GDFX_TEMP_SIGNAL_2, - data12x => GDFX_TEMP_SIGNAL_3, - data13x => GDFX_TEMP_SIGNAL_4, - data14x => GDFX_TEMP_SIGNAL_5, - data15x => GDFX_TEMP_SIGNAL_6, - data1x => GDFX_TEMP_SIGNAL_7, - data2x => GDFX_TEMP_SIGNAL_8, - data3x => GDFX_TEMP_SIGNAL_9, - data4x => GDFX_TEMP_SIGNAL_10, - data5x => GDFX_TEMP_SIGNAL_11, - data6x => GDFX_TEMP_SIGNAL_12, - data7x => GDFX_TEMP_SIGNAL_13, - data8x => GDFX_TEMP_SIGNAL_14, - data9x => GDFX_TEMP_SIGNAL_15, - sel => VDM_SEL, - result => VDMC); - - -b2v_inst102 : lpm_mux3 -PORT MAP(data1 => DFF_inst93, - data0 => ZR_C8(0), - sel => COLOR1, - result => ZR_C8B(0)); - - -CLUT_ADR(4) <= CLUT_OFF(0) OR SYNTHESIZED_WIRE_8; - - -CLUT_ADR(6) <= CLUT_OFF(2) OR SYNTHESIZED_WIRE_9; - - -SYNTHESIZED_WIRE_61 <= COLOR8 OR COLOR4; - - -CLUT_ADR(2) <= CLUT_ADR2A AND SYNTHESIZED_WIRE_61; - - -SYNTHESIZED_WIRE_16 <= COLOR4 OR COLOR8 OR COLOR2; - - -b2v_inst108 : lpm_bustri_long -PORT MAP(enabledt => FB_VDOE(0), - data => VDR, - tridata => FB_AD); - - -b2v_inst109 : lpm_bustri_long -PORT MAP(enabledt => FB_VDOE(1), - data => SYNTHESIZED_WIRE_11, - tridata => FB_AD); - - -b2v_inst11 : lpm_ff5 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => SYNTHESIZED_WIRE_12, - q => ZR_C8); - - -b2v_inst110 : lpm_bustri_long -PORT MAP(enabledt => FB_VDOE(2), - data => SYNTHESIZED_WIRE_13, - tridata => FB_AD); - - -b2v_inst119 : lpm_bustri_long -PORT MAP(enabledt => FB_VDOE(3), - data => SYNTHESIZED_WIRE_14, - tridata => FB_AD); - - -b2v_inst12 : lpm_ff1 -PORT MAP(clock => DDRCLK(0), - data => VDP_IN(31 DOWNTO 0), - q => VDVZ(31 DOWNTO 0)); - - -b2v_inst13 : lpm_ff0 -PORT MAP(clock => DDR_SYNC_66M, - enable => FB_LE(0), - data => FB_AD, - q => FB_DDR(127 DOWNTO 96)); - - -b2v_inst14 : lpm_ff0 -PORT MAP(clock => DDR_SYNC_66M, - enable => FB_LE(1), - data => FB_AD, - q => FB_DDR(95 DOWNTO 64)); - - -b2v_inst15 : lpm_ff0 -PORT MAP(clock => DDR_SYNC_66M, - enable => FB_LE(2), - data => FB_AD, - q => FB_DDR(63 DOWNTO 32)); - - -b2v_inst16 : lpm_ff0 -PORT MAP(clock => DDR_SYNC_66M, - enable => FB_LE(3), - data => FB_AD, - q => FB_DDR(31 DOWNTO 0)); - - -b2v_inst17 : lpm_ff0 -PORT MAP(clock => DDRCLK(0), - enable => DDR_FB(1), - data => VDP_IN(31 DOWNTO 0), - q => SYNTHESIZED_WIRE_11); - - -b2v_inst18 : lpm_ff0 -PORT MAP(clock => DDRCLK(0), - enable => DDR_FB(0), - data => VDP_IN(63 DOWNTO 32), - q => SYNTHESIZED_WIRE_13); - - -b2v_inst19 : lpm_ff0 -PORT MAP(clock => DDRCLK(0), - enable => DDR_FB(0), - data => VDP_IN(31 DOWNTO 0), - q => SYNTHESIZED_WIRE_14); - - -b2v_inst2 : altddio_out0 -PORT MAP(outclock => DDRCLK(3), - datain_h => VDMP(7 DOWNTO 4), - datain_l => VDMP(3 DOWNTO 0), - dataout => VDM); - - -b2v_inst20 : lpm_ff1 -PORT MAP(clock => DDRCLK(0), - data => VDVZ(31 DOWNTO 0), - q => VDVZ(95 DOWNTO 64)); - - -b2v_inst21 : lpm_mux0 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data0x => FIFO_D(127 DOWNTO 96), - data1x => FIFO_D(95 DOWNTO 64), - data2x => FIFO_D(63 DOWNTO 32), - data3x => FIFO_D(31 DOWNTO 0), - sel => CLUT_MUX_ADR(1 DOWNTO 0), - result => SYNTHESIZED_WIRE_48); - - -b2v_inst22 : lpm_mux5 -PORT MAP(data0x => FB_DDR(127 DOWNTO 64), - data1x => FB_DDR(63 DOWNTO 0), - data2x => BLITTER_DOUT(127 DOWNTO 64), - data3x => BLITTER_DOUT(63 DOWNTO 0), - sel => DDRWR_D_SEL, - result => VDP_OUT); - - -b2v_inst23 : lpm_constant2 -PORT MAP( result => GDFX_TEMP_SIGNAL_16); - - -b2v_inst24 : lpm_mux1 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data0x => FIFO_D(127 DOWNTO 112), - data1x => FIFO_D(111 DOWNTO 96), - data2x => FIFO_D(95 DOWNTO 80), - data3x => FIFO_D(79 DOWNTO 64), - data4x => FIFO_D(63 DOWNTO 48), - data5x => FIFO_D(47 DOWNTO 32), - data6x => FIFO_D(31 DOWNTO 16), - data7x => FIFO_D(15 DOWNTO 0), - sel => CLUT_MUX_ADR(2 DOWNTO 0), - result => SYNTHESIZED_WIRE_7); - - -b2v_inst25 : lpm_mux2 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data0x => FIFO_D(127 DOWNTO 120), - data10x => FIFO_D(47 DOWNTO 40), - data11x => FIFO_D(39 DOWNTO 32), - data12x => FIFO_D(31 DOWNTO 24), - data13x => FIFO_D(23 DOWNTO 16), - data14x => FIFO_D(15 DOWNTO 8), - data15x => FIFO_D(7 DOWNTO 0), - data1x => FIFO_D(119 DOWNTO 112), - data2x => FIFO_D(111 DOWNTO 104), - data3x => FIFO_D(103 DOWNTO 96), - data4x => FIFO_D(95 DOWNTO 88), - data5x => FIFO_D(87 DOWNTO 80), - data6x => FIFO_D(79 DOWNTO 72), - data7x => FIFO_D(71 DOWNTO 64), - data8x => FIFO_D(63 DOWNTO 56), - data9x => FIFO_D(55 DOWNTO 48), - sel => CLUT_MUX_ADR, - result => SYNTHESIZED_WIRE_12); - - -b2v_inst26 : lpm_shiftreg4 -PORT MAP(clock => DDRCLK(0), - shiftin => SR_FIFO_WRE, - shiftout => FIFO_WRE); - - -b2v_inst27 : lpm_latch0 -PORT MAP(gate => DDR_SYNC_66M, - data => SYNTHESIZED_WIRE_15, - q => VDR); - - - -CLUT_ADR(1) <= CLUT_ADR1A AND SYNTHESIZED_WIRE_16; - - -b2v_inst3 : lpm_ff1 -PORT MAP(clock => DDRCLK(0), - data => VDP_IN(63 DOWNTO 32), - q => VDVZ(63 DOWNTO 32)); - - -CLUT_ADR(3) <= SYNTHESIZED_WIRE_61 AND CLUT_ADR3A; - - -CLUT_ADR(5) <= CLUT_OFF(1) OR SYNTHESIZED_WIRE_18; - - -SYNTHESIZED_WIRE_8 <= CLUT_ADR4A AND COLOR8; - - -SYNTHESIZED_WIRE_18 <= CLUT_ADR5A AND COLOR8; - - -SYNTHESIZED_WIRE_9 <= CLUT_ADR6A AND COLOR8; - - -SYNTHESIZED_WIRE_46 <= CLUT_ADR7A AND COLOR8; - - -b2v_inst36 : lpm_ff6 -PORT MAP(clock => DDRCLK(0), - enable => BLITTER_DACK(0), - data => VDVZ, - q => BLITTER_DIN); - - -VDOUT_OE <= DDR_WR OR SR_DDR_WR; - - - -VIDEO_TA <= BLITTER_TA OR VIDEO_MOD_TA OR VIDEO_DDR_TA; - - -b2v_inst4 : lpm_ff1 -PORT MAP(clock => DDRCLK(0), - data => VDVZ(63 DOWNTO 32), - q => VDVZ(127 DOWNTO 96)); - - -b2v_inst40 : mux41_0 -PORT MAP(S0 => COLOR2, - S1 => COLOR4, - D0 => CLUT_ADR6A, - INH => SYNTHESIZED_WIRE_19, - D1 => CLUT_ADR7A, - Q => SYNTHESIZED_WIRE_54); - - -b2v_inst41 : mux41_1 -PORT MAP(S0 => COLOR2, - S1 => COLOR4, - D0 => CLUT_ADR5A, - INH => SYNTHESIZED_WIRE_20, - D1 => CLUT_ADR6A, - Q => SYNTHESIZED_WIRE_53); - - -b2v_inst42 : mux41_2 -PORT MAP(S0 => COLOR2, - D2 => CLUT_ADR7A, - S1 => COLOR4, - D0 => CLUT_ADR4A, - INH => SYNTHESIZED_WIRE_21, - D1 => CLUT_ADR5A, - Q => SYNTHESIZED_WIRE_52); - - -b2v_inst43 : mux41_3 -PORT MAP(S0 => COLOR2, - D2 => CLUT_ADR6A, - S1 => COLOR4, - D0 => CLUT_ADR3A, - INH => SYNTHESIZED_WIRE_22, - D1 => CLUT_ADR4A, - Q => SYNTHESIZED_WIRE_51); - - -b2v_inst44 : mux41_4 -PORT MAP(S0 => COLOR2, - D2 => CLUT_ADR5A, - S1 => COLOR4, - D0 => CLUT_ADR2A, - INH => SYNTHESIZED_WIRE_23, - D1 => CLUT_ADR3A, - Q => SYNTHESIZED_WIRE_50); - - -b2v_inst45 : mux41_5 -PORT MAP(S0 => COLOR2, - D2 => CLUT_ADR4A, - S1 => COLOR4, - D0 => CLUT_ADR1A, - INH => SYNTHESIZED_WIRE_24, - D1 => CLUT_ADR2A, - Q => SYNTHESIZED_WIRE_49); - - -b2v_inst46 : lpm_ff3 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => SYNTHESIZED_WIRE_25, - q => SYNTHESIZED_WIRE_43); - - -b2v_inst47 : lpm_ff3 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => CCF, - q => SYNTHESIZED_WIRE_25); - - - -b2v_inst49 : lpm_ff3 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => SYNTHESIZED_WIRE_26, - q => SYNTHESIZED_WIRE_42); - - -b2v_inst5 : altddio_out2 -PORT MAP(outclock => PIXEL_CLK_ALTERA_SYNTHESIZED, - datain_h => SYNTHESIZED_WIRE_62, - datain_l => SYNTHESIZED_WIRE_62, - dataout => SYNTHESIZED_WIRE_65); - - - -b2v_inst51 : lpm_bustri1 -PORT MAP(enabledt => ST_CLUT_RD, - data => SYNTHESIZED_WIRE_29, - tridata => FB_AD(26 DOWNTO 24)); - - -b2v_inst52 : lpm_ff3 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => CCS, - q => SYNTHESIZED_WIRE_26); - - -b2v_inst53 : lpm_bustri_byt -PORT MAP(enabledt => ACP_CLUT_RD, - data => SYNTHESIZED_WIRE_30, - tridata => FB_AD(7 DOWNTO 0)); - - -b2v_inst54 : lpm_constant0 -PORT MAP( result => CCS(20 DOWNTO 16)); - - - -b2v_inst56 : lpm_bustri1 -PORT MAP(enabledt => ST_CLUT_RD, - data => SYNTHESIZED_WIRE_31, - tridata => FB_AD(22 DOWNTO 20)); - - -b2v_inst57 : lpm_bustri_byt -PORT MAP(enabledt => ACP_CLUT_RD, - data => SYNTHESIZED_WIRE_32, - tridata => FB_AD(15 DOWNTO 8)); - - -b2v_inst58 : lpm_bustri_byt -PORT MAP(enabledt => ACP_CLUT_RD, - data => SYNTHESIZED_WIRE_33, - tridata => FB_AD(23 DOWNTO 16)); - - -b2v_inst59 : lpm_constant0 -PORT MAP( result => CCS(12 DOWNTO 8)); - - - - -b2v_inst61 : lpm_bustri1 -PORT MAP(enabledt => ST_CLUT_RD, - data => SYNTHESIZED_WIRE_34, - tridata => FB_AD(18 DOWNTO 16)); - - -b2v_inst62 : lpm_muxdz -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - clken => FIFO_RDE, - sel => INTER_ZEI, - data0x => SYNTHESIZED_WIRE_63, - data1x => SYNTHESIZED_WIRE_36, - result => FIFO_D); - - -b2v_inst63 : lpm_fifodz -PORT MAP(wrreq => SYNTHESIZED_WIRE_60, - rdreq => SYNTHESIZED_WIRE_38, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - aclr => DOP_FIFO_CLR, - data => SYNTHESIZED_WIRE_63, - q => SYNTHESIZED_WIRE_36); - - -b2v_inst64 : lpm_constant0 -PORT MAP( result => CCS(4 DOWNTO 0)); - - -SYNTHESIZED_WIRE_60 <= FIFO_RDE AND SYNTHESIZED_WIRE_40; - - -b2v_inst66 : lpm_bustri3 -PORT MAP(enabledt => FALCON_CLUT_RDH, - data => SYNTHESIZED_WIRE_41, - tridata => FB_AD(31 DOWNTO 26)); - - -SYNTHESIZED_WIRE_38 <= FIFO_RDE AND INTER_ZEI; - - - -SYNTHESIZED_WIRE_40 <= NOT(INTER_ZEI); - - - -b2v_inst7 : lpm_mux6 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data0x => SYNTHESIZED_WIRE_42, - data1x => SYNTHESIZED_WIRE_43, - data4x => CCA, - data5x => CC16, - data6x => CC24(23 DOWNTO 0), - data7x => CCR, - sel => CCSEL, - result => SYNTHESIZED_WIRE_62); - - -b2v_inst70 : lpm_bustri3 -PORT MAP(enabledt => FALCON_CLUT_RDH, - data => SYNTHESIZED_WIRE_44, - tridata => FB_AD(23 DOWNTO 18)); - - -b2v_inst71 : lpm_ff6 -PORT MAP(clock => DDRCLK(0), - enable => FIFO_WRE, - data => VDVZ, - q => VDMA); - - - - -b2v_inst74 : lpm_bustri3 -PORT MAP(enabledt => FALCON_CLUT_RDL, - data => SYNTHESIZED_WIRE_45, - tridata => FB_AD(23 DOWNTO 18)); - - - - -b2v_inst77 : lpm_constant1 -PORT MAP( result => CCF(1 DOWNTO 0)); - - - -CLUT_ADR(7) <= CLUT_OFF(3) OR SYNTHESIZED_WIRE_46; - - - -b2v_inst80 : lpm_constant1 -PORT MAP( result => CCF(9 DOWNTO 8)); - - -b2v_inst81 : lpm_mux4 -PORT MAP(sel => COLOR1, - data0x => ZR_C8(7 DOWNTO 1), - data1x => SYNTHESIZED_WIRE_47, - result => ZR_C8B(7 DOWNTO 1)); - - -b2v_inst82 : lpm_constant3 -PORT MAP( result => SYNTHESIZED_WIRE_47); - - -b2v_inst83 : lpm_constant1 -PORT MAP( result => CCF(17 DOWNTO 16)); - - -PROCESS(DDRCLK(0),DDR_WR) -BEGIN -if (DDR_WR = '1') THEN - VDQS(3) <= DDRCLK(0); -ELSE - VDQS(3) <= 'Z'; -END IF; -END PROCESS; - - -PROCESS(DDRCLK(0),DDR_WR) -BEGIN -if (DDR_WR = '1') THEN - VDQS(2) <= DDRCLK(0); -ELSE - VDQS(2) <= 'Z'; -END IF; -END PROCESS; - - -PROCESS(DDRCLK(0),DDR_WR) -BEGIN -if (DDR_WR = '1') THEN - VDQS(1) <= DDRCLK(0); -ELSE - VDQS(1) <= 'Z'; -END IF; -END PROCESS; - - -PROCESS(DDRCLK(0),DDR_WR) -BEGIN -if (DDR_WR = '1') THEN - VDQS(0) <= DDRCLK(0); -ELSE - VDQS(0) <= 'Z'; -END IF; -END PROCESS; - - -PROCESS(DDRCLK(3)) -BEGIN -IF (RISING_EDGE(DDRCLK(3))) THEN - DDRWR_D_SEL(0) <= SR_DDRWR_D_SEL; -END IF; -END PROCESS; - - -b2v_inst89 : lpm_shiftreg6 -PORT MAP(clock => DDRCLK(0), - shiftin => SR_BLITTER_DACK, - q => BLITTER_DACK); - - -b2v_inst9 : lpm_ff1 -PORT MAP(clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - data => SYNTHESIZED_WIRE_48, - q => CC24); - - -PROCESS(DDRCLK(3)) -BEGIN -IF (RISING_EDGE(DDRCLK(3))) THEN - DDR_WR <= SR_DDR_WR; -END IF; -END PROCESS; - - -PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) -BEGIN -IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN - DFF_inst91 <= CLUT_ADR(0); -END IF; -END PROCESS; - - -b2v_inst92 : lpm_shiftreg6 -PORT MAP(clock => DDRCLK(0), - shiftin => SR_DDR_FB, - q => DDR_FB); - - -PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) -BEGIN -IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN - DFF_inst93 <= DFF_inst91; -END IF; -END PROCESS; - - -b2v_inst94 : lpm_ff6 -PORT MAP(clock => DDRCLK(0), - enable => FIFO_WRE, - data => VDMA, - q => VDMB); - - -PROCESS(PIXEL_CLK_ALTERA_SYNTHESIZED) -BEGIN -IF (RISING_EDGE(PIXEL_CLK_ALTERA_SYNTHESIZED)) THEN - SYNTHESIZED_WIRE_64 <= FIFO_RDE; -END IF; -END PROCESS; - - - -b2v_inst97 : lpm_ff5 -PORT MAP(clock => DDRCLK(2), - data => SR_VDMP, - q => VDMP); - - -b2v_sr0 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_49, - data => FIFO_D(127 DOWNTO 112), - shiftout => CLUT_ADR(0)); - - -b2v_sr1 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_50, - data => FIFO_D(111 DOWNTO 96), - shiftout => CLUT_ADR1A); - - -b2v_sr2 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_51, - data => FIFO_D(95 DOWNTO 80), - shiftout => CLUT_ADR2A); - - -b2v_sr3 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_52, - data => FIFO_D(79 DOWNTO 64), - shiftout => CLUT_ADR3A); - - -b2v_sr4 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_53, - data => FIFO_D(63 DOWNTO 48), - shiftout => CLUT_ADR4A); - - -b2v_sr5 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => SYNTHESIZED_WIRE_54, - data => FIFO_D(47 DOWNTO 32), - shiftout => CLUT_ADR5A); - - -b2v_sr6 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => CLUT_ADR7A, - data => FIFO_D(31 DOWNTO 16), - shiftout => CLUT_ADR6A); - - -b2v_sr7 : lpm_shiftreg0 -PORT MAP(load => SYNTHESIZED_WIRE_64, - clock => PIXEL_CLK_ALTERA_SYNTHESIZED, - shiftin => CLUT_ADR(0), - data => FIFO_D(15 DOWNTO 0), - shiftout => CLUT_ADR7A); - - -b2v_ST_CLUT_BLUE : altdpram0 -PORT MAP(wren_a => ST_CLUT_WR(1), - wren_b => SYNTHESIZED_WIRE_55, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(4 DOWNTO 1), - address_b => CLUT_ADR(3 DOWNTO 0), - data_a => FB_AD(18 DOWNTO 16), - q_a => SYNTHESIZED_WIRE_34, - q_b => CCS(7 DOWNTO 5)); - - -b2v_ST_CLUT_GREEN : altdpram0 -PORT MAP(wren_a => ST_CLUT_WR(1), - wren_b => SYNTHESIZED_WIRE_56, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(4 DOWNTO 1), - address_b => CLUT_ADR(3 DOWNTO 0), - data_a => FB_AD(22 DOWNTO 20), - q_a => SYNTHESIZED_WIRE_31, - q_b => CCS(15 DOWNTO 13)); - - -b2v_ST_CLUT_RED : altdpram0 -PORT MAP(wren_a => ST_CLUT_WR(0), - wren_b => SYNTHESIZED_WIRE_57, - clock_a => MAIN_CLK, - clock_b => PIXEL_CLK_ALTERA_SYNTHESIZED, - address_a => FB_ADR(4 DOWNTO 1), - address_b => CLUT_ADR(3 DOWNTO 0), - data_a => FB_AD(26 DOWNTO 24), - q_a => SYNTHESIZED_WIRE_29, - q_b => CCS(23 DOWNTO 21)); - - -b2v_VIDEO_MOD_MUX_CLUTCTR : video_mod_mux_clutctr -PORT MAP(nRSTO => nRSTO, - MAIN_CLK => MAIN_CLK, - nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - nFB_CS3 => nFB_CS3, - nFB_WR => nFB_WR, - nFB_OE => nFB_OE, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - nFB_BURST => nFB_BURST, - CLK33M => CLK33M, - CLK25M => CLK25M, - BLITTER_RUN => BLITTER_RUN, - CLK_VIDEO => CLK_VIDEO, - VR_BUSY => VR_BUSY, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - VR_D => VR_D, - COLOR8 => COLOR8, - ACP_CLUT_RD => ACP_CLUT_RD, - COLOR1 => COLOR1, - FALCON_CLUT_RDH => FALCON_CLUT_RDH, - FALCON_CLUT_RDL => FALCON_CLUT_RDL, - ST_CLUT_RD => ST_CLUT_RD, - HSYNC => HSYNC, - VSYNC => VSYNC, - nBLANK => nBLANK, - nSYNC => nSYNC, - nPD_VGA => nPD_VGA, - FIFO_RDE => FIFO_RDE, - COLOR2 => COLOR2, - COLOR4 => COLOR4, - PIXEL_CLK => PIXEL_CLK_ALTERA_SYNTHESIZED, - BLITTER_ON => BLITTER_ON, - VIDEO_MOD_TA => VIDEO_MOD_TA, - INTER_ZEI => INTER_ZEI, - DOP_FIFO_CLR => DOP_FIFO_CLR, - VIDEO_RECONFIG => VIDEO_RECONFIG, - VR_WR => VR_WR, - VR_RD => VR_RD, - CLR_FIFO => CLR_FIFO, - ACP_CLUT_WR => ACP_CLUT_WR, - CCR => CCR, - CCSEL => CCSEL, - CLUT_MUX_ADR => CLUT_MUX_ADR, - CLUT_OFF => CLUT_OFF, - FALCON_CLUT_WR => FALCON_CLUT_WR, - ST_CLUT_WR => ST_CLUT_WR, - VIDEO_RAM_CTR => VIDEO_RAM_CTR); - -PIXEL_CLK <= PIXEL_CLK_ALTERA_SYNTHESIZED; - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf deleted file mode 100644 index 1fe3049..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.tdf +++ /dev/null @@ -1,662 +0,0 @@ -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_BASE_X_D_FULL[7..0] :NODE; - 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 - - VIDEO_BASE_X_D_FULL[] = (0,VIDEO_BASE_X_D[]); -- GE - - FB_AD[31..24] = lpm_bustri_BYT( - VIDEO_BASE_H & VIDEO_BASE_X_D_FULL[] - # 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_by_Gregory_Estrade/ahdl2v/DDR_CTR.v b/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v deleted file mode 100644 index 238a56b..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/DDR_CTR.v +++ /dev/null @@ -1,1095 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: DDR_CTR.tdf -// Verilog Design Output: DDR_CTR.v -// Created 03-Mar-2014 09:18 PM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - -// DDR_CTR - - -// CREATED BY FREDI ASCHWANDEN -// FIFO WATER MARK -// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! -module DDR_CTR(FB_ADR, nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, - nRSTO, MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO, VIDEO_RAM_CTR, - BLITTER_ADR, BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M, FIFO_MW, VA, nVWE, - nVRAS, nVCS, VCKE, nVCAS, FB_LE, FB_VDOE, SR_FIFO_WRE, SR_DDR_FB, - SR_DDR_WR, SR_DDRWR_D_SEL, SR_VDMP, VIDEO_DDR_TA, SR_BLITTER_DACK, BA, - DDRWR_D_SEL1, VDM_SEL, FB_AD); - -// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! - input [31:0] FB_ADR; - input nFB_CS1, nFB_CS2, nFB_CS3, nFB_OE, FB_SIZE0, FB_SIZE1, nRSTO, - MAIN_CLK, FB_ALE, nFB_WR, DDR_SYNC_66M, CLR_FIFO; - input [15:0] VIDEO_RAM_CTR; - input [31:0] BLITTER_ADR; - input BLITTER_SIG, BLITTER_WR, DDRCLK0, CLK33M; - input [8:0] FIFO_MW; - output [12:0] VA; - output nVWE, nVRAS, nVCS, VCKE, nVCAS; - output [3:0] FB_LE; - output [3:0] FB_VDOE; - output SR_FIFO_WRE, SR_DDR_FB, SR_DDR_WR, SR_DDRWR_D_SEL; - output [7:0] SR_VDMP; - output VIDEO_DDR_TA, SR_BLITTER_DACK; - output [1:0] BA; - output DDRWR_D_SEL1; - output [3:0] VDM_SEL; - reg [3:0] FB_LE; - reg [3:0] FB_VDOE; - reg SR_DDR_FB, VIDEO_DDR_TA, SR_BLITTER_DACK; - inout [31:0] FB_AD; - -// START (NORMAL 8 CYCLES TOTAL = 60ns) -// CONFIG -// READ CPU UND BLITTER, -// WRITE CPU UND BLITTER -// READ FIFO -// CLOSE FIFO BANK -// REFRESH 10X7.5NS=75NS - wire [2:0] FB_REGDDR_; - wire [5:0] DDR_SM_; - wire LINE; - wire [3:0] FB_B; - wire [12:0] VA_P; - wire [1:0] BA_P; - wire [12:0] VA_S; - wire [1:0] BA_S; - wire [1:0] MCS; - wire [1:0] MCS_d; - wire CPU_DDR_SYNC, CPU_DDR_SYNC_d, CPU_DDR_SYNC_clk, DDR_SEL, DDR_CS, - DDR_CS_d, DDR_CS_clk, DDR_CS_ena, DDR_CONFIG, SR_DDR_WR_clk, - SR_DDRWR_D_SEL_clk; - wire [12:0] CPU_ROW_ADR; - wire [1:0] CPU_BA; - wire [9:0] CPU_COL_ADR; - wire CPU_SIG, CPU_REQ, CPU_REQ_d, CPU_REQ_clk, CPU_AC, CPU_AC_clk, BUS_CYC, - BUS_CYC_d, BUS_CYC_clk, BLITTER_REQ, BLITTER_REQ_d, BLITTER_REQ_clk, - BLITTER_AC, BLITTER_AC_clk; - wire [12:0] BLITTER_ROW_ADR; - wire [1:0] BLITTER_BA; - wire [9:0] BLITTER_COL_ADR; - wire FIFO_REQ, FIFO_REQ_d, FIFO_REQ_clk, FIFO_AC, FIFO_AC_clk; - wire [12:0] FIFO_ROW_ADR; - wire [1:0] FIFO_BA; - wire [9:0] FIFO_COL_ADR; - wire FIFO_ACTIVE, CLR_FIFO_SYNC, CLR_FIFO_SYNC_d, CLR_FIFO_SYNC_clk, - CLEAR_FIFO_CNT, CLEAR_FIFO_CNT_d, CLEAR_FIFO_CNT_clk, STOP, STOP_d, - STOP_clk, SR_FIFO_WRE_clk, FIFO_BANK_OK, FIFO_BANK_OK_d, - FIFO_BANK_OK_clk, DDR_REFRESH_ON; - wire [10:0] DDR_REFRESH_CNT; - wire [10:0] DDR_REFRESH_CNT_d; - wire DDR_REFRESH_REQ, DDR_REFRESH_REQ_d, DDR_REFRESH_REQ_clk; - wire [3:0] DDR_REFRESH_SIG; - wire [3:0] DDR_REFRESH_SIG_d; - wire REFRESH_TIME, REFRESH_TIME_d, REFRESH_TIME_clk; - wire [7:0] VIDEO_BASE_L_D; - wire [7:0] VIDEO_BASE_L_D_d; - wire VIDEO_BASE_L; - wire [7:0] VIDEO_BASE_M_D; - wire [7:0] VIDEO_BASE_M_D_d; - wire VIDEO_BASE_M; - wire [7:0] VIDEO_BASE_H_D; - wire [7:0] VIDEO_BASE_H_D_d; - wire VIDEO_BASE_H; - wire [2:0] VIDEO_BASE_X_D; - wire [2:0] VIDEO_BASE_X_D_d; - wire [7:0] VIDEO_BASE_X_D_FULL; - wire [22:0] VIDEO_ADR_CNT; - wire [22:0] VIDEO_ADR_CNT_d; - wire VIDEO_CNT_L, VIDEO_CNT_M, VIDEO_CNT_H; - wire [22:0] VIDEO_BASE_ADR; - wire [26:0] VIDEO_ACT_ADR; - wire vcc, gnd; - wire [7:0] u0_data; - wire u0_enabledt; - wire [7:0] u0_tridata; - wire [7:0] u1_data; - wire u1_enabledt; - wire [7:0] u1_tridata; - wire FIFO_BANK_OK_d_2, BUS_CYC_d_1, BA0_1, BA1_1, VA0_1, VA1_1, VA2_1, - VA3_1, VA4_1, VA5_1, VA6_1, VA7_1, VA8_1, VA9_1, VA10_1, VA11_1, - VA12_1, VIDEO_BASE_X_D0_ena_ctrl, VIDEO_BASE_X_D0_clk_ctrl, - VIDEO_BASE_H_D0_ena_ctrl, VIDEO_BASE_H_D0_clk_ctrl, - VIDEO_BASE_M_D0_ena_ctrl, VIDEO_BASE_M_D0_clk_ctrl, - VIDEO_BASE_L_D0_ena_ctrl, VIDEO_BASE_L_D0_clk_ctrl, - DDR_REFRESH_SIG0_ena_ctrl, DDR_REFRESH_SIG0_clk_ctrl, - DDR_REFRESH_CNT0_clk_ctrl, VIDEO_ADR_CNT0_ena_ctrl, - VIDEO_ADR_CNT0_clk_ctrl, DDR_SM_0_clk_ctrl, BA_P0_clk_ctrl, - VA_P0_clk_ctrl, BA_S0_clk_ctrl, VA_S0_clk_ctrl, MCS0_clk_ctrl, - SR_VDMP0_clk_ctrl, FB_REGDDR_0_clk_ctrl; - reg [2:0] FB_REGDDR__d; - reg [2:0] FB_REGDDR__q; - reg [5:0] DDR_SM__d; - reg [5:0] DDR_SM__q; - reg VCAS, VRAS, VWE; - reg [12:0] VA_P_d; - reg [12:0] VA_P_q; - reg [1:0] BA_P_d; - reg [1:0] BA_P_q; - reg [12:0] VA_S_d; - reg [12:0] VA_S_q; - reg [1:0] BA_S_d; - reg [1:0] BA_S_q; - reg [1:0] MCS_q; - reg CPU_DDR_SYNC_q, DDR_CS_q, SR_DDR_WR_d, SR_DDR_WR_q, SR_DDRWR_D_SEL_d, - SR_DDRWR_D_SEL_q; - reg [7:0] SR_VDMP_d; - reg [7:0] SR_VDMP_q; - reg CPU_REQ_q, CPU_AC_d, CPU_AC_q, BUS_CYC_q, BUS_CYC_END, BLITTER_REQ_q, - BLITTER_AC_d, BLITTER_AC_q, FIFO_REQ_q, FIFO_AC_d, FIFO_AC_q, - CLR_FIFO_SYNC_q, CLEAR_FIFO_CNT_q, STOP_q, SR_FIFO_WRE_d, - SR_FIFO_WRE_q, FIFO_BANK_OK_q, FIFO_BANK_NOT_OK; - reg [10:0] DDR_REFRESH_CNT_q; - reg DDR_REFRESH_REQ_q; - reg [3:0] DDR_REFRESH_SIG_q; - reg REFRESH_TIME_q; - reg [7:0] VIDEO_BASE_L_D_q; - reg [7:0] VIDEO_BASE_M_D_q; - reg [7:0] VIDEO_BASE_H_D_q; - reg [2:0] VIDEO_BASE_X_D_q; - reg [22:0] VIDEO_ADR_CNT_q; - reg FIFO_BANK_OK_d_1, BUS_CYC_d_2, BA0_2, BA1_2, VA0_2, VA1_2, VA2_2, VA3_2, - VA4_2, VA5_2, VA6_2, VA7_2, VA8_2, VA9_2, VA10_2, VA11_2, VA12_2; - - -// Sub Module Section - lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), - .tridata(u0_tridata)); - - lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), - .tridata(u1_tridata)); - - - assign SR_FIFO_WRE = SR_FIFO_WRE_q; - always @(posedge SR_FIFO_WRE_clk) - SR_FIFO_WRE_q <= SR_FIFO_WRE_d; - - assign SR_DDR_WR = SR_DDR_WR_q; - always @(posedge SR_DDR_WR_clk) - SR_DDR_WR_q <= SR_DDR_WR_d; - - assign SR_DDRWR_D_SEL = SR_DDRWR_D_SEL_q; - always @(posedge SR_DDRWR_D_SEL_clk) - SR_DDRWR_D_SEL_q <= SR_DDRWR_D_SEL_d; - - assign SR_VDMP = SR_VDMP_q; - always @(posedge SR_VDMP0_clk_ctrl) - SR_VDMP_q <= SR_VDMP_d; - - always @(posedge FB_REGDDR_0_clk_ctrl) - FB_REGDDR__q <= FB_REGDDR__d; - - always @(posedge DDR_SM_0_clk_ctrl) - DDR_SM__q <= DDR_SM__d; - - always @(posedge VA_P0_clk_ctrl) - VA_P_q <= VA_P_d; - - always @(posedge BA_P0_clk_ctrl) - BA_P_q <= BA_P_d; - - always @(posedge VA_S0_clk_ctrl) - VA_S_q <= VA_S_d; - - always @(posedge BA_S0_clk_ctrl) - BA_S_q <= BA_S_d; - - always @(posedge MCS0_clk_ctrl) - MCS_q <= MCS_d; - - always @(posedge CPU_DDR_SYNC_clk) - CPU_DDR_SYNC_q <= CPU_DDR_SYNC_d; - - always @(posedge DDR_CS_clk) - if (DDR_CS_ena) - DDR_CS_q <= DDR_CS_d; - - always @(posedge CPU_REQ_clk) - CPU_REQ_q <= CPU_REQ_d; - - always @(posedge CPU_AC_clk) - CPU_AC_q <= CPU_AC_d; - - always @(posedge BUS_CYC_clk) - BUS_CYC_q <= BUS_CYC_d; - - always @(posedge BLITTER_REQ_clk) - BLITTER_REQ_q <= BLITTER_REQ_d; - - always @(posedge BLITTER_AC_clk) - BLITTER_AC_q <= BLITTER_AC_d; - - always @(posedge FIFO_REQ_clk) - FIFO_REQ_q <= FIFO_REQ_d; - - always @(posedge FIFO_AC_clk) - FIFO_AC_q <= FIFO_AC_d; - - always @(posedge CLR_FIFO_SYNC_clk) - CLR_FIFO_SYNC_q <= CLR_FIFO_SYNC_d; - - always @(posedge CLEAR_FIFO_CNT_clk) - CLEAR_FIFO_CNT_q <= CLEAR_FIFO_CNT_d; - - always @(posedge STOP_clk) - STOP_q <= STOP_d; - - always @(posedge FIFO_BANK_OK_clk) - FIFO_BANK_OK_q <= FIFO_BANK_OK_d; - - always @(posedge DDR_REFRESH_CNT0_clk_ctrl) - DDR_REFRESH_CNT_q <= DDR_REFRESH_CNT_d; - - always @(posedge DDR_REFRESH_REQ_clk) - DDR_REFRESH_REQ_q <= DDR_REFRESH_REQ_d; - - always @(posedge DDR_REFRESH_SIG0_clk_ctrl) - if (DDR_REFRESH_SIG0_ena_ctrl) - DDR_REFRESH_SIG_q <= DDR_REFRESH_SIG_d; - - always @(posedge REFRESH_TIME_clk) - REFRESH_TIME_q <= REFRESH_TIME_d; - - always @(posedge VIDEO_BASE_L_D0_clk_ctrl) - if (VIDEO_BASE_L_D0_ena_ctrl) - VIDEO_BASE_L_D_q <= VIDEO_BASE_L_D_d; - - always @(posedge VIDEO_BASE_M_D0_clk_ctrl) - if (VIDEO_BASE_M_D0_ena_ctrl) - VIDEO_BASE_M_D_q <= VIDEO_BASE_M_D_d; - - always @(posedge VIDEO_BASE_H_D0_clk_ctrl) - if (VIDEO_BASE_H_D0_ena_ctrl) - VIDEO_BASE_H_D_q <= VIDEO_BASE_H_D_d; - - always @(posedge VIDEO_BASE_X_D0_clk_ctrl) - if (VIDEO_BASE_X_D0_ena_ctrl) - VIDEO_BASE_X_D_q <= VIDEO_BASE_X_D_d; - - always @(posedge VIDEO_ADR_CNT0_clk_ctrl) - if (VIDEO_ADR_CNT0_ena_ctrl) - VIDEO_ADR_CNT_q <= VIDEO_ADR_CNT_d; - -// Start of original equations - assign LINE = FB_SIZE0 & FB_SIZE1; - -// BYT SELECT -// ADR==0 -// LONG UND LINE - assign FB_B[0] = FB_ADR[1:0] == 2'b00 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) - & (!FB_SIZE0)); - -// ADR==1 -// HIGH WORD -// LONG UND LINE - assign FB_B[1] = FB_ADR[1:0] == 2'b01 | (FB_SIZE1 & (!FB_SIZE0) & - (!FB_ADR[1])) | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); - -// ADR==2 -// LONG UND LINE - assign FB_B[2] = FB_ADR[1:0] == 2'b10 | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) - & (!FB_SIZE0)); - -// ADR==3 -// LOW WORD -// LONG UND LINE - assign FB_B[3] = FB_ADR[1:0] == 2'b11 | (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) - | (FB_SIZE1 & FB_SIZE0) | ((!FB_SIZE1) & (!FB_SIZE0)); - -// CPU READ (REG DDR => CPU) AND WRITE (CPU => REG DDR) -------------------------------------------------- - assign FB_REGDDR_0_clk_ctrl = MAIN_CLK; - - - always @(FB_REGDDR__q or DDR_SEL or BUS_CYC_q or LINE or DDR_CS_q or nFB_OE - or MAIN_CLK or DDR_CONFIG or nFB_WR or vcc) begin - FB_REGDDR__d = FB_REGDDR__q; - {FB_VDOE[0], FB_VDOE[1]} = 2'b00; - {FB_LE[0], FB_LE[1], FB_VDOE[2], FB_LE[2], FB_VDOE[3], FB_LE[3], - VIDEO_DDR_TA, BUS_CYC_END} = 8'b0000_0000; - casex (FB_REGDDR__q) - 3'b000: begin - FB_LE[0] = !nFB_WR; - -// LOS WENN BEREIT ODER IMMER BEI LINE WRITE - if (BUS_CYC_q | (DDR_SEL & LINE & (!nFB_WR))) begin - FB_REGDDR__d = 3'b001; - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b001: begin - if (DDR_CS_q) begin - FB_LE[0] = !nFB_WR; - VIDEO_DDR_TA = vcc; - if (LINE) begin - FB_VDOE[0] = (!nFB_OE) & (!DDR_CONFIG); - FB_REGDDR__d = 3'b010; - end else begin - BUS_CYC_END = vcc; - FB_VDOE[0] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); - FB_REGDDR__d = 3'b000; - end - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b010: begin - if (DDR_CS_q) begin - FB_VDOE[1] = (!nFB_OE) & (!DDR_CONFIG); - FB_LE[1] = !nFB_WR; - VIDEO_DDR_TA = vcc; - FB_REGDDR__d = 3'b011; - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b011: begin - if (DDR_CS_q) begin - FB_VDOE[2] = (!nFB_OE) & (!DDR_CONFIG); - FB_LE[2] = !nFB_WR; - -// BEI LINE WRITE EVT. WARTEN - if ((!BUS_CYC_q) & LINE & (!nFB_WR)) begin - FB_REGDDR__d = 3'b011; - end else begin - VIDEO_DDR_TA = vcc; - FB_REGDDR__d = 3'b100; - end - end else begin - FB_REGDDR__d = 3'b000; - end - end - 3'b100: begin - if (DDR_CS_q) begin - FB_VDOE[3] = (!nFB_OE) & (!MAIN_CLK) & (!DDR_CONFIG); - FB_LE[3] = !nFB_WR; - VIDEO_DDR_TA = vcc; - BUS_CYC_END = vcc; - FB_REGDDR__d = 3'b000; - end else begin - FB_REGDDR__d = 3'b000; - end - end - endcase - end - -// 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; - assign VCKE = VIDEO_RAM_CTR[0]; - assign nVCS = !VIDEO_RAM_CTR[1]; - assign DDR_REFRESH_ON = VIDEO_RAM_CTR[2]; - assign DDR_CONFIG = VIDEO_RAM_CTR[3]; - assign FIFO_ACTIVE = VIDEO_RAM_CTR[8]; - -// ------------------------------ - assign CPU_ROW_ADR = FB_ADR[26:14]; - assign CPU_BA = FB_ADR[13:12]; - assign CPU_COL_ADR = FB_ADR[11:2]; - assign nVRAS = !VRAS; - assign nVCAS = !VCAS; - assign nVWE = !VWE; - assign SR_DDR_WR_clk = DDRCLK0; - assign SR_DDRWR_D_SEL_clk = DDRCLK0; - assign SR_VDMP0_clk_ctrl = DDRCLK0; - assign SR_FIFO_WRE_clk = DDRCLK0; - assign CPU_AC_clk = DDRCLK0; - assign FIFO_AC_clk = DDRCLK0; - assign BLITTER_AC_clk = DDRCLK0; - assign DDRWR_D_SEL1 = BLITTER_AC_q; - -// SELECT LOGIC - assign DDR_SEL = FB_ALE & FB_AD[31:30] == 2'b01; - assign DDR_CS_clk = MAIN_CLK; - assign DDR_CS_ena = FB_ALE; - assign DDR_CS_d = DDR_SEL; - -// WENN READ ODER WRITE B,W,L DDR SOFORT ANFORDERN, BEI WRITE LINE SPÄTER -// NICHT LINE ODER READ SOFORT LOS WENN NICHT CONFIG -// CONFIG SOFORT LOS -// LINE WRITE SPÄTER - assign CPU_SIG = (DDR_SEL & (nFB_WR | (!LINE)) & (!DDR_CONFIG)) | (DDR_SEL & - DDR_CONFIG) | (FB_REGDDR__q == 3'b010 & (!nFB_WR)); - assign CPU_REQ_clk = DDR_SYNC_66M; - -// HALTEN BUS CYC BEGONNEN ODER FERTIG - assign CPU_REQ_d = CPU_SIG | (CPU_REQ_q & FB_REGDDR__q != 3'b010 & - FB_REGDDR__q != 3'b100 & (!BUS_CYC_END) & (!BUS_CYC_q)); - assign BUS_CYC_clk = DDRCLK0; - assign BUS_CYC_d_1 = BUS_CYC_q & (!BUS_CYC_END); - -// STATE MACHINE SYNCHRONISIEREN ----------------- - assign MCS0_clk_ctrl = DDRCLK0; - assign MCS_d[0] = MAIN_CLK; - assign MCS_d[1] = MCS_q[0]; - assign CPU_DDR_SYNC_clk = DDRCLK0; - -// NUR 1 WENN EIN - assign CPU_DDR_SYNC_d = MCS_q == 2'b10 & VCKE & (!nVCS); - -// ------------------------------------------------- - assign VA_S0_clk_ctrl = DDRCLK0; - assign BA_S0_clk_ctrl = DDRCLK0; - assign {VA12_1, VA11_1, VA10_1, VA9_1, VA8_1, VA7_1, VA6_1, VA5_1, VA4_1, - VA3_1, VA2_1, VA1_1, VA0_1} = VA_S_q; - assign {BA1_1, BA0_1} = BA_S_q; - assign VA_P0_clk_ctrl = DDRCLK0; - assign BA_P0_clk_ctrl = DDRCLK0; - -// DDR STATE MACHINE ----------------------------------------------- - assign DDR_SM_0_clk_ctrl = DDRCLK0; - - - always @(DDR_SM__q or DDR_REFRESH_REQ_q or CPU_DDR_SYNC_q or DDR_CONFIG or - CPU_ROW_ADR or FIFO_ROW_ADR or BLITTER_ROW_ADR or BLITTER_REQ_q or - BLITTER_WR or FIFO_AC_q or CPU_COL_ADR or BLITTER_COL_ADR or VA_S_q or - CPU_BA or BLITTER_BA or FB_B or CPU_AC_q or BLITTER_AC_q or - FIFO_BANK_OK_q or FIFO_MW or FIFO_REQ_q or VIDEO_ADR_CNT_q or - FIFO_COL_ADR or gnd or DDR_SEL or LINE or FIFO_BA or FB_AD or VA_P_q - or BA_P_q or CPU_REQ_q or nFB_WR or FB_SIZE0 or FB_SIZE1 or - DDR_REFRESH_SIG_q or vcc) begin - DDR_SM__d = DDR_SM__q; - BA_S_d = 2'b00; - VA_S_d = 13'b0_0000_0000_0000; - BA_P_d = 2'b00; - {VA_P_d[9], VA_P_d[8], VA_P_d[7], VA_P_d[6], VA_P_d[5], VA_P_d[4], - VA_P_d[3], VA_P_d[2], VA_P_d[1], VA_P_d[0], VA_P_d[10]} = - 11'b000_0000_0000; - SR_VDMP_d = 8'b0000_0000; - VA_P_d[12:11] = 2'b00; - {FIFO_BANK_OK_d_1, FIFO_AC_d, SR_DDR_FB, SR_BLITTER_DACK, BLITTER_AC_d, - SR_DDR_WR_d, SR_DDRWR_D_SEL_d, CPU_AC_d, VA12_2, VA11_2, VA9_2, - VA8_2, VA7_2, VA6_2, VA5_2, VA4_2, VA3_2, VA2_2, VA1_2, VA0_2, - BA1_2, BA0_2, SR_FIFO_WRE_d, BUS_CYC_d_2, VWE, VA10_2, - FIFO_BANK_NOT_OK, VCAS, VRAS} = - 29'b0_0000_0000_0000_0000_0000_0000_0000; - casex (DDR_SM__q) - 6'b00_0000: begin - if (DDR_REFRESH_REQ_q) begin - DDR_SM__d = 6'b01_1111; - -// SYNCHRON UND EIN? - end else if (CPU_DDR_SYNC_q) begin - -// JA - if (DDR_CONFIG) begin - DDR_SM__d = 6'b00_1000; - -// BEI WAIT UND LINE WRITE - end else if (CPU_REQ_q) begin - VA_S_d = CPU_ROW_ADR; - BA_S_d = CPU_BA; - CPU_AC_d = vcc; - BUS_CYC_d_2 = vcc; - DDR_SM__d = 6'b00_0010; - end else begin - -// FIFO IST DEFAULT - if (FIFO_REQ_q | (!BLITTER_REQ_q)) begin - VA_P_d = FIFO_ROW_ADR; - BA_P_d = FIFO_BA; - -// VORBESETZEN - FIFO_AC_d = vcc; - end else begin - VA_P_d = BLITTER_ROW_ADR; - BA_P_d = BLITTER_BA; - -// VORBESETZEN - BLITTER_AC_d = vcc; - end - DDR_SM__d = 6'b00_0001; - end - end else begin - -// NEIN ->SYNCHRONISIEREN - DDR_SM__d = 6'b00_0000; - end - end - 6'b00_0001: begin - -// SCHNELLZUGRIFF *** HIER IST PAGE IMMER NOT OK *** - if (DDR_SEL & (nFB_WR | (!LINE))) begin - VRAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; - {BA1_2, BA0_2} = FB_AD[13:12]; - -// AUTO PRECHARGE DA NICHT FIFO PAGE - VA_S_d[10] = vcc; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - end else begin - VRAS = (FIFO_AC_q & FIFO_REQ_q) | (BLITTER_AC_q & - BLITTER_REQ_q); - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; - {BA1_2, BA0_2} = BA_P_q; - VA_S_d[10] = !(FIFO_AC_q & FIFO_REQ_q); - FIFO_BANK_OK_d_1 = FIFO_AC_q & FIFO_REQ_q; - FIFO_AC_d = FIFO_AC_q & FIFO_REQ_q; - BLITTER_AC_d = BLITTER_AC_q & BLITTER_REQ_q; - end - DDR_SM__d = 6'b00_0011; - end - 6'b00_0010: begin - VRAS = vcc; - FIFO_BANK_NOT_OK = vcc; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - DDR_SM__d = 6'b00_0011; - end - 6'b00_0011: begin - CPU_AC_d = CPU_AC_q; - FIFO_AC_d = FIFO_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - if (((!nFB_WR) & CPU_AC_q) | (BLITTER_WR & BLITTER_AC_q)) begin - DDR_SM__d = 6'b01_0000; - -// CPU? - end else if (CPU_AC_q) begin - VA_S_d[9:0] = CPU_COL_ADR; - BA_S_d = CPU_BA; - DDR_SM__d = 6'b00_1110; - -// FIFO? - end else if (FIFO_AC_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_0110; - end else if (BLITTER_AC_q) begin - VA_S_d[9:0] = BLITTER_COL_ADR; - BA_S_d = BLITTER_BA; - DDR_SM__d = 6'b00_1110; - end else begin - -// READ - DDR_SM__d = 6'b00_0111; - end - end - 6'b00_1110: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VCAS = vcc; - -// READ DATEN FÜR CPU - SR_DDR_FB = CPU_AC_q; - -// BLITTER DACK AND BLITTER LATCH DATEN - SR_BLITTER_DACK = BLITTER_AC_q; - DDR_SM__d = 6'b00_1111; - end - 6'b00_1111: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// FIFO READ EINSCHIEBEN WENN BANK OK - if (FIFO_REQ_q & FIFO_BANK_OK_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - -// MANUEL PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// WRITE - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_0000: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// BLITTER ACK AND BLITTER LATCH DATEN - SR_BLITTER_DACK = BLITTER_AC_q; - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - DDR_SM__d = 6'b01_0001; - end - 6'b01_0001: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VA_S_d[9:0] = ({10{CPU_AC_q}} & CPU_COL_ADR) | ({10{BLITTER_AC_q}} - & BLITTER_COL_ADR); - -// AUTO PRECHARGE WENN NICHT FIFO PAGE - VA_S_d[10] = VA_S_q[10]; - BA_S_d = ({2{CPU_AC_q}} & CPU_BA) | ({2{BLITTER_AC_q}} & - BLITTER_BA); - -// BYTE ENABLE WRITE - SR_VDMP_d[7:4] = FB_B; - -// LINE ENABLE WRITE - SR_VDMP_d[3:0] = {4{LINE}} & 4'b1111; - DDR_SM__d = 6'b01_0010; - end - 6'b01_0010: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - VCAS = vcc; - VWE = vcc; - -// WRITE COMMAND CPU UND BLITTER IF WRITER - SR_DDR_WR_d = vcc; - -// 2. HÄLFTE WRITE DATEN SELEKTIEREN - SR_DDRWR_D_SEL_d = vcc; - -// WENN LINE DANN ACTIV - SR_VDMP_d = {8{LINE}} & 8'b1111_1111; - DDR_SM__d = 6'b01_0011; - end - 6'b01_0011: begin - CPU_AC_d = CPU_AC_q; - BLITTER_AC_d = BLITTER_AC_q; - -// WRITE COMMAND CPU UND BLITTER IF WRITE - SR_DDR_WR_d = vcc; - -// 2. HÄLFTE WRITE DATEN SELEKTIEREN - SR_DDRWR_D_SEL_d = vcc; - DDR_SM__d = 6'b01_0100; - end - 6'b01_0100: begin - DDR_SM__d = 6'b01_0101; - end - 6'b01_0101: begin - if (FIFO_REQ_q & FIFO_BANK_OK_q) begin - VA_S_d[9:0] = FIFO_COL_ADR; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// FIFO READ - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_0110: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - DDR_SM__d = 6'b01_0111; - end - 6'b01_0111: begin - if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end else begin - VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1000; - end - end else begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// NOCH OFFEN LASSEN - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_1000: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - DDR_SM__d = 6'b01_1001; - end - 6'b01_1001: begin - if (CPU_REQ_q & FIFO_MW > 9'b0_0000_0000) begin - -// ALLE PAGES SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end else if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE PAGES SCHLIESSEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end else begin - VA_S_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_S_d[10] = gnd; - BA_S_d = FIFO_BA; - DDR_SM__d = 6'b01_1010; - end - end else begin - -// ALLE PAGES SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1110; - end - end - 6'b01_1010: begin - VCAS = vcc; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - -// NOTFALL? - if (FIFO_MW < 9'b0_0000_0000) begin - -// JA-> - DDR_SM__d = 6'b01_0111; - end else begin - DDR_SM__d = 6'b01_1011; - end - end - 6'b01_1011: begin - if (FIFO_REQ_q) begin - -// NEUE PAGE? - if (VIDEO_ADR_CNT_q[7:0] == 8'b1111_1111) begin - -// ALLE BANKS SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end else begin - VA_P_d[9:0] = FIFO_COL_ADR + 10'b00_0000_0100; - -// NON AUTO PRECHARGE - VA_P_d[10] = gnd; - BA_P_d = FIFO_BA; - DDR_SM__d = 6'b01_1100; - end - end else begin - -// ALLE BANKS SCHLIESEN - VA_S_d[10] = vcc; - -// BANK SCHLIESSEN - DDR_SM__d = 6'b01_1101; - end - end - 6'b01_1100: begin - if (DDR_SEL & (nFB_WR | (!LINE)) & FB_AD[13:12] != FIFO_BA) begin - VRAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = FB_AD[26:14]; - {BA1_2, BA0_2} = FB_AD[13:12]; - CPU_AC_d = vcc; - -// BUS CYCLUS LOSTRETEN - BUS_CYC_d_2 = vcc; - -// AUTO PRECHARGE DA NICHT FIFO BANK - VA_S_d[10] = vcc; - DDR_SM__d = 6'b00_0011; - end else begin - VCAS = vcc; - {VA12_2, VA11_2, VA10_2, VA9_2, VA8_2, VA7_2, VA6_2, VA5_2, - VA4_2, VA3_2, VA2_2, VA1_2, VA0_2} = VA_P_q; - {BA1_2, BA0_2} = BA_P_q; - -// DATEN WRITE FIFO - SR_FIFO_WRE_d = vcc; - -// CONFIG CYCLUS - DDR_SM__d = 6'b01_1001; - end - end - 6'b00_1000: begin - DDR_SM__d = 6'b00_1001; - end - 6'b00_1001: begin - BUS_CYC_d_2 = CPU_REQ_q; - DDR_SM__d = 6'b00_1010; - end - 6'b00_1010: begin - if (CPU_REQ_q) begin - DDR_SM__d = 6'b00_1011; - end else begin - DDR_SM__d = 6'b00_0000; - end - end - 6'b00_1011: begin - DDR_SM__d = 6'b00_1100; - end - 6'b00_1100: begin - VA_S_d = FB_AD[12:0]; - BA_S_d = FB_AD[14:13]; - DDR_SM__d = 6'b00_1101; - end - 6'b00_1101: begin - -// NUR BEI LONG WRITE - VRAS = FB_AD[18] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// NUR BEI LONG WRITE - VCAS = FB_AD[17] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// NUR BEI LONG WRITE - VWE = FB_AD[16] & (!nFB_WR) & (!FB_SIZE0) & (!FB_SIZE1); - -// CLOSE FIFO BANK - DDR_SM__d = 6'b00_0111; - end - 6'b01_1101: begin - -// AUF NOT OK - FIFO_BANK_NOT_OK = vcc; - -// BÄNKE SCHLIESSEN - VRAS = vcc; - VWE = vcc; - DDR_SM__d = 6'b00_0110; - end - 6'b01_1110: begin - -// AUF NOT OK - FIFO_BANK_NOT_OK = vcc; - -// BÄNKE SCHLIESSEN - VRAS = vcc; - VWE = vcc; - -// REFRESH 70NS = 10 ZYCLEN - DDR_SM__d = 6'b00_0000; - end - 6'b01_1111: begin - -// EIN CYCLUS VORLAUF UM BANKS ZU SCHLIESSEN - if (DDR_REFRESH_SIG_q == 4'b1001) begin - -// ALLE BANKS SCHLIESSEN - VRAS = vcc; - VWE = vcc; - VA10_2 = vcc; - FIFO_BANK_NOT_OK = vcc; - DDR_SM__d = 6'b10_0001; - end else begin - VCAS = vcc; - VRAS = vcc; - DDR_SM__d = 6'b10_0000; - end - end - 6'b10_0000: begin - DDR_SM__d = 6'b10_0001; - end - 6'b10_0001: begin - DDR_SM__d = 6'b10_0010; - end - 6'b10_0010: begin - DDR_SM__d = 6'b10_0011; - end - 6'b10_0011: begin - -// LEERSCHLAUFE - DDR_SM__d = 6'b00_0100; - end - 6'b00_0100: begin - DDR_SM__d = 6'b00_0101; - end - 6'b00_0101: begin - DDR_SM__d = 6'b00_0110; - end - 6'b00_0110: begin - DDR_SM__d = 6'b00_0111; - end - 6'b00_0111: begin - DDR_SM__d = 6'b00_0000; - end - endcase - end - -// ------------------------------------------------------------- -// BLITTER ---------------------- -// --------------------------------------- - assign BLITTER_REQ_clk = DDRCLK0; - assign BLITTER_REQ_d = BLITTER_SIG & (!DDR_CONFIG) & VCKE & (!nVCS); - assign BLITTER_ROW_ADR = BLITTER_ADR[26:14]; - assign BLITTER_BA[1] = BLITTER_ADR[13]; - assign BLITTER_BA[0] = BLITTER_ADR[12]; - assign BLITTER_COL_ADR = BLITTER_ADR[11:2]; - -// ---------------------------------------------------------------------------- -// FIFO --------------------------------- -// ------------------------------------------------------ - assign FIFO_REQ_clk = DDRCLK0; - assign FIFO_REQ_d = (FIFO_MW < 9'b0_1100_1000 | (FIFO_MW < 9'b1_1111_0100 & - FIFO_REQ_q)) & FIFO_ACTIVE & (!CLEAR_FIFO_CNT_q) & (!STOP_q) & - (!DDR_CONFIG) & VCKE & (!nVCS); - assign FIFO_ROW_ADR = VIDEO_ADR_CNT_q[22:10]; - assign FIFO_BA[1] = VIDEO_ADR_CNT_q[9]; - assign FIFO_BA[0] = VIDEO_ADR_CNT_q[8]; - assign FIFO_COL_ADR = {VIDEO_ADR_CNT_q[7], VIDEO_ADR_CNT_q[6], - VIDEO_ADR_CNT_q[5], VIDEO_ADR_CNT_q[4], VIDEO_ADR_CNT_q[3], - VIDEO_ADR_CNT_q[2], VIDEO_ADR_CNT_q[1], VIDEO_ADR_CNT_q[0], 2'b00}; - assign FIFO_BANK_OK_clk = DDRCLK0; - assign FIFO_BANK_OK_d_2 = FIFO_BANK_OK_q & (!FIFO_BANK_NOT_OK); - -// ZÄHLER RÜCKSETZEN WENN CLR FIFO ---------------- - assign CLR_FIFO_SYNC_clk = DDRCLK0; - -// SYNCHRONISIEREN - assign CLR_FIFO_SYNC_d = CLR_FIFO; - assign CLEAR_FIFO_CNT_clk = DDRCLK0; - assign CLEAR_FIFO_CNT_d = CLR_FIFO_SYNC_q | (!FIFO_ACTIVE); - assign STOP_clk = DDRCLK0; - assign STOP_d = CLR_FIFO_SYNC_q | CLEAR_FIFO_CNT_q; - -// ZÄHLEN ----------------------------------------------- - assign VIDEO_ADR_CNT0_clk_ctrl = DDRCLK0; - assign VIDEO_ADR_CNT0_ena_ctrl = SR_FIFO_WRE_q | CLEAR_FIFO_CNT_q; - assign VIDEO_ADR_CNT_d = ({23{CLEAR_FIFO_CNT_q}} & VIDEO_BASE_ADR) | - ({23{!CLEAR_FIFO_CNT_q}} & (VIDEO_ADR_CNT_q + 23'h1)); - assign VIDEO_BASE_ADR[22:20] = VIDEO_BASE_X_D_q; - assign VIDEO_BASE_ADR[19:12] = VIDEO_BASE_H_D_q; - assign VIDEO_BASE_ADR[11:4] = VIDEO_BASE_M_D_q; - assign VIDEO_BASE_ADR[3:0] = VIDEO_BASE_L_D_q[7:4]; - assign VDM_SEL = VIDEO_BASE_L_D_q[3:0]; - -// AKTUELLE VIDEO ADRESSE - assign VIDEO_ACT_ADR[26:4] = VIDEO_ADR_CNT_q - {14'b00_0000_0000_0000, - FIFO_MW}; - assign VIDEO_ACT_ADR[3:0] = VDM_SEL; - -// --------------------------------------------------------------------------------------- -// REFRESH: IMMER 8 AUFS MAL, ANFORDERUNG ALLE 7.8us X 8 STCK. = 62.4us = 2059->2048 33MHz CLOCKS -// --------------------------------------------------------------------------------------- - assign DDR_REFRESH_CNT0_clk_ctrl = CLK33M; - -// ZÄHLEN 0-2047 - assign DDR_REFRESH_CNT_d = DDR_REFRESH_CNT_q + 11'b000_0000_0001; - assign REFRESH_TIME_clk = DDRCLK0; - -// SYNC - assign REFRESH_TIME_d = DDR_REFRESH_CNT_q == 11'b000_0000_0000 & - (!MAIN_CLK); - assign DDR_REFRESH_SIG0_clk_ctrl = DDRCLK0; - assign DDR_REFRESH_SIG0_ena_ctrl = REFRESH_TIME_q | DDR_SM__q == 6'b10_0011; - -// 9 STÜCK (8 REFRESH UND 1 ALS VORLAUF) -// MINUS 1 WENN GEMACHT - assign DDR_REFRESH_SIG_d = ({4{REFRESH_TIME_q}} & 4'b1001 & - {4{DDR_REFRESH_ON}} & {4{!DDR_CONFIG}}) | ({4{!REFRESH_TIME_q}} & - (DDR_REFRESH_SIG_q - 4'b0001) & {4{DDR_REFRESH_ON}} & - {4{!DDR_CONFIG}}); - assign DDR_REFRESH_REQ_clk = DDRCLK0; - assign DDR_REFRESH_REQ_d = DDR_REFRESH_SIG_q != 4'b0000 & DDR_REFRESH_ON & - (!REFRESH_TIME_q) & (!DDR_CONFIG); - -// --------------------------------------------------------- -// VIDEO REGISTER ----------------------- -// ------------------------------------------------------------------------------------------------------------------- - assign VIDEO_BASE_L_D0_clk_ctrl = MAIN_CLK; - -// 820D/2 - assign VIDEO_BASE_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C106; - -// SORRY, NUR 16 BYT GRENZEN - assign VIDEO_BASE_L_D_d = FB_AD[23:16]; - assign VIDEO_BASE_L_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_L & FB_B[1]; - assign VIDEO_BASE_M_D0_clk_ctrl = MAIN_CLK; - -// 8203/2 - assign VIDEO_BASE_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C101; - assign VIDEO_BASE_M_D_d = FB_AD[23:16]; - assign VIDEO_BASE_M_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_M & FB_B[3]; - assign VIDEO_BASE_H_D0_clk_ctrl = MAIN_CLK; - -// 8200-1/2 - assign VIDEO_BASE_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100; - assign VIDEO_BASE_H_D_d = FB_AD[23:16]; - assign VIDEO_BASE_H_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[1]; - assign VIDEO_BASE_X_D0_clk_ctrl = MAIN_CLK; - assign VIDEO_BASE_X_D_d = FB_AD[26:24]; - assign VIDEO_BASE_X_D0_ena_ctrl = (!nFB_WR) & VIDEO_BASE_H & FB_B[0]; - -// 8209/2 - assign VIDEO_CNT_L = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C104; - -// 8207/2 - assign VIDEO_CNT_M = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C103; - -// 8204,5/2 - assign VIDEO_CNT_H = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C102; - -// GE - assign VIDEO_BASE_X_D_FULL = {5'b0_0000, VIDEO_BASE_X_D_q}; - assign u0_data = ({8{VIDEO_BASE_H}} & VIDEO_BASE_X_D_FULL) | - ({8{VIDEO_CNT_H}} & {5'b0_0000, VIDEO_ACT_ADR[26:24]}); - assign u0_enabledt = (VIDEO_BASE_H | VIDEO_CNT_H) & (!nFB_OE); - assign FB_AD[31:24] = u0_tridata; - assign u1_data = ({8{VIDEO_BASE_L}} & VIDEO_BASE_L_D_q) | ({8{VIDEO_BASE_M}} - & VIDEO_BASE_M_D_q) | ({8{VIDEO_BASE_H}} & VIDEO_BASE_H_D_q) | - ({8{VIDEO_CNT_L}} & VIDEO_ACT_ADR[7:0]) | ({8{VIDEO_CNT_M}} & - VIDEO_ACT_ADR[15:8]) | ({8{VIDEO_CNT_H}} & VIDEO_ACT_ADR[23:16]); - assign u1_enabledt = (VIDEO_BASE_L | VIDEO_BASE_M | VIDEO_BASE_H | - VIDEO_CNT_L | VIDEO_CNT_M | VIDEO_CNT_H) & (!nFB_OE); - assign FB_AD[23:16] = u1_tridata; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign FIFO_BANK_OK_d = FIFO_BANK_OK_d_1 | FIFO_BANK_OK_d_2; - assign BUS_CYC_d = BUS_CYC_d_1 | BUS_CYC_d_2; - assign BA[0] = BA0_1 | BA0_2; - assign BA[1] = BA1_1 | BA1_2; - assign VA[0] = VA0_1 | VA0_2; - assign VA[1] = VA1_1 | VA1_2; - assign VA[2] = VA2_1 | VA2_2; - assign VA[3] = VA3_1 | VA3_2; - assign VA[4] = VA4_1 | VA4_2; - assign VA[5] = VA5_1 | VA5_2; - assign VA[6] = VA6_1 | VA6_2; - assign VA[7] = VA7_1 | VA7_2; - assign VA[8] = VA8_1 | VA8_2; - assign VA[9] = VA9_1 | VA9_2; - assign VA[10] = VA10_1 | VA10_2; - assign VA[11] = VA11_1 | VA11_2; - assign VA[12] = VA12_1 | VA12_2; - -// Define power signal(s) - assign vcc = 1'b1; - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf deleted file mode 100644 index 83c39d3..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/VIDEO_MOD_MUX_CLUTCTR.tdf +++ /dev/null @@ -1,684 +0,0 @@ -TITLE "VIDEO MODUSE UND CLUT CONTROL"; - --- CREATED BY FREDI ASCHWANDEN - --- GE http://quartushelp.altera.com/current/mergedProjects/hdl/ahdl/ahdl_elements_arithmetic_operators.htm - -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; - RAND_LINKS_FULL[23..0] :NODE; -- GE - HDIS_START[11..0] :NODE; - HDIS_END[11..0] :NODE; - RAND_RECHTS[11..0] :NODE; - HS_START[11..0] :NODE; - HS_START_FULL[23..0] :NODE; -- GE - H_TOTAL[11..0] :NODE; - H_TOTAL_FULL[23..0] :NODE; -- GE - 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_FULL[] = VDL_HBE[] * (0,MULF[5..1]); -- GE - HS_START_FULL[] = (VDL_HHT[]+1+VDL_HSS[]) * (0,MULF[5..1]); -- GE - H_TOTAL_FULL[] = (VDL_HHT[]+2) * (0,MULF[]); -- GE - - RAND_LINKS[] = VDL_HBE[] & ACP_VIDEO_ON - # 21 & !ACP_VIDEO_ON & ATARI_SYNC & VDL_VMD2 - # 42 & !ACP_VIDEO_ON & ATARI_SYNC & !VDL_VMD2 - # RAND_LINKS_FULL[11..0] & !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 - # HS_START_FULL[11..0] & !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 - # H_TOTAL_FULL[11..0] & !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 - assign VIDEO_PLL_CONFIG_CS = (!nFB_CS2) & FB_ADR[27:9] == 19'h3 & FB_B[0] & - FB_B[1]; - assign VR_WR_clk = MAIN_CLK; - assign VR_WR_d = VIDEO_PLL_CONFIG_CS & (!nFB_WR) & (!VR_BUSY) & (!VR_WR_q); - assign VR_RD = VIDEO_PLL_CONFIG_CS & nFB_WR & (!VR_BUSY); - assign VR_DOUT0_clk_ctrl = MAIN_CLK; - assign VR_DOUT0_ena_ctrl = !VR_BUSY; - assign VR_DOUT_d = VR_D; - assign VR_FRQ0_clk_ctrl = MAIN_CLK; - assign VR_FRQ0_ena_ctrl = VR_WR_q & FB_ADR[8:0] == 9'b0_0000_0100; - assign VR_FRQ_d = FB_AD[23:16]; - -// VIDEO PLL RECONFIG -// $(F)000'0800 - assign VIDEO_PLL_RECONFIG_CS = (!nFB_CS2) & FB_ADR[27:0] == 28'h800 & - FB_B[0]; - assign VIDEO_RECONFIG_clk = MAIN_CLK; - assign VIDEO_RECONFIG_d = VIDEO_PLL_RECONFIG_CS & (!nFB_WR) & (!VR_BUSY) & - (!VIDEO_RECONFIG_q); - -// ---------------------------------------------------------------------------------------------------------------------- - assign VIDEO_RAM_CTR = ACP_VCTR_q[31:16]; - -// ------------ COLOR MODE IM ACP SETZEN - assign COLOR1_3 = ACP_VCTR_q[5] & (!ACP_VCTR_q[4]) & (!ACP_VCTR_q[3]) & - (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; - assign COLOR8_2 = ACP_VCTR_q[4] & (!ACP_VCTR_q[3]) & (!ACP_VCTR_q[2]) & - ACP_VIDEO_ON; - assign COLOR16_2 = ACP_VCTR_q[3] & (!ACP_VCTR_q[2]) & ACP_VIDEO_ON; - assign COLOR24 = ACP_VCTR_q[2] & ACP_VIDEO_ON; - assign ACP_CLUT = (ACP_VIDEO_ON & (COLOR1 | COLOR8)) | (ST_VIDEO & COLOR1); - -// ST ODER FALCON SHIFT MODE SETZEN WENN WRITE X..SHIFT REGISTER - assign ACP_VCTR_d[7] = FALCON_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); - assign ACP_VCTR_d[6] = ST_SHIFT_MODE_CS & (!nFB_WR) & (!ACP_VIDEO_ON); - assign ACP_VCTR6_ena_ctrl = (FALCON_SHIFT_MODE_CS & (!nFB_WR)) | - (ST_SHIFT_MODE_CS & (!nFB_WR)) | (ACP_VCTR_CS & FB_B[3] & (!nFB_WR) & - FB_AD[0]); - assign FALCON_VIDEO = ACP_VCTR_q[7]; - assign FALCON_CLUT = FALCON_VIDEO & (!ACP_VIDEO_ON) & (!COLOR16); - assign ST_VIDEO = ACP_VCTR_q[6]; - assign ST_CLUT = ST_VIDEO & (!ACP_VIDEO_ON) & (!FALCON_CLUT) & (!COLOR1); - assign CCSEL0_clk_ctrl = PIXEL_CLK; - -// ONLY FOR INFORMATION - assign CCSEL_d = (3'b000 & {3{ST_CLUT}}) | (3'b001 & {3{FALCON_CLUT}}) | - (3'b100 & {3{ACP_CLUT}}) | (3'b101 & {3{COLOR16}}) | (3'b110 & - {3{COLOR24}}) | (3'b111 & {3{RAND_ON}}); - -// DIVERSE (VIDEO)-REGISTER ---------------------------- -// RANDFARBE - assign CCR0_clk_ctrl = MAIN_CLK; - -// $404/4 - assign CCR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h101; - assign CCR_d = FB_AD[23:0]; - assign CCR16_ena_ctrl = CCR_CS & FB_B[1] & (!nFB_WR); - assign CCR8_ena_ctrl = CCR_CS & FB_B[2] & (!nFB_WR); - assign CCR0_ena_ctrl = CCR_CS & FB_B[3] & (!nFB_WR); - -// SYS CTR -// $8006/2 - assign SYS_CTR_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C003; - assign SYS_CTR0_clk_ctrl = MAIN_CLK; - assign SYS_CTR_d = FB_AD[22:16]; - assign SYS_CTR0_ena_ctrl = SYS_CTR_CS & (!nFB_WR) & FB_B[3]; - assign BLITTER_ON = !SYS_CTR_q[3]; - -// VDL_LOF -// $820E/2 - assign VDL_LOF_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C107; - assign VDL_LOF0_clk_ctrl = MAIN_CLK; - assign VDL_LOF_d = FB_AD[31:16]; - assign VDL_LOF8_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[2]; - assign VDL_LOF0_ena_ctrl = VDL_LOF_CS & (!nFB_WR) & FB_B[3]; - -// VDL_LWD -// $8210/2 - assign VDL_LWD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C108; - assign VDL_LWD0_clk_ctrl = MAIN_CLK; - assign VDL_LWD_d = FB_AD[31:16]; - assign VDL_LWD8_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[0]; - assign VDL_LWD0_ena_ctrl = VDL_LWD_CS & (!nFB_WR) & FB_B[1]; - -// HORIZONTAL -// VDL_HHT -// $8282/2 - assign VDL_HHT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C141; - assign VDL_HHT0_clk_ctrl = MAIN_CLK; - assign VDL_HHT_d = FB_AD[27:16]; - assign VDL_HHT8_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HHT0_ena_ctrl = VDL_HHT_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HBE -// $8286/2 - assign VDL_HBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C143; - assign VDL_HBE0_clk_ctrl = MAIN_CLK; - assign VDL_HBE_d = FB_AD[27:16]; - assign VDL_HBE8_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HBE0_ena_ctrl = VDL_HBE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HDB -// $8288/2 - assign VDL_HDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C144; - assign VDL_HDB0_clk_ctrl = MAIN_CLK; - assign VDL_HDB_d = FB_AD[27:16]; - assign VDL_HDB8_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HDB0_ena_ctrl = VDL_HDB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_HDE -// $828A/2 - assign VDL_HDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C145; - assign VDL_HDE0_clk_ctrl = MAIN_CLK; - assign VDL_HDE_d = FB_AD[27:16]; - assign VDL_HDE8_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_HDE0_ena_ctrl = VDL_HDE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_HBB -// $8284/2 - assign VDL_HBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C142; - assign VDL_HBB0_clk_ctrl = MAIN_CLK; - assign VDL_HBB_d = FB_AD[27:16]; - assign VDL_HBB8_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HBB0_ena_ctrl = VDL_HBB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_HSS -// $828C/2 - assign VDL_HSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C146; - assign VDL_HSS0_clk_ctrl = MAIN_CLK; - assign VDL_HSS_d = FB_AD[27:16]; - assign VDL_HSS8_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[0]; - assign VDL_HSS0_ena_ctrl = VDL_HSS_CS & (!nFB_WR) & FB_B[1]; - -// VERTIKAL -// VDL_VBE -// $82A6/2 - assign VDL_VBE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C153; - assign VDL_VBE0_clk_ctrl = MAIN_CLK; - assign VDL_VBE_d = FB_AD[26:16]; - assign VDL_VBE8_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VBE0_ena_ctrl = VDL_VBE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VDB -// $82A8/2 - assign VDL_VDB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C154; - assign VDL_VDB0_clk_ctrl = MAIN_CLK; - assign VDL_VDB_d = FB_AD[26:16]; - assign VDL_VDB8_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VDB0_ena_ctrl = VDL_VDB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VDE -// $82AA/2 - assign VDL_VDE_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C155; - assign VDL_VDE0_clk_ctrl = MAIN_CLK; - assign VDL_VDE_d = FB_AD[26:16]; - assign VDL_VDE8_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VDE0_ena_ctrl = VDL_VDE_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VBB -// $82A4/2 - assign VDL_VBB_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C152; - assign VDL_VBB0_clk_ctrl = MAIN_CLK; - assign VDL_VBB_d = FB_AD[26:16]; - assign VDL_VBB8_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VBB0_ena_ctrl = VDL_VBB_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VSS -// $82AC/2 - assign VDL_VSS_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C156; - assign VDL_VSS0_clk_ctrl = MAIN_CLK; - assign VDL_VSS_d = FB_AD[26:16]; - assign VDL_VSS8_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VSS0_ena_ctrl = VDL_VSS_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VFT -// $82A2/2 - assign VDL_VFT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C151; - assign VDL_VFT0_clk_ctrl = MAIN_CLK; - assign VDL_VFT_d = FB_AD[26:16]; - assign VDL_VFT8_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[2]; - assign VDL_VFT0_ena_ctrl = VDL_VFT_CS & (!nFB_WR) & FB_B[3]; - -// VDL_VCT -// $82C0/2 - assign VDL_VCT_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C160; - assign VDL_VCT0_clk_ctrl = MAIN_CLK; - assign VDL_VCT_d = FB_AD[24:16]; - assign VDL_VCT8_ena = VDL_VCT_CS & (!nFB_WR) & FB_B[0]; - assign VDL_VCT0_ena_ctrl = VDL_VCT_CS & (!nFB_WR) & FB_B[1]; - -// VDL_VMD -// $82C2/2 - assign VDL_VMD_CS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C161; - assign VDL_VMD0_clk_ctrl = MAIN_CLK; - assign VDL_VMD_d = FB_AD[19:16]; - assign VDL_VMD0_ena_ctrl = VDL_VMD_CS & (!nFB_WR) & FB_B[3]; - -// - REGISTER OUT - assign u0_data = ({16{ST_SHIFT_MODE_CS}} & {6'b00_0000, ST_SHIFT_MODE_q, - 8'b0000_0000}) | ({16{FALCON_SHIFT_MODE_CS}} & {5'b0_0000, - FALCON_SHIFT_MODE_q}) | ({16{SYS_CTR_CS}} & {9'b1_0000_0000, - SYS_CTR_q[6:4], !BLITTER_RUN, SYS_CTR_q[2:0]}) | ({16{VDL_LOF_CS}} & - VDL_LOF_q) | ({16{VDL_LWD_CS}} & VDL_LWD_q) | ({16{VDL_HBE_CS}} & - {4'b0000, VDL_HBE_q}) | ({16{VDL_HDB_CS}} & {4'b0000, VDL_HDB_q}) | - ({16{VDL_HDE_CS}} & {4'b0000, VDL_HDE_q}) | ({16{VDL_HBB_CS}} & - {4'b0000, VDL_HBB_q}) | ({16{VDL_HSS_CS}} & {4'b0000, VDL_HSS_q}) | - ({16{VDL_HHT_CS}} & {4'b0000, VDL_HHT_q}) | ({16{VDL_VBE_CS}} & - {5'b0_0000, VDL_VBE_q}) | ({16{VDL_VDB_CS}} & {5'b0_0000, VDL_VDB_q}) - | ({16{VDL_VDE_CS}} & {5'b0_0000, VDL_VDE_q}) | ({16{VDL_VBB_CS}} & - {5'b0_0000, VDL_VBB_q}) | ({16{VDL_VSS_CS}} & {5'b0_0000, VDL_VSS_q}) - | ({16{VDL_VFT_CS}} & {5'b0_0000, VDL_VFT_q}) | ({16{VDL_VCT_CS}} & - {7'b000_0000, VDL_VCT_q}) | ({16{VDL_VMD_CS}} & {12'b0000_0000_0000, - VDL_VMD_q}) | ({16{ACP_VCTR_CS}} & ACP_VCTR_q[31:16]) | - ({16{ATARI_HH_CS}} & ATARI_HH_q[31:16]) | ({16{ATARI_VH_CS}} & - ATARI_VH_q[31:16]) | ({16{ATARI_HL_CS}} & ATARI_HL_q[31:16]) | - ({16{ATARI_VL_CS}} & ATARI_VL_q[31:16]) | ({16{CCR_CS}} & - {8'b0000_0000, CCR_q[23:16]}) | ({16{VIDEO_PLL_CONFIG_CS}} & - {7'b000_0000, VR_DOUT_q}) | ({16{VIDEO_PLL_RECONFIG_CS}} & {VR_BUSY, - 4'b0000, VR_WR_q, VR_RD, VIDEO_RECONFIG_q, 8'b1111_1010}); - assign u0_enabledt = (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); - assign FB_AD[31:16] = u0_tridata; - assign u1_data = ({16{ACP_VCTR_CS}} & ACP_VCTR_q[15:0]) | ({16{ATARI_HH_CS}} - & ATARI_HH_q[15:0]) | ({16{ATARI_VH_CS}} & ATARI_VH_q[15:0]) | - ({16{ATARI_HL_CS}} & ATARI_HL_q[15:0]) | ({16{ATARI_VL_CS}} & - ATARI_VL_q[15:0]) | ({16{CCR_CS}} & CCR_q[15:0]); - assign u1_enabledt = (ACP_VCTR_CS | CCR_CS | ATARI_HH_CS | ATARI_VH_CS | - ATARI_HL_CS | ATARI_VL_CS) & (!nFB_OE); - assign FB_AD[15:0] = u1_tridata; - assign VIDEO_MOD_TA = CLUT_TA_q | 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 - assign CLK17M_clk = CLK33M; - assign CLK17M_d = !CLK17M_q; - assign CLK13M_clk = CLK25M; - assign CLK13M_d = !CLK13M_q; - assign PIXEL_CLK = (CLK13M_q & (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & - ((VDL_VMD_q[2] & VDL_VCT_q[2]) | VDL_VCT_q[0])) | (CLK17M_q & - (!ACP_VIDEO_ON) & (FALCON_VIDEO | ST_VIDEO) & ((VDL_VMD_q[2] & - (!VDL_VCT_q[2])) | VDL_VCT_q[0])) | (CLK25M & (!ACP_VIDEO_ON) & - (FALCON_VIDEO | ST_VIDEO) & (!VDL_VMD_q[2]) & VDL_VCT_q[2] & - (!VDL_VCT_q[0])) | (CLK33M & (!ACP_VIDEO_ON) & (FALCON_VIDEO | - ST_VIDEO) & (!VDL_VMD_q[2]) & (!VDL_VCT_q[2]) & (!VDL_VCT_q[0])) | - (CLK25M & ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b00) | (CLK33M & - ACP_VIDEO_ON & ACP_VCTR_q[9:8] == 2'b01) | (CLK_VIDEO & ACP_VIDEO_ON & - ACP_VCTR_q[9]); - -// ------------------------------------------------------------ -// HORIZONTALE SYNC LÄNGE in PIXEL_CLK -// -------------------------------------------------------------- - assign HSY_LEN0_clk_ctrl = MAIN_CLK; - -// hsync puls length in pixeln=frequenz/ = 500ns - assign HSY_LEN_d = (8'b0000_1110 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | - {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}}) | - {8{VDL_VCT_q[0]}})) | (8'b0001_0000 & {8{!ACP_VIDEO_ON}} & - ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & (({8{VDL_VMD_q[2]}} & - {8{!VDL_VCT_q[2]}}) | {8{VDL_VCT_q[0]}})) | (8'b0001_1100 & - {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | {8{ST_VIDEO}}) & - {8{!VDL_VMD_q[2]}} & {8{VDL_VCT_q[2]}} & {8{!VDL_VCT_q[0]}}) | - (8'b0010_0000 & {8{!ACP_VIDEO_ON}} & ({8{FALCON_VIDEO}} | - {8{ST_VIDEO}}) & {8{!VDL_VMD_q[2]}} & {8{!VDL_VCT_q[2]}} & - {8{!VDL_VCT_q[0]}}) | (8'b0001_1100 & {8{ACP_VIDEO_ON}} & - {8{ACP_VCTR_q[9:8] == 2'b00}}) | (8'b0010_0000 & {8{ACP_VIDEO_ON}} & - {8{ACP_VCTR_q[9:8] == 2'b01}}) | ((8'b0001_0000 + {1'b0, - VR_FRQ_q[7:1]}) & {8{ACP_VIDEO_ON}} & {8{ACP_VCTR_q[9]}}); - -// MULTIPLIKATIONS FAKTOR - assign MULF = (6'b00_0010 & {6{!ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | - (6'b00_0100 & {6{!ST_VIDEO}} & {6{!VDL_VMD_q[2]}}) | (6'b01_0000 & - {6{ST_VIDEO}} & {6{VDL_VMD_q[2]}}) | (6'b10_0000 & {6{ST_VIDEO}} & - {6{!VDL_VMD_q[2]}}); - -// BREITE IN PIXELN - assign HDIS_LEN = (12'b0001_0100_0000 & {12{VDL_VMD_q[2]}}) | - (12'b0010_1000_0000 & {12{!VDL_VMD_q[2]}}); - -// DOPPELZEILENMODUS - assign DOP_ZEI_clk = MAIN_CLK; - -// ZEILENVERDOPPELUNG EIN AUS - assign DOP_ZEI_d = VDL_VMD_q[0] & ST_VIDEO; - assign INTER_ZEI_clk = PIXEL_CLK; - -// EINSCHIEBEZEILE AUF "DOPPEL" ZEILEN UND ZEILE NULL WEGEN SYNC -// EINSCHIEBEZEILE AUF "NORMAL" ZEILEN UND ZEILE NULL WEGEN SYNC - assign INTER_ZEI_d = (DOP_ZEI_q & VVCNT_q[0] != VDIS_START[0] & VVCNT_q != - 11'b000_0000_0000 & VHCNT_q < (HDIS_END - 12'b0000_0000_0001)) | - (DOP_ZEI_q & VVCNT_q[0] == VDIS_START[0] & VVCNT_q != - 11'b000_0000_0000 & VHCNT_q > (HDIS_END - 12'b0000_0000_0010)); - assign DOP_FIFO_CLR_clk = PIXEL_CLK; - -// DOPPELZEILENFIFO LÖSCHEN AM ENDE DER DOPPELZEILE UND BEI MAIN FIFO START - assign DOP_FIFO_CLR_d = (INTER_ZEI_q & HSYNC_START_q) | SYNC_PIX_q; - -// GE - assign RAND_LINKS_FULL = VDL_HBE_q * {7'b000_0000, MULF[5:1]}; - -// GE - assign HS_START_FULL = ((VDL_HHT_q + 24'h1) + VDL_HSS_q) * {7'b000_0000, - MULF[5:1]}; - -// GE - assign H_TOTAL_FULL = (VDL_HHT_q + 24'h2) * {6'b00_0000, MULF}; - assign RAND_LINKS = (VDL_HBE_q & {12{ACP_VIDEO_ON}}) | (12'b0000_0001_0101 & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (12'b0000_0010_1010 & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (RAND_LINKS_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign HDIS_START = (VDL_HDB_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + - 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); - assign HDIS_END = (VDL_HDE_q & {12{ACP_VIDEO_ON}}) | ((RAND_LINKS + - HDIS_LEN) & {12{!ACP_VIDEO_ON}}); - assign RAND_RECHTS = (VDL_HBB_q & {12{ACP_VIDEO_ON}}) | ((HDIS_END + - 12'b0000_0000_0001) & {12{!ACP_VIDEO_ON}}); - assign HS_START = (VDL_HSS_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[11:0] & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (ATARI_HH_q[11:0] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (HS_START_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign H_TOTAL = (VDL_HHT_q & {12{ACP_VIDEO_ON}}) | (ATARI_HL_q[27:16] & - {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & {12{VDL_VMD_q[2]}}) | - (ATARI_HH_q[27:16] & {12{!ACP_VIDEO_ON}} & {12{ATARI_SYNC}} & - {12{!VDL_VMD_q[2]}}) | (H_TOTAL_FULL[11:0] & {12{!ACP_VIDEO_ON}} & - {12{!ATARI_SYNC}}); - assign RAND_OBEN = (VDL_VBE_q & {11{ACP_VIDEO_ON}}) | (11'b000_0001_1111 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | ({1'b0, VDL_VBE_q[10:1]} & - {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); - assign VDIS_START = (VDL_VDB_q & {11{ACP_VIDEO_ON}}) | (11'b000_0010_0000 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | (({1'b0, VDL_VDB_q[10:1]} + - 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{!ATARI_SYNC}}); - assign VDIS_END = (VDL_VDE_q & {11{ACP_VIDEO_ON}}) | (11'b001_1010_1111 & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{ST_VIDEO}}) | - (11'b001_1111_1111 & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!ST_VIDEO}}) | ({1'b0, VDL_VDE_q[10:1]} & {11{!ACP_VIDEO_ON}} & - {11{!ATARI_SYNC}}); - assign RAND_UNTEN = (VDL_VBB_q & {11{ACP_VIDEO_ON}}) | ((VDIS_END + - 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}}) | - (({1'b0, VDL_VBB_q[10:1]} + 11'b000_0000_0001) & {11{!ACP_VIDEO_ON}} & - {11{!ATARI_SYNC}}); - assign VS_START = (VDL_VSS_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[10:0] & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | - (ATARI_VH_q[10:0] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VSS_q[10:1]} & {11{!ACP_VIDEO_ON}} - & {11{!ATARI_SYNC}}); - assign V_TOTAL = (VDL_VFT_q & {11{ACP_VIDEO_ON}}) | (ATARI_VL_q[26:16] & - {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & {11{VDL_VMD_q[2]}}) | - (ATARI_VH_q[26:16] & {11{!ACP_VIDEO_ON}} & {11{ATARI_SYNC}} & - {11{!VDL_VMD_q[2]}}) | ({1'b0, VDL_VFT_q[10:1]} & {11{!ACP_VIDEO_ON}} - & {11{!ATARI_SYNC}}); - -// ZÄHLER - assign LAST_clk = PIXEL_CLK; - assign LAST_d = VHCNT_q == (H_TOTAL - 12'b0000_0000_0010); - assign VHCNT0_clk_ctrl = PIXEL_CLK; - assign VHCNT_d = (VHCNT_q + 12'b0000_0000_0001) & {12{!LAST_q}}; - assign VVCNT0_clk_ctrl = PIXEL_CLK; - assign VVCNT0_ena_ctrl = LAST_q; - assign VVCNT_d = (VVCNT_q + 11'b000_0000_0001) & {11{VVCNT_q != (V_TOTAL - - 11'b000_0000_0001)}}; - -// DISPLAY ON OFF - assign DPO_ZL_clk = PIXEL_CLK; - -// 1 ZEILE DAVOR ON OFF - assign DPO_ZL_d = VVCNT_q > (RAND_OBEN - 11'b000_0000_0001) & VVCNT_q < - (RAND_UNTEN - 11'b000_0000_0001); - -// AM ZEILENENDE ÜBERNEHMEN - assign DPO_ZL_ena = LAST_q; - assign DPO_ON_clk = PIXEL_CLK; - -// BESSER EINZELN WEGEN TIMING - assign DPO_ON_d = VHCNT_q == RAND_LINKS; - assign DPO_OFF_clk = PIXEL_CLK; - assign DPO_OFF_d = VHCNT_q == (RAND_RECHTS - 12'b0000_0000_0001); - assign DISP_ON_clk = PIXEL_CLK; - assign DISP_ON_d = (DISP_ON_q & (!DPO_OFF_q)) | (DPO_ON_q & DPO_ZL_q); - -// DATENTRANSFER ON OFF - assign VDO_ON_clk = PIXEL_CLK; - -// BESSER EINZELN WEGEN TIMING - assign VDO_ON_d = VHCNT_q == (HDIS_START - 12'b0000_0000_0001); - assign VDO_OFF_clk = PIXEL_CLK; - assign VDO_OFF_d = VHCNT_q == HDIS_END; - assign VDO_ZL_clk = PIXEL_CLK; - -// AM ZEILENENDE ÜBERNEHMEN - assign VDO_ZL_ena = LAST_q; - -// 1 ZEILE DAVOR ON OFF - assign VDO_ZL_d = VVCNT_q >= (VDIS_START - 11'b000_0000_0001) & VVCNT_q < - VDIS_END; - assign VDTRON_clk = PIXEL_CLK; - assign VDTRON_d = (VDTRON_q & (!VDO_OFF_q)) | (VDO_ON_q & VDO_ZL_q); - -// VERZÖGERUNG UND SYNC - assign HSYNC_START_clk = PIXEL_CLK; - assign HSYNC_START_d = VHCNT_q == (HS_START - 12'b0000_0000_0011); - assign HSYNC_I0_clk_ctrl = PIXEL_CLK; - assign HSYNC_I_d = (HSY_LEN_q & {8{HSYNC_START_q}}) | ((HSYNC_I_q - - 8'b0000_0001) & {8{!HSYNC_START_q}} & {8{HSYNC_I_q != 8'b0000_0000}}); - assign VSYNC_START_clk = PIXEL_CLK; - assign VSYNC_START_ena = LAST_q; - -// start am ende der Zeile vor dem vsync - assign VSYNC_START_d = VVCNT_q == (VS_START - 11'b000_0000_0011); - assign VSYNC_I0_clk_ctrl = PIXEL_CLK; - -// start am ende der Zeile vor dem vsync - assign VSYNC_I0_ena_ctrl = LAST_q; - -// 3 zeilen vsync length -// runterzählen bis 0 - assign VSYNC_I_d = (3'b011 & {3{VSYNC_START_q}}) | ((VSYNC_I_q - 3'b001) & - {3{!VSYNC_START_q}} & {3{VSYNC_I_q != 3'b000}}); - assign VERZ2_0_clk_ctrl = PIXEL_CLK; - assign VERZ1_0_clk_ctrl = PIXEL_CLK; - assign VERZ0_0_clk_ctrl = PIXEL_CLK; - assign {VERZ2__d[1], VERZ1__d[1], VERZ0__d[1]} = {VERZ2__q[0], VERZ1__q[0], - VERZ0__q[0]}; - assign {VERZ2__d[2], VERZ1__d[2], VERZ0__d[2]} = {VERZ2__q[1], VERZ1__q[1], - VERZ0__q[1]}; - assign {VERZ2__d[3], VERZ1__d[3], VERZ0__d[3]} = {VERZ2__q[2], VERZ1__q[2], - VERZ0__q[2]}; - assign {VERZ2__d[4], VERZ1__d[4], VERZ0__d[4]} = {VERZ2__q[3], VERZ1__q[3], - VERZ0__q[3]}; - assign {VERZ2__d[5], VERZ1__d[5], VERZ0__d[5]} = {VERZ2__q[4], VERZ1__q[4], - VERZ0__q[4]}; - assign {VERZ2__d[6], VERZ1__d[6], VERZ0__d[6]} = {VERZ2__q[5], VERZ1__q[5], - VERZ0__q[5]}; - assign {VERZ2__d[7], VERZ1__d[7], VERZ0__d[7]} = {VERZ2__q[6], VERZ1__q[6], - VERZ0__q[6]}; - assign {VERZ2__d[8], VERZ1__d[8], VERZ0__d[8]} = {VERZ2__q[7], VERZ1__q[7], - VERZ0__q[7]}; - assign {VERZ2__d[9], VERZ1__d[9], VERZ0__d[9]} = {VERZ2__q[8], VERZ1__q[8], - VERZ0__q[8]}; - assign VERZ0__d[0] = DISP_ON_q; - assign VERZ1_0_d_1 = HSYNC_I_q != 8'b0000_0000; - -// NUR MÖGLICH WENN BEIDE - assign VERZ1_0_d_2 = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[6])) & HSYNC_I_q != - 8'b0000_0000) | (ACP_VCTR_q[15] & VDL_VCT_q[6] & HSYNC_I_q == - 8'b0000_0000); - -// NUR MÖGLICH WENN BEIDE - assign VERZ2__d[0] = (((!ACP_VCTR_q[15]) | (!VDL_VCT_q[5])) & VSYNC_I_q != - 3'b000) | (ACP_VCTR_q[15] & VDL_VCT_q[5] & VSYNC_I_q == 3'b000); - assign nBLANK_clk = PIXEL_CLK; - assign nBLANK_d = VERZ0__q[8]; - assign HSYNC_clk = PIXEL_CLK; - assign HSYNC_d = VERZ1__q[9]; - assign VSYNC_clk = PIXEL_CLK; - assign VSYNC_d = VERZ2__q[9]; - assign nSYNC = gnd; - -// RANDFARBE MACHEN ------------------------------------ - assign RAND0_clk_ctrl = PIXEL_CLK; - assign RAND_d[0] = DISP_ON_q & (!VDTRON_q) & ACP_VCTR_q[25]; - assign RAND_d[1] = RAND_q[0]; - assign RAND_d[2] = RAND_q[1]; - assign RAND_d[3] = RAND_q[2]; - assign RAND_d[4] = RAND_q[3]; - assign RAND_d[5] = RAND_q[4]; - assign RAND_d[6] = RAND_q[5]; - assign RAND_ON = RAND_q[6]; - -// -------------------------------------------------------- - assign CLR_FIFO_clk = PIXEL_CLK; - assign CLR_FIFO_ena = LAST_q; - -// IN LETZTER ZEILE LÖSCHEN - assign CLR_FIFO_d = VVCNT_q == (V_TOTAL - 11'b000_0000_0010); - assign START_ZEILE_clk = PIXEL_CLK; - assign START_ZEILE_ena = LAST_q; - -// ZEILE 1 - assign START_ZEILE_d = VVCNT_q == 11'b000_0000_0000; - assign SYNC_PIX_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX_d = VHCNT_q == 12'b0000_0000_0011 & START_ZEILE_q; - assign SYNC_PIX1_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX1_d = VHCNT_q == 12'b0000_0000_0101 & START_ZEILE_q; - assign SYNC_PIX2_clk = PIXEL_CLK; - -// SUB PIXEL ZÄHLER SYNCHRONISIEREN - assign SYNC_PIX2_d = VHCNT_q == 12'b0000_0000_0111 & START_ZEILE_q; - assign SUB_PIXEL_CNT0_clk_ctrl = PIXEL_CLK; - assign SUB_PIXEL_CNT0_ena_ctrl = VDTRON_q | SYNC_PIX_q; - -// count up if display on sonst clear bei sync pix - assign SUB_PIXEL_CNT_d = (SUB_PIXEL_CNT_q + 7'b000_0001) & {7{!SYNC_PIX_q}}; - assign FIFO_RDE_clk = PIXEL_CLK; - -// 3 CLOCK ZUSÄTZLICH FÜR FIFO SHIFT DATAOUT UND SHIFT RIGTH POSITION - assign FIFO_RDE_d = (((SUB_PIXEL_CNT_q == 7'b000_0001 & COLOR1) | - (SUB_PIXEL_CNT_q[5:0] == 6'b00_0001 & COLOR2) | (SUB_PIXEL_CNT_q[4:0] - == 5'b0_0001 & COLOR4) | (SUB_PIXEL_CNT_q[3:0] == 4'b0001 & COLOR8) | - (SUB_PIXEL_CNT_q[2:0] == 3'b001 & COLOR16) | (SUB_PIXEL_CNT_q[1:0] == - 2'b01 & COLOR24)) & VDTRON_q) | SYNC_PIX_q | SYNC_PIX1_q | - SYNC_PIX2_q; - assign CLUT_MUX_ADR0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV1_0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV0_0_clk_ctrl = PIXEL_CLK; - assign CLUT_MUX_AV0__d = SUB_PIXEL_CNT_q[3:0]; - assign CLUT_MUX_AV1__d = CLUT_MUX_AV0__q; - assign CLUT_MUX_ADR_d = CLUT_MUX_AV1__q; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign COLOR16 = COLOR16_1 | COLOR16_2; - assign VERZ1__d[0] = VERZ1_0_d_1 | VERZ1_0_d_2; - assign COLOR4 = COLOR4_1 | COLOR4_2; - assign COLOR1 = COLOR1_1 | COLOR1_2 | COLOR1_3; - assign COLOR8 = COLOR8_1 | COLOR8_2; - -// Define power signal(s) - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf deleted file mode 100644 index a455469..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.tdf +++ /dev/null @@ -1,478 +0,0 @@ -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_by_Gregory_Estrade/ahdl2v/interrupt_handler.v b/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v deleted file mode 100644 index b8562a5..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/interrupt_handler.v +++ /dev/null @@ -1,3578 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: interrupt_handler.tdf -// Verilog Design Output: interrupt_handler.v -// Created 23-Feb-2014 10:34 AM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - -// INTERRUPT HANDLER UND C1287 - - -// CREATED BY FREDI ASCHWANDEN -// Parameters Statement (optional) -// {{ALTERA_PARAMETERS_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_PARAMETERS_END}} DO NOT REMOVE THIS LINE! -// Subdesign Section -module interrupt_handler(MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, - FB_SIZE1, FB_ADR, PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, - nPCI_INTC, nPCI_INTD, nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ, - nIRQ, INT_HANDLER_TA, ACP_CONF, TIN0, FB_AD); - -// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! -// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! - input MAIN_CLK, nFB_WR, nFB_CS1, nFB_CS2, FB_SIZE0, FB_SIZE1; - input [31:0] FB_ADR; - input PIC_INT, E0_INT, DVI_INT, nPCI_INTA, nPCI_INTB, nPCI_INTC, nPCI_INTD, - nMFP_INT, nFB_OE, DSP_INT, VSYNC, HSYNC, DMA_DRQ; - output [7:2] nIRQ; - output INT_HANDLER_TA; - output [31:0] ACP_CONF; - output TIN0; - inout [31:0] FB_AD; - -// WERTE REGISTER 0-63 - wire [3:0] FB_B; - wire [31:0] INT_CTR; - wire [31:0] INT_CTR_d; - wire INT_CTR_CS; - wire [31:0] INT_LATCH; - wire [31:0] INT_LATCH_d; - wire [31:0] INT_LATCH_clk; - wire INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, INT_LATCH28_clrn, - INT_LATCH27_clrn, INT_LATCH26_clrn, INT_LATCH25_clrn, - INT_LATCH24_clrn, INT_LATCH23_clrn, INT_LATCH22_clrn, - INT_LATCH21_clrn, INT_LATCH20_clrn, INT_LATCH19_clrn, - INT_LATCH18_clrn, INT_LATCH17_clrn, INT_LATCH16_clrn, - INT_LATCH15_clrn, INT_LATCH14_clrn, INT_LATCH13_clrn, - INT_LATCH12_clrn, INT_LATCH11_clrn, INT_LATCH10_clrn, INT_LATCH9_clrn, - INT_LATCH8_clrn, INT_LATCH7_clrn, INT_LATCH6_clrn, INT_LATCH5_clrn, - INT_LATCH4_clrn, INT_LATCH3_clrn, INT_LATCH2_clrn, INT_LATCH1_clrn, - INT_LATCH0_clrn, INT_LATCH_CS; - wire [31:0] INT_CLEAR; - wire [31:0] INT_CLEAR_d; - wire INT_CLEAR_CS; - wire [31:0] INT_IN; - wire [31:0] INT_ENA; - wire [31:0] INT_ENA_d; - wire INT_ENA_CS; - wire [31:0] ACP_CONF_d; - wire ACP_CONF_CS, PSEUDO_BUS_ERROR, UHR_AS, UHR_DS; - wire [5:0] RTC_ADR; - wire [5:0] RTC_ADR_d; - wire [2:0] ACHTELSEKUNDEN; - wire [2:0] ACHTELSEKUNDEN_d; - wire [63:0] WERTE7_; - wire [63:0] WERTE7__d; - wire WERTE7_13_ena, WERTE7_9_ena, WERTE7_8_ena, WERTE7_7_ena, WERTE7_6_ena, - WERTE7_4_ena, WERTE7_2_ena, WERTE7_0_ena; - wire [63:0] WERTE6_; - wire [63:0] WERTE6__d; - wire WERTE6_10_clrn, WERTE6_13_ena, WERTE6_9_ena, WERTE6_8_ena, - WERTE6_7_ena, WERTE6_6_ena, WERTE6_4_ena, WERTE6_2_ena, WERTE6_0_ena; - wire [63:0] WERTE5_; - wire [63:0] WERTE5__d; - wire WERTE5_13_ena, WERTE5_9_ena, WERTE5_8_ena, WERTE5_7_ena, WERTE5_6_ena, - WERTE5_4_ena, WERTE5_2_ena, WERTE5_0_ena; - wire [63:0] WERTE4_; - wire [63:0] WERTE4__d; - wire WERTE4_13_ena, WERTE4_9_ena, WERTE4_8_ena, WERTE4_7_ena, WERTE4_6_ena, - WERTE4_4_ena, WERTE4_2_ena, WERTE4_0_ena; - wire [63:0] WERTE3_; - wire [63:0] WERTE3__d; - wire WERTE3_13_ena, WERTE3_9_ena, WERTE3_8_ena, WERTE3_7_ena, WERTE3_6_ena, - WERTE3_4_ena, WERTE3_2_ena, WERTE3_0_ena; - wire [63:0] WERTE2_; - wire [63:0] WERTE2__d; - wire WERTE2_13_ena, WERTE2_9_ena, WERTE2_8_ena, WERTE2_7_ena, WERTE2_6_ena, - WERTE2_4_ena, WERTE2_2_ena, WERTE2_0_ena; - wire [63:0] WERTE1_; - wire [63:0] WERTE1__d; - wire WERTE1_13_ena, WERTE1_9_ena, WERTE1_8_ena, WERTE1_7_ena, WERTE1_6_ena, - WERTE1_4_ena, WERTE1_2_ena, WERTE1_0_ena; - wire [63:0] WERTE0_; - wire [63:0] WERTE0__d; - wire WERTE0_13_ena, WERTE0_9_ena, WERTE0_8_ena, WERTE0_7_ena, WERTE0_6_ena, - WERTE0_4_ena, WERTE0_2_ena, WERTE0_0_ena; - wire [2:0] PIC_INT_SYNC; - wire [2:0] PIC_INT_SYNC_d; - wire INC_SEC, INC_MIN, INC_STD, INC_TAG; - wire [7:0] ANZAHL_TAGE_DES_MONATS; - wire WINTERZEIT, SOMMERZEIT, INC_MONAT, INC_JAHR, UPDATE_ON, gnd, vcc; - wire [7:0] u0_data; - wire u0_enabledt; - wire [7:0] u0_tridata; - wire [7:0] u1_data; - wire u1_enabledt; - wire [7:0] u1_tridata; - wire [7:0] u2_data; - wire u2_enabledt; - wire [7:0] u2_tridata; - wire [7:0] u3_data; - wire u3_enabledt; - wire [7:0] u3_tridata; - wire UPDATE_ON_1, UPDATE_ON_2, WERTE0_0_ena_1, WERTE0_0_ena_2, - WERTE0_2_ena_1, WERTE0_2_ena_2, WERTE0_4_ena_1, WERTE0_4_ena_2, - WERTE0_6_ena_1, WERTE0_6_ena_2, WERTE0_7_ena_1, WERTE0_7_ena_2, - WERTE0_8_ena_1, WERTE0_8_ena_2, WERTE0_9_ena_1, WERTE0_9_ena_2, - WERTE0_13_ena_1, WERTE0_13_ena_2, WERTE0_0_d_1, WERTE0_0_d_2, - WERTE0_2_d_1, WERTE0_2_d_2, WERTE0_4_d_1, WERTE0_4_d_2, WERTE0_6_d_1, - WERTE0_6_d_2, WERTE0_7_d_1, WERTE0_7_d_2, WERTE0_8_d_1, WERTE0_8_d_2, - WERTE0_9_d_1, WERTE0_9_d_2, WERTE0_11_d_1, WERTE0_11_d_2, - WERTE0_13_d_1, WERTE0_13_d_2, WERTE1_0_ena_1, WERTE1_0_ena_2, - WERTE1_2_ena_1, WERTE1_2_ena_2, WERTE1_4_ena_1, WERTE1_4_ena_2, - WERTE1_6_ena_1, WERTE1_6_ena_2, WERTE1_7_ena_1, WERTE1_7_ena_2, - WERTE1_8_ena_1, WERTE1_8_ena_2, WERTE1_9_ena_1, WERTE1_9_ena_2, - WERTE1_0_d_1, WERTE1_0_d_2, WERTE1_2_d_1, WERTE1_2_d_2, WERTE1_4_d_1, - WERTE1_4_d_2, WERTE1_6_d_1, WERTE1_6_d_2, WERTE1_7_d_1, WERTE1_7_d_2, - WERTE1_8_d_1, WERTE1_8_d_2, WERTE1_9_d_1, WERTE1_9_d_2, WERTE1_11_d_1, - WERTE1_11_d_2, WERTE2_0_ena_1, WERTE2_0_ena_2, WERTE2_2_ena_1, - WERTE2_2_ena_2, WERTE2_4_ena_1, WERTE2_4_ena_2, WERTE2_6_ena_1, - WERTE2_6_ena_2, WERTE2_7_ena_1, WERTE2_7_ena_2, WERTE2_8_ena_1, - WERTE2_8_ena_2, WERTE2_9_ena_1, WERTE2_9_ena_2, WERTE2_0_d_1, - WERTE2_0_d_2, WERTE2_2_d_1, WERTE2_2_d_2, WERTE2_4_d_1, WERTE2_4_d_2, - WERTE2_6_d_1, WERTE2_6_d_2, WERTE2_7_d_1, WERTE2_7_d_2, WERTE2_8_d_1, - WERTE2_8_d_2, WERTE2_9_d_1, WERTE2_9_d_2, WERTE2_11_d_1, - WERTE2_11_d_2, WERTE3_0_ena_1, WERTE3_0_ena_2, WERTE3_2_ena_1, - WERTE3_2_ena_2, WERTE3_4_ena_1, WERTE3_4_ena_2, WERTE3_6_ena_1, - WERTE3_6_ena_2, WERTE3_7_ena_1, WERTE3_7_ena_2, WERTE3_8_ena_1, - WERTE3_8_ena_2, WERTE3_9_ena_1, WERTE3_9_ena_2, WERTE3_0_d_1, - WERTE3_0_d_2, WERTE3_2_d_1, WERTE3_2_d_2, WERTE3_4_d_1, WERTE3_4_d_2, - WERTE3_6_d_1, WERTE3_6_d_2, WERTE3_7_d_1, WERTE3_7_d_2, WERTE3_8_d_1, - WERTE3_8_d_2, WERTE3_9_d_1, WERTE3_9_d_2, WERTE4_0_ena_1, - WERTE4_0_ena_2, WERTE4_2_ena_1, WERTE4_2_ena_2, WERTE4_4_ena_1, - WERTE4_4_ena_2, WERTE4_6_ena_1, WERTE4_6_ena_2, WERTE4_7_ena_1, - WERTE4_7_ena_2, WERTE4_8_ena_1, WERTE4_8_ena_2, WERTE4_9_ena_1, - WERTE4_9_ena_2, WERTE4_0_d_1, WERTE4_0_d_2, WERTE4_2_d_1, - WERTE4_2_d_2, WERTE4_4_d_1, WERTE4_4_d_2, WERTE4_6_d_1, WERTE4_6_d_2, - WERTE4_7_d_1, WERTE4_7_d_2, WERTE4_8_d_1, WERTE4_8_d_2, WERTE4_9_d_1, - WERTE4_9_d_2, WERTE5_0_ena_1, WERTE5_0_ena_2, WERTE5_2_ena_1, - WERTE5_2_ena_2, WERTE5_4_ena_1, WERTE5_4_ena_2, WERTE5_6_ena_1, - WERTE5_6_ena_2, WERTE5_7_ena_1, WERTE5_7_ena_2, WERTE5_8_ena_1, - WERTE5_8_ena_2, WERTE5_9_ena_1, WERTE5_9_ena_2, WERTE5_0_d_1, - WERTE5_0_d_2, WERTE5_2_d_1, WERTE5_2_d_2, WERTE5_4_d_1, WERTE5_4_d_2, - WERTE5_6_d_1, WERTE5_6_d_2, WERTE5_7_d_1, WERTE5_7_d_2, WERTE5_8_d_1, - WERTE5_8_d_2, WERTE5_9_d_1, WERTE5_9_d_2, WERTE6_0_ena_1, - WERTE6_0_ena_2, WERTE6_2_ena_1, WERTE6_2_ena_2, WERTE6_4_ena_1, - WERTE6_4_ena_2, WERTE6_6_ena_1, WERTE6_6_ena_2, WERTE6_7_ena_1, - WERTE6_7_ena_2, WERTE6_8_ena_1, WERTE6_8_ena_2, WERTE6_9_ena_1, - WERTE6_9_ena_2, WERTE6_0_d_1, WERTE6_0_d_2, WERTE6_2_d_1, - WERTE6_2_d_2, WERTE6_4_d_1, WERTE6_4_d_2, WERTE6_6_d_1, WERTE6_6_d_2, - WERTE6_7_d_1, WERTE6_7_d_2, WERTE6_8_d_1, WERTE6_8_d_2, WERTE6_9_d_1, - WERTE6_9_d_2, WERTE7_0_ena_1, WERTE7_0_ena_2, WERTE7_2_ena_1, - WERTE7_2_ena_2, WERTE7_4_ena_1, WERTE7_4_ena_2, WERTE7_6_ena_1, - WERTE7_6_ena_2, WERTE7_7_ena_1, WERTE7_7_ena_2, WERTE7_8_ena_1, - WERTE7_8_ena_2, WERTE7_9_ena_1, WERTE7_9_ena_2, WERTE7_0_d_1, - WERTE7_0_d_2, WERTE7_2_d_1, WERTE7_2_d_2, WERTE7_4_d_1, WERTE7_4_d_2, - WERTE7_6_d_1, WERTE7_6_d_2, WERTE7_7_d_1, WERTE7_7_d_2, WERTE7_8_d_1, - WERTE7_8_d_2, WERTE7_9_d_1, WERTE7_9_d_2, WERTE7_13_d_1, - WERTE7_13_d_2, ACHTELSEKUNDEN0_ena_ctrl, ACHTELSEKUNDEN0_clk_ctrl, - PIC_INT_SYNC0_clk_ctrl, WERTE0_63_ena_ctrl, WERTE0_62_ena_ctrl, - WERTE0_61_ena_ctrl, WERTE0_60_ena_ctrl, WERTE0_59_ena_ctrl, - WERTE0_58_ena_ctrl, WERTE0_57_ena_ctrl, WERTE0_56_ena_ctrl, - WERTE0_55_ena_ctrl, WERTE0_54_ena_ctrl, WERTE0_53_ena_ctrl, - WERTE0_52_ena_ctrl, WERTE0_51_ena_ctrl, WERTE0_50_ena_ctrl, - WERTE0_49_ena_ctrl, WERTE0_48_ena_ctrl, WERTE0_47_ena_ctrl, - WERTE0_46_ena_ctrl, WERTE0_45_ena_ctrl, WERTE0_44_ena_ctrl, - WERTE0_43_ena_ctrl, WERTE0_42_ena_ctrl, WERTE0_41_ena_ctrl, - WERTE0_40_ena_ctrl, WERTE0_39_ena_ctrl, WERTE0_38_ena_ctrl, - WERTE0_37_ena_ctrl, WERTE0_36_ena_ctrl, WERTE0_35_ena_ctrl, - WERTE0_34_ena_ctrl, WERTE0_33_ena_ctrl, WERTE0_32_ena_ctrl, - WERTE0_31_ena_ctrl, WERTE0_30_ena_ctrl, WERTE0_29_ena_ctrl, - WERTE0_28_ena_ctrl, WERTE0_27_ena_ctrl, WERTE0_26_ena_ctrl, - WERTE0_25_ena_ctrl, WERTE0_24_ena_ctrl, WERTE0_23_ena_ctrl, - WERTE0_22_ena_ctrl, WERTE0_21_ena_ctrl, WERTE0_20_ena_ctrl, - WERTE0_19_ena_ctrl, WERTE0_18_ena_ctrl, WERTE0_17_ena_ctrl, - WERTE0_16_ena_ctrl, WERTE0_15_ena_ctrl, WERTE0_14_ena_ctrl, - WERTE0_12_ena_ctrl, WERTE0_11_ena_ctrl, WERTE0_10_ena_ctrl, - WERTE0_5_ena_ctrl, WERTE0_3_ena_ctrl, WERTE0_1_ena_ctrl, - WERTE0_0_clk_ctrl, WERTE1_0_clk_ctrl, WERTE2_0_clk_ctrl, - WERTE3_0_clk_ctrl, WERTE4_0_clk_ctrl, WERTE5_0_clk_ctrl, - WERTE6_0_clk_ctrl, WERTE7_0_clk_ctrl, RTC_ADR0_ena_ctrl, - RTC_ADR0_clk_ctrl, ACP_CONF0_ena_ctrl, ACP_CONF8_ena_ctrl, - ACP_CONF16_ena_ctrl, ACP_CONF24_ena_ctrl, ACP_CONF0_clk_ctrl, - INT_CLEAR0_clk_ctrl, INT_ENA0_ena_ctrl, INT_ENA8_ena_ctrl, - INT_ENA16_ena_ctrl, INT_ENA24_ena_ctrl, INT_ENA0_clk_ctrl, - INT_CTR0_ena_ctrl, INT_CTR8_ena_ctrl, INT_CTR16_ena_ctrl, - INT_CTR24_ena_ctrl, INT_CTR0_clk_ctrl, INT_LATCH9_clk_1, - INT_LATCH8_clk_1, INT_LATCH7_clk_1, INT_LATCH6_clk_1, - INT_LATCH5_clk_1, INT_LATCH4_clk_1, INT_LATCH3_clk_1, - INT_LATCH2_clk_1, INT_LATCH1_clk_1, INT_LATCH0_clk_1; - reg [31:0] INT_CTR_q; - reg [31:0] INT_LATCH_q; - reg [31:0] INT_CLEAR_q; - reg [31:0] INT_ENA_q; - reg [31:0] ACP_CONF_q; - reg [5:0] RTC_ADR_q; - reg [2:0] ACHTELSEKUNDEN_q; - reg [63:0] WERTE7__q; - reg [63:0] WERTE6__q; - reg [63:0] WERTE5__q; - reg [63:0] WERTE4__q; - reg [63:0] WERTE3__q; - reg [63:0] WERTE2__q; - reg [63:0] WERTE1__q; - reg [63:0] WERTE0__q; - reg [2:0] PIC_INT_SYNC_q; - - -// Sub Module Section - lpm_bustri_BYT u0 (.data(u0_data), .enabledt(u0_enabledt), - .tridata(u0_tridata)); - - lpm_bustri_BYT u1 (.data(u1_data), .enabledt(u1_enabledt), - .tridata(u1_tridata)); - - lpm_bustri_BYT u2 (.data(u2_data), .enabledt(u2_enabledt), - .tridata(u2_tridata)); - - lpm_bustri_BYT u3 (.data(u3_data), .enabledt(u3_enabledt), - .tridata(u3_tridata)); - - - assign ACP_CONF[31:24] = ACP_CONF_q[31:24]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF24_ena_ctrl) - {ACP_CONF_q[31], ACP_CONF_q[30], ACP_CONF_q[29], ACP_CONF_q[28], - ACP_CONF_q[27], ACP_CONF_q[26], ACP_CONF_q[25], ACP_CONF_q[24]} - <= ACP_CONF_d[31:24]; - - assign ACP_CONF[23:16] = ACP_CONF_q[23:16]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF16_ena_ctrl) - {ACP_CONF_q[23], ACP_CONF_q[22], ACP_CONF_q[21], ACP_CONF_q[20], - ACP_CONF_q[19], ACP_CONF_q[18], ACP_CONF_q[17], ACP_CONF_q[16]} - <= ACP_CONF_d[23:16]; - - assign ACP_CONF[15:8] = ACP_CONF_q[15:8]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF8_ena_ctrl) - {ACP_CONF_q[15], ACP_CONF_q[14], ACP_CONF_q[13], ACP_CONF_q[12], - ACP_CONF_q[11], ACP_CONF_q[10], ACP_CONF_q[9], ACP_CONF_q[8]} <= - ACP_CONF_d[15:8]; - - assign ACP_CONF[7:0] = ACP_CONF_q[7:0]; - always @(posedge ACP_CONF0_clk_ctrl) - if (ACP_CONF0_ena_ctrl) - {ACP_CONF_q[7], ACP_CONF_q[6], ACP_CONF_q[5], ACP_CONF_q[4], - ACP_CONF_q[3], ACP_CONF_q[2], ACP_CONF_q[1], ACP_CONF_q[0]} <= - ACP_CONF_d[7:0]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR24_ena_ctrl) - {INT_CTR_q[31], INT_CTR_q[30], INT_CTR_q[29], INT_CTR_q[28], - INT_CTR_q[27], INT_CTR_q[26], INT_CTR_q[25], INT_CTR_q[24]} <= - INT_CTR_d[31:24]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR16_ena_ctrl) - {INT_CTR_q[23], INT_CTR_q[22], INT_CTR_q[21], INT_CTR_q[20], - INT_CTR_q[19], INT_CTR_q[18], INT_CTR_q[17], INT_CTR_q[16]} <= - INT_CTR_d[23:16]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR8_ena_ctrl) - {INT_CTR_q[15], INT_CTR_q[14], INT_CTR_q[13], INT_CTR_q[12], - INT_CTR_q[11], INT_CTR_q[10], INT_CTR_q[9], INT_CTR_q[8]} <= - INT_CTR_d[15:8]; - - always @(posedge INT_CTR0_clk_ctrl) - if (INT_CTR0_ena_ctrl) - {INT_CTR_q[7], INT_CTR_q[6], INT_CTR_q[5], INT_CTR_q[4], INT_CTR_q[3], - INT_CTR_q[2], INT_CTR_q[1], INT_CTR_q[0]} <= INT_CTR_d[7:0]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH31_clrn) - if (!INT_LATCH31_clrn) - INT_LATCH_q[31] <= 1'h0; - else - INT_LATCH_q[31] <= INT_LATCH_d[31]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH30_clrn) - if (!INT_LATCH30_clrn) - INT_LATCH_q[30] <= 1'h0; - else - INT_LATCH_q[30] <= INT_LATCH_d[30]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH29_clrn) - if (!INT_LATCH29_clrn) - INT_LATCH_q[29] <= 1'h0; - else - INT_LATCH_q[29] <= INT_LATCH_d[29]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH28_clrn) - if (!INT_LATCH28_clrn) - INT_LATCH_q[28] <= 1'h0; - else - INT_LATCH_q[28] <= INT_LATCH_d[28]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH27_clrn) - if (!INT_LATCH27_clrn) - INT_LATCH_q[27] <= 1'h0; - else - INT_LATCH_q[27] <= INT_LATCH_d[27]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH26_clrn) - if (!INT_LATCH26_clrn) - INT_LATCH_q[26] <= 1'h0; - else - INT_LATCH_q[26] <= INT_LATCH_d[26]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH25_clrn) - if (!INT_LATCH25_clrn) - INT_LATCH_q[25] <= 1'h0; - else - INT_LATCH_q[25] <= INT_LATCH_d[25]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH24_clrn) - if (!INT_LATCH24_clrn) - INT_LATCH_q[24] <= 1'h0; - else - INT_LATCH_q[24] <= INT_LATCH_d[24]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH23_clrn) - if (!INT_LATCH23_clrn) - INT_LATCH_q[23] <= 1'h0; - else - INT_LATCH_q[23] <= INT_LATCH_d[23]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH22_clrn) - if (!INT_LATCH22_clrn) - INT_LATCH_q[22] <= 1'h0; - else - INT_LATCH_q[22] <= INT_LATCH_d[22]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH21_clrn) - if (!INT_LATCH21_clrn) - INT_LATCH_q[21] <= 1'h0; - else - INT_LATCH_q[21] <= INT_LATCH_d[21]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH20_clrn) - if (!INT_LATCH20_clrn) - INT_LATCH_q[20] <= 1'h0; - else - INT_LATCH_q[20] <= INT_LATCH_d[20]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH19_clrn) - if (!INT_LATCH19_clrn) - INT_LATCH_q[19] <= 1'h0; - else - INT_LATCH_q[19] <= INT_LATCH_d[19]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH18_clrn) - if (!INT_LATCH18_clrn) - INT_LATCH_q[18] <= 1'h0; - else - INT_LATCH_q[18] <= INT_LATCH_d[18]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH17_clrn) - if (!INT_LATCH17_clrn) - INT_LATCH_q[17] <= 1'h0; - else - INT_LATCH_q[17] <= INT_LATCH_d[17]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH16_clrn) - if (!INT_LATCH16_clrn) - INT_LATCH_q[16] <= 1'h0; - else - INT_LATCH_q[16] <= INT_LATCH_d[16]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH15_clrn) - if (!INT_LATCH15_clrn) - INT_LATCH_q[15] <= 1'h0; - else - INT_LATCH_q[15] <= INT_LATCH_d[15]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH14_clrn) - if (!INT_LATCH14_clrn) - INT_LATCH_q[14] <= 1'h0; - else - INT_LATCH_q[14] <= INT_LATCH_d[14]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH13_clrn) - if (!INT_LATCH13_clrn) - INT_LATCH_q[13] <= 1'h0; - else - INT_LATCH_q[13] <= INT_LATCH_d[13]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH12_clrn) - if (!INT_LATCH12_clrn) - INT_LATCH_q[12] <= 1'h0; - else - INT_LATCH_q[12] <= INT_LATCH_d[12]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH11_clrn) - if (!INT_LATCH11_clrn) - INT_LATCH_q[11] <= 1'h0; - else - INT_LATCH_q[11] <= INT_LATCH_d[11]; - - always @(posedge INT_LATCH_clk or negedge INT_LATCH10_clrn) - if (!INT_LATCH10_clrn) - INT_LATCH_q[10] <= 1'h0; - else - INT_LATCH_q[10] <= INT_LATCH_d[10]; - - always @(posedge INT_LATCH9_clk_1 or negedge INT_LATCH9_clrn) - if (!INT_LATCH9_clrn) - INT_LATCH_q[9] <= 1'h0; - else - INT_LATCH_q[9] <= INT_LATCH_d[9]; - - always @(posedge INT_LATCH8_clk_1 or negedge INT_LATCH8_clrn) - if (!INT_LATCH8_clrn) - INT_LATCH_q[8] <= 1'h0; - else - INT_LATCH_q[8] <= INT_LATCH_d[8]; - - always @(posedge INT_LATCH7_clk_1 or negedge INT_LATCH7_clrn) - if (!INT_LATCH7_clrn) - INT_LATCH_q[7] <= 1'h0; - else - INT_LATCH_q[7] <= INT_LATCH_d[7]; - - always @(posedge INT_LATCH6_clk_1 or negedge INT_LATCH6_clrn) - if (!INT_LATCH6_clrn) - INT_LATCH_q[6] <= 1'h0; - else - INT_LATCH_q[6] <= INT_LATCH_d[6]; - - always @(posedge INT_LATCH5_clk_1 or negedge INT_LATCH5_clrn) - if (!INT_LATCH5_clrn) - INT_LATCH_q[5] <= 1'h0; - else - INT_LATCH_q[5] <= INT_LATCH_d[5]; - - always @(posedge INT_LATCH4_clk_1 or negedge INT_LATCH4_clrn) - if (!INT_LATCH4_clrn) - INT_LATCH_q[4] <= 1'h0; - else - INT_LATCH_q[4] <= INT_LATCH_d[4]; - - always @(posedge INT_LATCH3_clk_1 or negedge INT_LATCH3_clrn) - if (!INT_LATCH3_clrn) - INT_LATCH_q[3] <= 1'h0; - else - INT_LATCH_q[3] <= INT_LATCH_d[3]; - - always @(posedge INT_LATCH2_clk_1 or negedge INT_LATCH2_clrn) - if (!INT_LATCH2_clrn) - INT_LATCH_q[2] <= 1'h0; - else - INT_LATCH_q[2] <= INT_LATCH_d[2]; - - always @(posedge INT_LATCH1_clk_1 or negedge INT_LATCH1_clrn) - if (!INT_LATCH1_clrn) - INT_LATCH_q[1] <= 1'h0; - else - INT_LATCH_q[1] <= INT_LATCH_d[1]; - - always @(posedge INT_LATCH0_clk_1 or negedge INT_LATCH0_clrn) - if (!INT_LATCH0_clrn) - INT_LATCH_q[0] <= 1'h0; - else - INT_LATCH_q[0] <= INT_LATCH_d[0]; - - always @(posedge INT_CLEAR0_clk_ctrl) - INT_CLEAR_q <= INT_CLEAR_d; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA24_ena_ctrl) - {INT_ENA_q[31], INT_ENA_q[30], INT_ENA_q[29], INT_ENA_q[28], - INT_ENA_q[27], INT_ENA_q[26], INT_ENA_q[25], INT_ENA_q[24]} <= - INT_ENA_d[31:24]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA16_ena_ctrl) - {INT_ENA_q[23], INT_ENA_q[22], INT_ENA_q[21], INT_ENA_q[20], - INT_ENA_q[19], INT_ENA_q[18], INT_ENA_q[17], INT_ENA_q[16]} <= - INT_ENA_d[23:16]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA8_ena_ctrl) - {INT_ENA_q[15], INT_ENA_q[14], INT_ENA_q[13], INT_ENA_q[12], - INT_ENA_q[11], INT_ENA_q[10], INT_ENA_q[9], INT_ENA_q[8]} <= - INT_ENA_d[15:8]; - - always @(posedge INT_ENA0_clk_ctrl) - if (INT_ENA0_ena_ctrl) - {INT_ENA_q[7], INT_ENA_q[6], INT_ENA_q[5], INT_ENA_q[4], INT_ENA_q[3], - INT_ENA_q[2], INT_ENA_q[1], INT_ENA_q[0]} <= INT_ENA_d[7:0]; - - always @(posedge RTC_ADR0_clk_ctrl) - if (RTC_ADR0_ena_ctrl) - RTC_ADR_q <= RTC_ADR_d; - - always @(posedge ACHTELSEKUNDEN0_clk_ctrl) - if (ACHTELSEKUNDEN0_ena_ctrl) - ACHTELSEKUNDEN_q <= ACHTELSEKUNDEN_d; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE7__q[63] <= WERTE7__d[63]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE7__q[62] <= WERTE7__d[62]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE7__q[61] <= WERTE7__d[61]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE7__q[60] <= WERTE7__d[60]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE7__q[59] <= WERTE7__d[59]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE7__q[58] <= WERTE7__d[58]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE7__q[57] <= WERTE7__d[57]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE7__q[56] <= WERTE7__d[56]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE7__q[55] <= WERTE7__d[55]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE7__q[54] <= WERTE7__d[54]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE7__q[53] <= WERTE7__d[53]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE7__q[52] <= WERTE7__d[52]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE7__q[51] <= WERTE7__d[51]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE7__q[50] <= WERTE7__d[50]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE7__q[49] <= WERTE7__d[49]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE7__q[48] <= WERTE7__d[48]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE7__q[47] <= WERTE7__d[47]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE7__q[46] <= WERTE7__d[46]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE7__q[45] <= WERTE7__d[45]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE7__q[44] <= WERTE7__d[44]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE7__q[43] <= WERTE7__d[43]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE7__q[42] <= WERTE7__d[42]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE7__q[41] <= WERTE7__d[41]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE7__q[40] <= WERTE7__d[40]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE7__q[39] <= WERTE7__d[39]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE7__q[38] <= WERTE7__d[38]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE7__q[37] <= WERTE7__d[37]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE7__q[36] <= WERTE7__d[36]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE7__q[35] <= WERTE7__d[35]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE7__q[34] <= WERTE7__d[34]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE7__q[33] <= WERTE7__d[33]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE7__q[32] <= WERTE7__d[32]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE7__q[31] <= WERTE7__d[31]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE7__q[30] <= WERTE7__d[30]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE7__q[29] <= WERTE7__d[29]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE7__q[28] <= WERTE7__d[28]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE7__q[27] <= WERTE7__d[27]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE7__q[26] <= WERTE7__d[26]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE7__q[25] <= WERTE7__d[25]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE7__q[24] <= WERTE7__d[24]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE7__q[23] <= WERTE7__d[23]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE7__q[22] <= WERTE7__d[22]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE7__q[21] <= WERTE7__d[21]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE7__q[20] <= WERTE7__d[20]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE7__q[19] <= WERTE7__d[19]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE7__q[18] <= WERTE7__d[18]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE7__q[17] <= WERTE7__d[17]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE7__q[16] <= WERTE7__d[16]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE7__q[15] <= WERTE7__d[15]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE7__q[14] <= WERTE7__d[14]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_13_ena) - WERTE7__q[13] <= WERTE7__d[13]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE7__q[12] <= WERTE7__d[12]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE7__q[11] <= WERTE7__d[11]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE7__q[10] <= WERTE7__d[10]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_9_ena) - WERTE7__q[9] <= WERTE7__d[9]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_8_ena) - WERTE7__q[8] <= WERTE7__d[8]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_7_ena) - WERTE7__q[7] <= WERTE7__d[7]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_6_ena) - WERTE7__q[6] <= WERTE7__d[6]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE7__q[5] <= WERTE7__d[5]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_4_ena) - WERTE7__q[4] <= WERTE7__d[4]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE7__q[3] <= WERTE7__d[3]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_2_ena) - WERTE7__q[2] <= WERTE7__d[2]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE7__q[1] <= WERTE7__d[1]; - - always @(posedge WERTE7_0_clk_ctrl) - if (WERTE7_0_ena) - WERTE7__q[0] <= WERTE7__d[0]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE6__q[63] <= WERTE6__d[63]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE6__q[62] <= WERTE6__d[62]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE6__q[61] <= WERTE6__d[61]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE6__q[60] <= WERTE6__d[60]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE6__q[59] <= WERTE6__d[59]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE6__q[58] <= WERTE6__d[58]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE6__q[57] <= WERTE6__d[57]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE6__q[56] <= WERTE6__d[56]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE6__q[55] <= WERTE6__d[55]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE6__q[54] <= WERTE6__d[54]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE6__q[53] <= WERTE6__d[53]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE6__q[52] <= WERTE6__d[52]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE6__q[51] <= WERTE6__d[51]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE6__q[50] <= WERTE6__d[50]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE6__q[49] <= WERTE6__d[49]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE6__q[48] <= WERTE6__d[48]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE6__q[47] <= WERTE6__d[47]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE6__q[46] <= WERTE6__d[46]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE6__q[45] <= WERTE6__d[45]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE6__q[44] <= WERTE6__d[44]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE6__q[43] <= WERTE6__d[43]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE6__q[42] <= WERTE6__d[42]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE6__q[41] <= WERTE6__d[41]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE6__q[40] <= WERTE6__d[40]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE6__q[39] <= WERTE6__d[39]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE6__q[38] <= WERTE6__d[38]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE6__q[37] <= WERTE6__d[37]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE6__q[36] <= WERTE6__d[36]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE6__q[35] <= WERTE6__d[35]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE6__q[34] <= WERTE6__d[34]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE6__q[33] <= WERTE6__d[33]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE6__q[32] <= WERTE6__d[32]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE6__q[31] <= WERTE6__d[31]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE6__q[30] <= WERTE6__d[30]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE6__q[29] <= WERTE6__d[29]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE6__q[28] <= WERTE6__d[28]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE6__q[27] <= WERTE6__d[27]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE6__q[26] <= WERTE6__d[26]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE6__q[25] <= WERTE6__d[25]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE6__q[24] <= WERTE6__d[24]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE6__q[23] <= WERTE6__d[23]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE6__q[22] <= WERTE6__d[22]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE6__q[21] <= WERTE6__d[21]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE6__q[20] <= WERTE6__d[20]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE6__q[19] <= WERTE6__d[19]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE6__q[18] <= WERTE6__d[18]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE6__q[17] <= WERTE6__d[17]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE6__q[16] <= WERTE6__d[16]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE6__q[15] <= WERTE6__d[15]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE6__q[14] <= WERTE6__d[14]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_13_ena) - WERTE6__q[13] <= WERTE6__d[13]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE6__q[12] <= WERTE6__d[12]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE6__q[11] <= WERTE6__d[11]; - - always @(posedge WERTE6_0_clk_ctrl or negedge WERTE6_10_clrn) - if (!WERTE6_10_clrn) - WERTE6__q[10] <= 1'h0; - else - if (WERTE0_10_ena_ctrl) - WERTE6__q[10] <= WERTE6__d[10]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_9_ena) - WERTE6__q[9] <= WERTE6__d[9]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_8_ena) - WERTE6__q[8] <= WERTE6__d[8]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_7_ena) - WERTE6__q[7] <= WERTE6__d[7]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_6_ena) - WERTE6__q[6] <= WERTE6__d[6]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE6__q[5] <= WERTE6__d[5]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_4_ena) - WERTE6__q[4] <= WERTE6__d[4]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE6__q[3] <= WERTE6__d[3]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_2_ena) - WERTE6__q[2] <= WERTE6__d[2]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE6__q[1] <= WERTE6__d[1]; - - always @(posedge WERTE6_0_clk_ctrl) - if (WERTE6_0_ena) - WERTE6__q[0] <= WERTE6__d[0]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE5__q[63] <= WERTE5__d[63]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE5__q[62] <= WERTE5__d[62]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE5__q[61] <= WERTE5__d[61]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE5__q[60] <= WERTE5__d[60]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE5__q[59] <= WERTE5__d[59]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE5__q[58] <= WERTE5__d[58]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE5__q[57] <= WERTE5__d[57]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE5__q[56] <= WERTE5__d[56]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE5__q[55] <= WERTE5__d[55]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE5__q[54] <= WERTE5__d[54]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE5__q[53] <= WERTE5__d[53]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE5__q[52] <= WERTE5__d[52]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE5__q[51] <= WERTE5__d[51]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE5__q[50] <= WERTE5__d[50]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE5__q[49] <= WERTE5__d[49]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE5__q[48] <= WERTE5__d[48]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE5__q[47] <= WERTE5__d[47]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE5__q[46] <= WERTE5__d[46]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE5__q[45] <= WERTE5__d[45]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE5__q[44] <= WERTE5__d[44]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE5__q[43] <= WERTE5__d[43]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE5__q[42] <= WERTE5__d[42]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE5__q[41] <= WERTE5__d[41]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE5__q[40] <= WERTE5__d[40]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE5__q[39] <= WERTE5__d[39]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE5__q[38] <= WERTE5__d[38]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE5__q[37] <= WERTE5__d[37]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE5__q[36] <= WERTE5__d[36]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE5__q[35] <= WERTE5__d[35]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE5__q[34] <= WERTE5__d[34]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE5__q[33] <= WERTE5__d[33]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE5__q[32] <= WERTE5__d[32]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE5__q[31] <= WERTE5__d[31]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE5__q[30] <= WERTE5__d[30]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE5__q[29] <= WERTE5__d[29]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE5__q[28] <= WERTE5__d[28]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE5__q[27] <= WERTE5__d[27]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE5__q[26] <= WERTE5__d[26]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE5__q[25] <= WERTE5__d[25]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE5__q[24] <= WERTE5__d[24]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE5__q[23] <= WERTE5__d[23]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE5__q[22] <= WERTE5__d[22]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE5__q[21] <= WERTE5__d[21]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE5__q[20] <= WERTE5__d[20]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE5__q[19] <= WERTE5__d[19]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE5__q[18] <= WERTE5__d[18]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE5__q[17] <= WERTE5__d[17]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE5__q[16] <= WERTE5__d[16]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE5__q[15] <= WERTE5__d[15]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE5__q[14] <= WERTE5__d[14]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_13_ena) - WERTE5__q[13] <= WERTE5__d[13]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE5__q[12] <= WERTE5__d[12]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE5__q[11] <= WERTE5__d[11]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE5__q[10] <= WERTE5__d[10]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_9_ena) - WERTE5__q[9] <= WERTE5__d[9]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_8_ena) - WERTE5__q[8] <= WERTE5__d[8]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_7_ena) - WERTE5__q[7] <= WERTE5__d[7]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_6_ena) - WERTE5__q[6] <= WERTE5__d[6]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE5__q[5] <= WERTE5__d[5]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_4_ena) - WERTE5__q[4] <= WERTE5__d[4]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE5__q[3] <= WERTE5__d[3]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_2_ena) - WERTE5__q[2] <= WERTE5__d[2]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE5__q[1] <= WERTE5__d[1]; - - always @(posedge WERTE5_0_clk_ctrl) - if (WERTE5_0_ena) - WERTE5__q[0] <= WERTE5__d[0]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE4__q[63] <= WERTE4__d[63]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE4__q[62] <= WERTE4__d[62]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE4__q[61] <= WERTE4__d[61]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE4__q[60] <= WERTE4__d[60]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE4__q[59] <= WERTE4__d[59]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE4__q[58] <= WERTE4__d[58]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE4__q[57] <= WERTE4__d[57]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE4__q[56] <= WERTE4__d[56]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE4__q[55] <= WERTE4__d[55]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE4__q[54] <= WERTE4__d[54]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE4__q[53] <= WERTE4__d[53]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE4__q[52] <= WERTE4__d[52]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE4__q[51] <= WERTE4__d[51]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE4__q[50] <= WERTE4__d[50]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE4__q[49] <= WERTE4__d[49]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE4__q[48] <= WERTE4__d[48]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE4__q[47] <= WERTE4__d[47]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE4__q[46] <= WERTE4__d[46]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE4__q[45] <= WERTE4__d[45]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE4__q[44] <= WERTE4__d[44]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE4__q[43] <= WERTE4__d[43]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE4__q[42] <= WERTE4__d[42]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE4__q[41] <= WERTE4__d[41]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE4__q[40] <= WERTE4__d[40]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE4__q[39] <= WERTE4__d[39]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE4__q[38] <= WERTE4__d[38]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE4__q[37] <= WERTE4__d[37]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE4__q[36] <= WERTE4__d[36]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE4__q[35] <= WERTE4__d[35]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE4__q[34] <= WERTE4__d[34]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE4__q[33] <= WERTE4__d[33]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE4__q[32] <= WERTE4__d[32]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE4__q[31] <= WERTE4__d[31]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE4__q[30] <= WERTE4__d[30]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE4__q[29] <= WERTE4__d[29]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE4__q[28] <= WERTE4__d[28]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE4__q[27] <= WERTE4__d[27]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE4__q[26] <= WERTE4__d[26]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE4__q[25] <= WERTE4__d[25]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE4__q[24] <= WERTE4__d[24]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE4__q[23] <= WERTE4__d[23]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE4__q[22] <= WERTE4__d[22]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE4__q[21] <= WERTE4__d[21]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE4__q[20] <= WERTE4__d[20]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE4__q[19] <= WERTE4__d[19]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE4__q[18] <= WERTE4__d[18]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE4__q[17] <= WERTE4__d[17]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE4__q[16] <= WERTE4__d[16]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE4__q[15] <= WERTE4__d[15]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE4__q[14] <= WERTE4__d[14]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_13_ena) - WERTE4__q[13] <= WERTE4__d[13]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE4__q[12] <= WERTE4__d[12]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE4__q[11] <= WERTE4__d[11]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE4__q[10] <= WERTE4__d[10]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_9_ena) - WERTE4__q[9] <= WERTE4__d[9]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_8_ena) - WERTE4__q[8] <= WERTE4__d[8]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_7_ena) - WERTE4__q[7] <= WERTE4__d[7]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_6_ena) - WERTE4__q[6] <= WERTE4__d[6]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE4__q[5] <= WERTE4__d[5]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_4_ena) - WERTE4__q[4] <= WERTE4__d[4]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE4__q[3] <= WERTE4__d[3]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_2_ena) - WERTE4__q[2] <= WERTE4__d[2]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE4__q[1] <= WERTE4__d[1]; - - always @(posedge WERTE4_0_clk_ctrl) - if (WERTE4_0_ena) - WERTE4__q[0] <= WERTE4__d[0]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE3__q[63] <= WERTE3__d[63]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE3__q[62] <= WERTE3__d[62]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE3__q[61] <= WERTE3__d[61]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE3__q[60] <= WERTE3__d[60]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE3__q[59] <= WERTE3__d[59]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE3__q[58] <= WERTE3__d[58]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE3__q[57] <= WERTE3__d[57]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE3__q[56] <= WERTE3__d[56]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE3__q[55] <= WERTE3__d[55]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE3__q[54] <= WERTE3__d[54]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE3__q[53] <= WERTE3__d[53]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE3__q[52] <= WERTE3__d[52]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE3__q[51] <= WERTE3__d[51]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE3__q[50] <= WERTE3__d[50]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE3__q[49] <= WERTE3__d[49]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE3__q[48] <= WERTE3__d[48]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE3__q[47] <= WERTE3__d[47]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE3__q[46] <= WERTE3__d[46]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE3__q[45] <= WERTE3__d[45]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE3__q[44] <= WERTE3__d[44]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE3__q[43] <= WERTE3__d[43]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE3__q[42] <= WERTE3__d[42]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE3__q[41] <= WERTE3__d[41]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE3__q[40] <= WERTE3__d[40]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE3__q[39] <= WERTE3__d[39]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE3__q[38] <= WERTE3__d[38]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE3__q[37] <= WERTE3__d[37]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE3__q[36] <= WERTE3__d[36]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE3__q[35] <= WERTE3__d[35]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE3__q[34] <= WERTE3__d[34]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE3__q[33] <= WERTE3__d[33]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE3__q[32] <= WERTE3__d[32]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE3__q[31] <= WERTE3__d[31]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE3__q[30] <= WERTE3__d[30]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE3__q[29] <= WERTE3__d[29]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE3__q[28] <= WERTE3__d[28]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE3__q[27] <= WERTE3__d[27]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE3__q[26] <= WERTE3__d[26]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE3__q[25] <= WERTE3__d[25]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE3__q[24] <= WERTE3__d[24]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE3__q[23] <= WERTE3__d[23]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE3__q[22] <= WERTE3__d[22]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE3__q[21] <= WERTE3__d[21]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE3__q[20] <= WERTE3__d[20]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE3__q[19] <= WERTE3__d[19]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE3__q[18] <= WERTE3__d[18]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE3__q[17] <= WERTE3__d[17]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE3__q[16] <= WERTE3__d[16]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE3__q[15] <= WERTE3__d[15]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE3__q[14] <= WERTE3__d[14]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_13_ena) - WERTE3__q[13] <= WERTE3__d[13]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE3__q[12] <= WERTE3__d[12]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE3__q[11] <= WERTE3__d[11]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE3__q[10] <= WERTE3__d[10]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_9_ena) - WERTE3__q[9] <= WERTE3__d[9]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_8_ena) - WERTE3__q[8] <= WERTE3__d[8]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_7_ena) - WERTE3__q[7] <= WERTE3__d[7]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_6_ena) - WERTE3__q[6] <= WERTE3__d[6]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE3__q[5] <= WERTE3__d[5]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_4_ena) - WERTE3__q[4] <= WERTE3__d[4]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE3__q[3] <= WERTE3__d[3]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_2_ena) - WERTE3__q[2] <= WERTE3__d[2]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE3__q[1] <= WERTE3__d[1]; - - always @(posedge WERTE3_0_clk_ctrl) - if (WERTE3_0_ena) - WERTE3__q[0] <= WERTE3__d[0]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE2__q[63] <= WERTE2__d[63]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE2__q[62] <= WERTE2__d[62]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE2__q[61] <= WERTE2__d[61]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE2__q[60] <= WERTE2__d[60]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE2__q[59] <= WERTE2__d[59]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE2__q[58] <= WERTE2__d[58]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE2__q[57] <= WERTE2__d[57]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE2__q[56] <= WERTE2__d[56]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE2__q[55] <= WERTE2__d[55]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE2__q[54] <= WERTE2__d[54]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE2__q[53] <= WERTE2__d[53]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE2__q[52] <= WERTE2__d[52]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE2__q[51] <= WERTE2__d[51]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE2__q[50] <= WERTE2__d[50]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE2__q[49] <= WERTE2__d[49]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE2__q[48] <= WERTE2__d[48]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE2__q[47] <= WERTE2__d[47]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE2__q[46] <= WERTE2__d[46]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE2__q[45] <= WERTE2__d[45]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE2__q[44] <= WERTE2__d[44]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE2__q[43] <= WERTE2__d[43]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE2__q[42] <= WERTE2__d[42]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE2__q[41] <= WERTE2__d[41]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE2__q[40] <= WERTE2__d[40]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE2__q[39] <= WERTE2__d[39]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE2__q[38] <= WERTE2__d[38]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE2__q[37] <= WERTE2__d[37]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE2__q[36] <= WERTE2__d[36]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE2__q[35] <= WERTE2__d[35]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE2__q[34] <= WERTE2__d[34]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE2__q[33] <= WERTE2__d[33]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE2__q[32] <= WERTE2__d[32]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE2__q[31] <= WERTE2__d[31]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE2__q[30] <= WERTE2__d[30]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE2__q[29] <= WERTE2__d[29]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE2__q[28] <= WERTE2__d[28]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE2__q[27] <= WERTE2__d[27]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE2__q[26] <= WERTE2__d[26]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE2__q[25] <= WERTE2__d[25]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE2__q[24] <= WERTE2__d[24]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE2__q[23] <= WERTE2__d[23]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE2__q[22] <= WERTE2__d[22]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE2__q[21] <= WERTE2__d[21]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE2__q[20] <= WERTE2__d[20]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE2__q[19] <= WERTE2__d[19]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE2__q[18] <= WERTE2__d[18]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE2__q[17] <= WERTE2__d[17]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE2__q[16] <= WERTE2__d[16]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE2__q[15] <= WERTE2__d[15]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE2__q[14] <= WERTE2__d[14]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_13_ena) - WERTE2__q[13] <= WERTE2__d[13]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE2__q[12] <= WERTE2__d[12]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE2__q[11] <= WERTE2__d[11]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE2__q[10] <= WERTE2__d[10]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_9_ena) - WERTE2__q[9] <= WERTE2__d[9]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_8_ena) - WERTE2__q[8] <= WERTE2__d[8]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_7_ena) - WERTE2__q[7] <= WERTE2__d[7]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_6_ena) - WERTE2__q[6] <= WERTE2__d[6]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE2__q[5] <= WERTE2__d[5]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_4_ena) - WERTE2__q[4] <= WERTE2__d[4]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE2__q[3] <= WERTE2__d[3]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_2_ena) - WERTE2__q[2] <= WERTE2__d[2]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE2__q[1] <= WERTE2__d[1]; - - always @(posedge WERTE2_0_clk_ctrl) - if (WERTE2_0_ena) - WERTE2__q[0] <= WERTE2__d[0]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE1__q[63] <= WERTE1__d[63]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE1__q[62] <= WERTE1__d[62]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE1__q[61] <= WERTE1__d[61]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE1__q[60] <= WERTE1__d[60]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE1__q[59] <= WERTE1__d[59]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE1__q[58] <= WERTE1__d[58]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE1__q[57] <= WERTE1__d[57]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE1__q[56] <= WERTE1__d[56]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE1__q[55] <= WERTE1__d[55]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE1__q[54] <= WERTE1__d[54]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE1__q[53] <= WERTE1__d[53]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE1__q[52] <= WERTE1__d[52]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE1__q[51] <= WERTE1__d[51]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE1__q[50] <= WERTE1__d[50]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE1__q[49] <= WERTE1__d[49]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE1__q[48] <= WERTE1__d[48]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE1__q[47] <= WERTE1__d[47]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE1__q[46] <= WERTE1__d[46]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE1__q[45] <= WERTE1__d[45]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE1__q[44] <= WERTE1__d[44]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE1__q[43] <= WERTE1__d[43]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE1__q[42] <= WERTE1__d[42]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE1__q[41] <= WERTE1__d[41]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE1__q[40] <= WERTE1__d[40]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE1__q[39] <= WERTE1__d[39]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE1__q[38] <= WERTE1__d[38]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE1__q[37] <= WERTE1__d[37]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE1__q[36] <= WERTE1__d[36]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE1__q[35] <= WERTE1__d[35]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE1__q[34] <= WERTE1__d[34]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE1__q[33] <= WERTE1__d[33]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE1__q[32] <= WERTE1__d[32]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE1__q[31] <= WERTE1__d[31]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE1__q[30] <= WERTE1__d[30]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE1__q[29] <= WERTE1__d[29]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE1__q[28] <= WERTE1__d[28]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE1__q[27] <= WERTE1__d[27]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE1__q[26] <= WERTE1__d[26]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE1__q[25] <= WERTE1__d[25]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE1__q[24] <= WERTE1__d[24]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE1__q[23] <= WERTE1__d[23]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE1__q[22] <= WERTE1__d[22]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE1__q[21] <= WERTE1__d[21]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE1__q[20] <= WERTE1__d[20]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE1__q[19] <= WERTE1__d[19]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE1__q[18] <= WERTE1__d[18]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE1__q[17] <= WERTE1__d[17]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE1__q[16] <= WERTE1__d[16]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE1__q[15] <= WERTE1__d[15]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE1__q[14] <= WERTE1__d[14]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_13_ena) - WERTE1__q[13] <= WERTE1__d[13]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE1__q[12] <= WERTE1__d[12]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE1__q[11] <= WERTE1__d[11]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE1__q[10] <= WERTE1__d[10]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_9_ena) - WERTE1__q[9] <= WERTE1__d[9]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_8_ena) - WERTE1__q[8] <= WERTE1__d[8]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_7_ena) - WERTE1__q[7] <= WERTE1__d[7]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_6_ena) - WERTE1__q[6] <= WERTE1__d[6]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE1__q[5] <= WERTE1__d[5]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_4_ena) - WERTE1__q[4] <= WERTE1__d[4]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE1__q[3] <= WERTE1__d[3]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_2_ena) - WERTE1__q[2] <= WERTE1__d[2]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE1__q[1] <= WERTE1__d[1]; - - always @(posedge WERTE1_0_clk_ctrl) - if (WERTE1_0_ena) - WERTE1__q[0] <= WERTE1__d[0]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_63_ena_ctrl) - WERTE0__q[63] <= WERTE0__d[63]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_62_ena_ctrl) - WERTE0__q[62] <= WERTE0__d[62]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_61_ena_ctrl) - WERTE0__q[61] <= WERTE0__d[61]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_60_ena_ctrl) - WERTE0__q[60] <= WERTE0__d[60]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_59_ena_ctrl) - WERTE0__q[59] <= WERTE0__d[59]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_58_ena_ctrl) - WERTE0__q[58] <= WERTE0__d[58]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_57_ena_ctrl) - WERTE0__q[57] <= WERTE0__d[57]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_56_ena_ctrl) - WERTE0__q[56] <= WERTE0__d[56]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_55_ena_ctrl) - WERTE0__q[55] <= WERTE0__d[55]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_54_ena_ctrl) - WERTE0__q[54] <= WERTE0__d[54]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_53_ena_ctrl) - WERTE0__q[53] <= WERTE0__d[53]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_52_ena_ctrl) - WERTE0__q[52] <= WERTE0__d[52]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_51_ena_ctrl) - WERTE0__q[51] <= WERTE0__d[51]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_50_ena_ctrl) - WERTE0__q[50] <= WERTE0__d[50]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_49_ena_ctrl) - WERTE0__q[49] <= WERTE0__d[49]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_48_ena_ctrl) - WERTE0__q[48] <= WERTE0__d[48]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_47_ena_ctrl) - WERTE0__q[47] <= WERTE0__d[47]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_46_ena_ctrl) - WERTE0__q[46] <= WERTE0__d[46]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_45_ena_ctrl) - WERTE0__q[45] <= WERTE0__d[45]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_44_ena_ctrl) - WERTE0__q[44] <= WERTE0__d[44]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_43_ena_ctrl) - WERTE0__q[43] <= WERTE0__d[43]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_42_ena_ctrl) - WERTE0__q[42] <= WERTE0__d[42]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_41_ena_ctrl) - WERTE0__q[41] <= WERTE0__d[41]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_40_ena_ctrl) - WERTE0__q[40] <= WERTE0__d[40]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_39_ena_ctrl) - WERTE0__q[39] <= WERTE0__d[39]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_38_ena_ctrl) - WERTE0__q[38] <= WERTE0__d[38]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_37_ena_ctrl) - WERTE0__q[37] <= WERTE0__d[37]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_36_ena_ctrl) - WERTE0__q[36] <= WERTE0__d[36]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_35_ena_ctrl) - WERTE0__q[35] <= WERTE0__d[35]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_34_ena_ctrl) - WERTE0__q[34] <= WERTE0__d[34]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_33_ena_ctrl) - WERTE0__q[33] <= WERTE0__d[33]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_32_ena_ctrl) - WERTE0__q[32] <= WERTE0__d[32]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_31_ena_ctrl) - WERTE0__q[31] <= WERTE0__d[31]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_30_ena_ctrl) - WERTE0__q[30] <= WERTE0__d[30]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_29_ena_ctrl) - WERTE0__q[29] <= WERTE0__d[29]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_28_ena_ctrl) - WERTE0__q[28] <= WERTE0__d[28]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_27_ena_ctrl) - WERTE0__q[27] <= WERTE0__d[27]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_26_ena_ctrl) - WERTE0__q[26] <= WERTE0__d[26]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_25_ena_ctrl) - WERTE0__q[25] <= WERTE0__d[25]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_24_ena_ctrl) - WERTE0__q[24] <= WERTE0__d[24]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_23_ena_ctrl) - WERTE0__q[23] <= WERTE0__d[23]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_22_ena_ctrl) - WERTE0__q[22] <= WERTE0__d[22]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_21_ena_ctrl) - WERTE0__q[21] <= WERTE0__d[21]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_20_ena_ctrl) - WERTE0__q[20] <= WERTE0__d[20]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_19_ena_ctrl) - WERTE0__q[19] <= WERTE0__d[19]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_18_ena_ctrl) - WERTE0__q[18] <= WERTE0__d[18]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_17_ena_ctrl) - WERTE0__q[17] <= WERTE0__d[17]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_16_ena_ctrl) - WERTE0__q[16] <= WERTE0__d[16]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_15_ena_ctrl) - WERTE0__q[15] <= WERTE0__d[15]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_14_ena_ctrl) - WERTE0__q[14] <= WERTE0__d[14]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_13_ena) - WERTE0__q[13] <= WERTE0__d[13]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_12_ena_ctrl) - WERTE0__q[12] <= WERTE0__d[12]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_11_ena_ctrl) - WERTE0__q[11] <= WERTE0__d[11]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_10_ena_ctrl) - WERTE0__q[10] <= WERTE0__d[10]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_9_ena) - WERTE0__q[9] <= WERTE0__d[9]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_8_ena) - WERTE0__q[8] <= WERTE0__d[8]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_7_ena) - WERTE0__q[7] <= WERTE0__d[7]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_6_ena) - WERTE0__q[6] <= WERTE0__d[6]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_5_ena_ctrl) - WERTE0__q[5] <= WERTE0__d[5]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_4_ena) - WERTE0__q[4] <= WERTE0__d[4]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_3_ena_ctrl) - WERTE0__q[3] <= WERTE0__d[3]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_2_ena) - WERTE0__q[2] <= WERTE0__d[2]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_1_ena_ctrl) - WERTE0__q[1] <= WERTE0__d[1]; - - always @(posedge WERTE0_0_clk_ctrl) - if (WERTE0_0_ena) - WERTE0__q[0] <= WERTE0__d[0]; - - always @(posedge PIC_INT_SYNC0_clk_ctrl) - PIC_INT_SYNC_q <= PIC_INT_SYNC_d; - -// Start of original equations - -// BYT SELECT -// HWORD -// HHBYT -// LONG UND LINE - assign FB_B[0] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & - FB_SIZE0 & (!FB_ADR[1]) & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) - | (FB_SIZE1 & FB_SIZE0); - -// HWORD -// HLBYT -// LONG UND LINE - assign FB_B[1] = (FB_SIZE1 & (!FB_SIZE0) & (!FB_ADR[1])) | ((!FB_SIZE1) & - FB_SIZE0 & (!FB_ADR[1]) & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// LWORD -// LHBYT -// LONG UND LINE - assign FB_B[2] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & - FB_SIZE0 & FB_ADR[1] & (!FB_ADR[0])) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// LWORD -// LLBYT -// LONG UND LINE - assign FB_B[3] = (FB_SIZE1 & (!FB_SIZE0) & FB_ADR[1]) | ((!FB_SIZE1) & - FB_SIZE0 & FB_ADR[1] & FB_ADR[0]) | ((!FB_SIZE1) & (!FB_SIZE0)) | - (FB_SIZE1 & FB_SIZE0); - -// INTERRUPT CONTROL REGISTER: BIT0=INT5 AUSLÖSEN, 1=INT7 AUSLÖSEN - assign INT_CTR0_clk_ctrl = MAIN_CLK; - -// $10000/4 - assign INT_CTR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4000; - assign INT_CTR_d = FB_AD; - assign INT_CTR24_ena_ctrl = INT_CTR_CS & FB_B[0] & (!nFB_WR); - assign INT_CTR16_ena_ctrl = INT_CTR_CS & FB_B[1] & (!nFB_WR); - assign INT_CTR8_ena_ctrl = INT_CTR_CS & FB_B[2] & (!nFB_WR); - assign INT_CTR0_ena_ctrl = INT_CTR_CS & FB_B[3] & (!nFB_WR); - -// INTERRUPT ENABLE REGISTER BIT31=INT7,30=INT6,29=INT5,28=INT4,27=INT3,26=INT2 - assign INT_ENA0_clk_ctrl = MAIN_CLK; - -// $10004/4 - assign INT_ENA_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4001; - assign INT_ENA_d = FB_AD; - assign INT_ENA24_ena_ctrl = INT_ENA_CS & FB_B[0] & (!nFB_WR); - assign INT_ENA16_ena_ctrl = INT_ENA_CS & FB_B[1] & (!nFB_WR); - assign INT_ENA8_ena_ctrl = INT_ENA_CS & FB_B[2] & (!nFB_WR); - assign INT_ENA0_ena_ctrl = INT_ENA_CS & FB_B[3] & (!nFB_WR); - -// INTERRUPT CLEAR REGISTER WRITE ONLY 1=INTERRUPT CLEAR - assign INT_CLEAR0_clk_ctrl = MAIN_CLK; - -// $10008/4 - assign INT_CLEAR_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4002; - assign INT_CLEAR_d[31:24] = FB_AD[31:24] & {8{INT_CLEAR_CS}} & {8{FB_B[0]}} - & {8{!nFB_WR}}; - assign INT_CLEAR_d[23:16] = FB_AD[23:16] & {8{INT_CLEAR_CS}} & {8{FB_B[1]}} - & {8{!nFB_WR}}; - assign INT_CLEAR_d[15:8] = FB_AD[15:8] & {8{INT_CLEAR_CS}} & {8{FB_B[2]}} & - {8{!nFB_WR}}; - assign INT_CLEAR_d[7:0] = FB_AD[7:0] & {8{INT_CLEAR_CS}} & {8{FB_B[3]}} & - {8{!nFB_WR}}; - -// INTERRUPT LATCH REGISTER READ ONLY -// $1000C/4 - assign INT_LATCH_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h4003; - -// INTERRUPT - assign nIRQ[2] = !(HSYNC & INT_ENA_q[26]); - assign nIRQ[3] = !(INT_CTR_q[0] & INT_ENA_q[27]); - assign nIRQ[4] = !(VSYNC & INT_ENA_q[28]); - assign nIRQ[5] = INT_LATCH_q == 32'h0 & INT_ENA_q[29]; - assign nIRQ[6] = !((!nMFP_INT) & INT_ENA_q[30]); - assign nIRQ[7] = !(PSEUDO_BUS_ERROR & INT_ENA_q[31]); - -// SCC -// VME -// PADDLE -// PADDLE -// PADDLE -// MFP2 -// MFP2 -// MFP2 -// MFP2 -// TT SCSI -// ST UHR -// ST UHR -// DMA SOUND -// DMA SOUND -// DMA SOUND - assign PSEUDO_BUS_ERROR = (!nFB_CS1) & (FB_ADR[19:4] == 16'hF8C8 | - FB_ADR[19:4] == 16'hF8E0 | FB_ADR[19:4] == 16'hF920 | FB_ADR[19:4] == - 16'hF921 | FB_ADR[19:4] == 16'hF922 | FB_ADR[19:4] == 16'hFFA8 | - FB_ADR[19:4] == 16'hFFA9 | FB_ADR[19:4] == 16'hFFAA | FB_ADR[19:4] == - 16'hFFA8 | FB_ADR[19:8] == 12'b1111_1000_0111 | FB_ADR[19:4] == - 16'hFFC2 | FB_ADR[19:4] == 16'hFFC3 | FB_ADR[19:4] == 16'hF890 | - FB_ADR[19:4] == 16'hF891 | FB_ADR[19:4] == 16'hF892); - -// IF VIDEO ADR CHANGE -// WRITE VIDEO BASE ADR HIGH 0xFFFF8201/2 - assign TIN0 = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C100 & (!nFB_WR); - -// INTERRUPT LATCH - assign INT_LATCH_d = 32'hFFFF_FFFF; - assign INT_LATCH0_clk_1 = PIC_INT & INT_ENA_q[0]; - assign INT_LATCH1_clk_1 = E0_INT & INT_ENA_q[1]; - assign INT_LATCH2_clk_1 = DVI_INT & INT_ENA_q[2]; - assign INT_LATCH3_clk_1 = (!nPCI_INTA) & INT_ENA_q[3]; - assign INT_LATCH4_clk_1 = (!nPCI_INTB) & INT_ENA_q[4]; - assign INT_LATCH5_clk_1 = (!nPCI_INTC) & INT_ENA_q[5]; - assign INT_LATCH6_clk_1 = (!nPCI_INTD) & INT_ENA_q[6]; - assign INT_LATCH7_clk_1 = DSP_INT & INT_ENA_q[7]; - assign INT_LATCH8_clk_1 = VSYNC & INT_ENA_q[8]; - assign INT_LATCH9_clk_1 = HSYNC & INT_ENA_q[9]; - -// INTERRUPT CLEAR - assign {INT_LATCH31_clrn, INT_LATCH30_clrn, INT_LATCH29_clrn, - INT_LATCH28_clrn, INT_LATCH27_clrn, INT_LATCH26_clrn, - INT_LATCH25_clrn, INT_LATCH24_clrn, INT_LATCH23_clrn, - INT_LATCH22_clrn, INT_LATCH21_clrn, INT_LATCH20_clrn, - INT_LATCH19_clrn, INT_LATCH18_clrn, INT_LATCH17_clrn, - INT_LATCH16_clrn, INT_LATCH15_clrn, INT_LATCH14_clrn, - INT_LATCH13_clrn, INT_LATCH12_clrn, INT_LATCH11_clrn, - INT_LATCH10_clrn, INT_LATCH9_clrn, INT_LATCH8_clrn, INT_LATCH7_clrn, - INT_LATCH6_clrn, INT_LATCH5_clrn, INT_LATCH4_clrn, INT_LATCH3_clrn, - INT_LATCH2_clrn, INT_LATCH1_clrn, INT_LATCH0_clrn} = ~INT_CLEAR_q; - -// INT_IN - assign INT_IN[0] = PIC_INT; - assign INT_IN[1] = E0_INT; - assign INT_IN[2] = DVI_INT; - assign INT_IN[3] = !nPCI_INTA; - assign INT_IN[4] = !nPCI_INTB; - assign INT_IN[5] = !nPCI_INTC; - assign INT_IN[6] = !nPCI_INTD; - assign INT_IN[7] = DSP_INT; - assign INT_IN[8] = VSYNC; - assign INT_IN[9] = HSYNC; - assign INT_IN[25:10] = 16'h0; - assign INT_IN[26] = HSYNC; - assign INT_IN[27] = INT_CTR_q[0]; - assign INT_IN[28] = VSYNC; - assign INT_IN[29] = INT_LATCH_q != 32'h0; - assign INT_IN[30] = !nMFP_INT; - assign INT_IN[31] = DMA_DRQ; - -// *************************************************************************************** -// ACP CONFIG REGISTER: BIT 31-> 0=CF 1=IDE - assign ACP_CONF0_clk_ctrl = MAIN_CLK; - -// $4'0000/4 - assign ACP_CONF_CS = (!nFB_CS2) & FB_ADR[27:2] == 26'h1_0000; - assign ACP_CONF_d = FB_AD; - assign ACP_CONF24_ena_ctrl = ACP_CONF_CS & FB_B[0] & (!nFB_WR); - assign ACP_CONF16_ena_ctrl = ACP_CONF_CS & FB_B[1] & (!nFB_WR); - assign ACP_CONF8_ena_ctrl = ACP_CONF_CS & FB_B[2] & (!nFB_WR); - assign ACP_CONF0_ena_ctrl = ACP_CONF_CS & FB_B[3] & (!nFB_WR); - -// *************************************************************************************** -// ------------------------------------------------------------ -// C1287 0=SEK 2=MIN 4=STD 6=WOCHENTAG 7=TAG 8=MONAT 9=JAHR -// -------------------------------------------------------- - assign RTC_ADR0_clk_ctrl = MAIN_CLK; - assign RTC_ADR_d = FB_AD[21:16]; - -// FFFF8961 - assign UHR_AS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B0 & FB_B[1]; - -// FFFF8963 - assign UHR_DS = (!nFB_CS1) & FB_ADR[19:1] == 19'h7_C4B1 & FB_B[3]; - assign RTC_ADR0_ena_ctrl = UHR_AS & (!nFB_WR); - assign WERTE7_0_clk_ctrl = MAIN_CLK; - assign WERTE6_0_clk_ctrl = MAIN_CLK; - assign WERTE5_0_clk_ctrl = MAIN_CLK; - assign WERTE4_0_clk_ctrl = MAIN_CLK; - assign WERTE3_0_clk_ctrl = MAIN_CLK; - assign WERTE2_0_clk_ctrl = MAIN_CLK; - assign WERTE1_0_clk_ctrl = MAIN_CLK; - assign WERTE0_0_clk_ctrl = MAIN_CLK; - assign {WERTE7_0_d_1, WERTE6_0_d_1, WERTE5_0_d_1, WERTE4_0_d_1, - WERTE3_0_d_1, WERTE2_0_d_1, WERTE1_0_d_1, WERTE0_0_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[1], WERTE6__d[1], WERTE5__d[1], WERTE4__d[1], - WERTE3__d[1], WERTE2__d[1], WERTE1__d[1], WERTE0__d[1]} = - FB_AD[23:16]; - assign {WERTE7_2_d_1, WERTE6_2_d_1, WERTE5_2_d_1, WERTE4_2_d_1, - WERTE3_2_d_1, WERTE2_2_d_1, WERTE1_2_d_1, WERTE0_2_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[3], WERTE6__d[3], WERTE5__d[3], WERTE4__d[3], - WERTE3__d[3], WERTE2__d[3], WERTE1__d[3], WERTE0__d[3]} = - FB_AD[23:16]; - assign {WERTE7_4_d_1, WERTE6_4_d_1, WERTE5_4_d_1, WERTE4_4_d_1, - WERTE3_4_d_1, WERTE2_4_d_1, WERTE1_4_d_1, WERTE0_4_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[5], WERTE6__d[5], WERTE5__d[5], WERTE4__d[5], - WERTE3__d[5], WERTE2__d[5], WERTE1__d[5], WERTE0__d[5]} = - FB_AD[23:16]; - assign {WERTE7_6_d_1, WERTE6_6_d_1, WERTE5_6_d_1, WERTE4_6_d_1, - WERTE3_6_d_1, WERTE2_6_d_1, WERTE1_6_d_1, WERTE0_6_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_7_d_1, WERTE6_7_d_1, WERTE5_7_d_1, WERTE4_7_d_1, - WERTE3_7_d_1, WERTE2_7_d_1, WERTE1_7_d_1, WERTE0_7_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_8_d_1, WERTE6_8_d_1, WERTE5_8_d_1, WERTE4_8_d_1, - WERTE3_8_d_1, WERTE2_8_d_1, WERTE1_8_d_1, WERTE0_8_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_9_d_1, WERTE6_9_d_1, WERTE5_9_d_1, WERTE4_9_d_1, - WERTE3_9_d_1, WERTE2_9_d_1, WERTE1_9_d_1, WERTE0_9_d_1} = FB_AD[23:16] - & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7__d[10], WERTE6__d[10], WERTE5__d[10], WERTE4__d[10], - WERTE3__d[10], WERTE2__d[10], WERTE1__d[10], WERTE0__d[10]} = - FB_AD[23:16]; - assign {WERTE7__d[11], WERTE6__d[11], WERTE5__d[11], WERTE4__d[11], - WERTE3__d[11], WERTE2_11_d_1, WERTE1_11_d_1, WERTE0_11_d_1} = - FB_AD[23:16]; - assign {WERTE7__d[12], WERTE6__d[12], WERTE5__d[12], WERTE4__d[12], - WERTE3__d[12], WERTE2__d[12], WERTE1__d[12], WERTE0__d[12]} = - FB_AD[23:16]; - assign {WERTE7_13_d_1, WERTE6__d[13], WERTE5__d[13], WERTE4__d[13], - WERTE3__d[13], WERTE2__d[13], WERTE1__d[13], WERTE0_13_d_1} = - FB_AD[23:16]; - assign {WERTE7__d[14], WERTE6__d[14], WERTE5__d[14], WERTE4__d[14], - WERTE3__d[14], WERTE2__d[14], WERTE1__d[14], WERTE0__d[14]} = - FB_AD[23:16]; - assign {WERTE7__d[15], WERTE6__d[15], WERTE5__d[15], WERTE4__d[15], - WERTE3__d[15], WERTE2__d[15], WERTE1__d[15], WERTE0__d[15]} = - FB_AD[23:16]; - assign {WERTE7__d[16], WERTE6__d[16], WERTE5__d[16], WERTE4__d[16], - WERTE3__d[16], WERTE2__d[16], WERTE1__d[16], WERTE0__d[16]} = - FB_AD[23:16]; - assign {WERTE7__d[17], WERTE6__d[17], WERTE5__d[17], WERTE4__d[17], - WERTE3__d[17], WERTE2__d[17], WERTE1__d[17], WERTE0__d[17]} = - FB_AD[23:16]; - assign {WERTE7__d[18], WERTE6__d[18], WERTE5__d[18], WERTE4__d[18], - WERTE3__d[18], WERTE2__d[18], WERTE1__d[18], WERTE0__d[18]} = - FB_AD[23:16]; - assign {WERTE7__d[19], WERTE6__d[19], WERTE5__d[19], WERTE4__d[19], - WERTE3__d[19], WERTE2__d[19], WERTE1__d[19], WERTE0__d[19]} = - FB_AD[23:16]; - assign {WERTE7__d[20], WERTE6__d[20], WERTE5__d[20], WERTE4__d[20], - WERTE3__d[20], WERTE2__d[20], WERTE1__d[20], WERTE0__d[20]} = - FB_AD[23:16]; - assign {WERTE7__d[21], WERTE6__d[21], WERTE5__d[21], WERTE4__d[21], - WERTE3__d[21], WERTE2__d[21], WERTE1__d[21], WERTE0__d[21]} = - FB_AD[23:16]; - assign {WERTE7__d[22], WERTE6__d[22], WERTE5__d[22], WERTE4__d[22], - WERTE3__d[22], WERTE2__d[22], WERTE1__d[22], WERTE0__d[22]} = - FB_AD[23:16]; - assign {WERTE7__d[23], WERTE6__d[23], WERTE5__d[23], WERTE4__d[23], - WERTE3__d[23], WERTE2__d[23], WERTE1__d[23], WERTE0__d[23]} = - FB_AD[23:16]; - assign {WERTE7__d[24], WERTE6__d[24], WERTE5__d[24], WERTE4__d[24], - WERTE3__d[24], WERTE2__d[24], WERTE1__d[24], WERTE0__d[24]} = - FB_AD[23:16]; - assign {WERTE7__d[25], WERTE6__d[25], WERTE5__d[25], WERTE4__d[25], - WERTE3__d[25], WERTE2__d[25], WERTE1__d[25], WERTE0__d[25]} = - FB_AD[23:16]; - assign {WERTE7__d[26], WERTE6__d[26], WERTE5__d[26], WERTE4__d[26], - WERTE3__d[26], WERTE2__d[26], WERTE1__d[26], WERTE0__d[26]} = - FB_AD[23:16]; - assign {WERTE7__d[27], WERTE6__d[27], WERTE5__d[27], WERTE4__d[27], - WERTE3__d[27], WERTE2__d[27], WERTE1__d[27], WERTE0__d[27]} = - FB_AD[23:16]; - assign {WERTE7__d[28], WERTE6__d[28], WERTE5__d[28], WERTE4__d[28], - WERTE3__d[28], WERTE2__d[28], WERTE1__d[28], WERTE0__d[28]} = - FB_AD[23:16]; - assign {WERTE7__d[29], WERTE6__d[29], WERTE5__d[29], WERTE4__d[29], - WERTE3__d[29], WERTE2__d[29], WERTE1__d[29], WERTE0__d[29]} = - FB_AD[23:16]; - assign {WERTE7__d[30], WERTE6__d[30], WERTE5__d[30], WERTE4__d[30], - WERTE3__d[30], WERTE2__d[30], WERTE1__d[30], WERTE0__d[30]} = - FB_AD[23:16]; - assign {WERTE7__d[31], WERTE6__d[31], WERTE5__d[31], WERTE4__d[31], - WERTE3__d[31], WERTE2__d[31], WERTE1__d[31], WERTE0__d[31]} = - FB_AD[23:16]; - assign {WERTE7__d[32], WERTE6__d[32], WERTE5__d[32], WERTE4__d[32], - WERTE3__d[32], WERTE2__d[32], WERTE1__d[32], WERTE0__d[32]} = - FB_AD[23:16]; - assign {WERTE7__d[33], WERTE6__d[33], WERTE5__d[33], WERTE4__d[33], - WERTE3__d[33], WERTE2__d[33], WERTE1__d[33], WERTE0__d[33]} = - FB_AD[23:16]; - assign {WERTE7__d[34], WERTE6__d[34], WERTE5__d[34], WERTE4__d[34], - WERTE3__d[34], WERTE2__d[34], WERTE1__d[34], WERTE0__d[34]} = - FB_AD[23:16]; - assign {WERTE7__d[35], WERTE6__d[35], WERTE5__d[35], WERTE4__d[35], - WERTE3__d[35], WERTE2__d[35], WERTE1__d[35], WERTE0__d[35]} = - FB_AD[23:16]; - assign {WERTE7__d[36], WERTE6__d[36], WERTE5__d[36], WERTE4__d[36], - WERTE3__d[36], WERTE2__d[36], WERTE1__d[36], WERTE0__d[36]} = - FB_AD[23:16]; - assign {WERTE7__d[37], WERTE6__d[37], WERTE5__d[37], WERTE4__d[37], - WERTE3__d[37], WERTE2__d[37], WERTE1__d[37], WERTE0__d[37]} = - FB_AD[23:16]; - assign {WERTE7__d[38], WERTE6__d[38], WERTE5__d[38], WERTE4__d[38], - WERTE3__d[38], WERTE2__d[38], WERTE1__d[38], WERTE0__d[38]} = - FB_AD[23:16]; - assign {WERTE7__d[39], WERTE6__d[39], WERTE5__d[39], WERTE4__d[39], - WERTE3__d[39], WERTE2__d[39], WERTE1__d[39], WERTE0__d[39]} = - FB_AD[23:16]; - assign {WERTE7__d[40], WERTE6__d[40], WERTE5__d[40], WERTE4__d[40], - WERTE3__d[40], WERTE2__d[40], WERTE1__d[40], WERTE0__d[40]} = - FB_AD[23:16]; - assign {WERTE7__d[41], WERTE6__d[41], WERTE5__d[41], WERTE4__d[41], - WERTE3__d[41], WERTE2__d[41], WERTE1__d[41], WERTE0__d[41]} = - FB_AD[23:16]; - assign {WERTE7__d[42], WERTE6__d[42], WERTE5__d[42], WERTE4__d[42], - WERTE3__d[42], WERTE2__d[42], WERTE1__d[42], WERTE0__d[42]} = - FB_AD[23:16]; - assign {WERTE7__d[43], WERTE6__d[43], WERTE5__d[43], WERTE4__d[43], - WERTE3__d[43], WERTE2__d[43], WERTE1__d[43], WERTE0__d[43]} = - FB_AD[23:16]; - assign {WERTE7__d[44], WERTE6__d[44], WERTE5__d[44], WERTE4__d[44], - WERTE3__d[44], WERTE2__d[44], WERTE1__d[44], WERTE0__d[44]} = - FB_AD[23:16]; - assign {WERTE7__d[45], WERTE6__d[45], WERTE5__d[45], WERTE4__d[45], - WERTE3__d[45], WERTE2__d[45], WERTE1__d[45], WERTE0__d[45]} = - FB_AD[23:16]; - assign {WERTE7__d[46], WERTE6__d[46], WERTE5__d[46], WERTE4__d[46], - WERTE3__d[46], WERTE2__d[46], WERTE1__d[46], WERTE0__d[46]} = - FB_AD[23:16]; - assign {WERTE7__d[47], WERTE6__d[47], WERTE5__d[47], WERTE4__d[47], - WERTE3__d[47], WERTE2__d[47], WERTE1__d[47], WERTE0__d[47]} = - FB_AD[23:16]; - assign {WERTE7__d[48], WERTE6__d[48], WERTE5__d[48], WERTE4__d[48], - WERTE3__d[48], WERTE2__d[48], WERTE1__d[48], WERTE0__d[48]} = - FB_AD[23:16]; - assign {WERTE7__d[49], WERTE6__d[49], WERTE5__d[49], WERTE4__d[49], - WERTE3__d[49], WERTE2__d[49], WERTE1__d[49], WERTE0__d[49]} = - FB_AD[23:16]; - assign {WERTE7__d[50], WERTE6__d[50], WERTE5__d[50], WERTE4__d[50], - WERTE3__d[50], WERTE2__d[50], WERTE1__d[50], WERTE0__d[50]} = - FB_AD[23:16]; - assign {WERTE7__d[51], WERTE6__d[51], WERTE5__d[51], WERTE4__d[51], - WERTE3__d[51], WERTE2__d[51], WERTE1__d[51], WERTE0__d[51]} = - FB_AD[23:16]; - assign {WERTE7__d[52], WERTE6__d[52], WERTE5__d[52], WERTE4__d[52], - WERTE3__d[52], WERTE2__d[52], WERTE1__d[52], WERTE0__d[52]} = - FB_AD[23:16]; - assign {WERTE7__d[53], WERTE6__d[53], WERTE5__d[53], WERTE4__d[53], - WERTE3__d[53], WERTE2__d[53], WERTE1__d[53], WERTE0__d[53]} = - FB_AD[23:16]; - assign {WERTE7__d[54], WERTE6__d[54], WERTE5__d[54], WERTE4__d[54], - WERTE3__d[54], WERTE2__d[54], WERTE1__d[54], WERTE0__d[54]} = - FB_AD[23:16]; - assign {WERTE7__d[55], WERTE6__d[55], WERTE5__d[55], WERTE4__d[55], - WERTE3__d[55], WERTE2__d[55], WERTE1__d[55], WERTE0__d[55]} = - FB_AD[23:16]; - assign {WERTE7__d[56], WERTE6__d[56], WERTE5__d[56], WERTE4__d[56], - WERTE3__d[56], WERTE2__d[56], WERTE1__d[56], WERTE0__d[56]} = - FB_AD[23:16]; - assign {WERTE7__d[57], WERTE6__d[57], WERTE5__d[57], WERTE4__d[57], - WERTE3__d[57], WERTE2__d[57], WERTE1__d[57], WERTE0__d[57]} = - FB_AD[23:16]; - assign {WERTE7__d[58], WERTE6__d[58], WERTE5__d[58], WERTE4__d[58], - WERTE3__d[58], WERTE2__d[58], WERTE1__d[58], WERTE0__d[58]} = - FB_AD[23:16]; - assign {WERTE7__d[59], WERTE6__d[59], WERTE5__d[59], WERTE4__d[59], - WERTE3__d[59], WERTE2__d[59], WERTE1__d[59], WERTE0__d[59]} = - FB_AD[23:16]; - assign {WERTE7__d[60], WERTE6__d[60], WERTE5__d[60], WERTE4__d[60], - WERTE3__d[60], WERTE2__d[60], WERTE1__d[60], WERTE0__d[60]} = - FB_AD[23:16]; - assign {WERTE7__d[61], WERTE6__d[61], WERTE5__d[61], WERTE4__d[61], - WERTE3__d[61], WERTE2__d[61], WERTE1__d[61], WERTE0__d[61]} = - FB_AD[23:16]; - assign {WERTE7__d[62], WERTE6__d[62], WERTE5__d[62], WERTE4__d[62], - WERTE3__d[62], WERTE2__d[62], WERTE1__d[62], WERTE0__d[62]} = - FB_AD[23:16]; - assign {WERTE7__d[63], WERTE6__d[63], WERTE5__d[63], WERTE4__d[63], - WERTE3__d[63], WERTE2__d[63], WERTE1__d[63], WERTE0__d[63]} = - FB_AD[23:16]; - assign {WERTE7_0_ena_1, WERTE6_0_ena_1, WERTE5_0_ena_1, WERTE4_0_ena_1, - WERTE3_0_ena_1, WERTE2_0_ena_1, WERTE1_0_ena_1, WERTE0_0_ena_1} = - {8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_1_ena_ctrl = RTC_ADR_q == 6'b00_0001 & UHR_DS & (!nFB_WR); - assign {WERTE7_2_ena_1, WERTE6_2_ena_1, WERTE5_2_ena_1, WERTE4_2_ena_1, - WERTE3_2_ena_1, WERTE2_2_ena_1, WERTE1_2_ena_1, WERTE0_2_ena_1} = - {8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_3_ena_ctrl = RTC_ADR_q == 6'b00_0011 & UHR_DS & (!nFB_WR); - assign {WERTE7_4_ena_1, WERTE6_4_ena_1, WERTE5_4_ena_1, WERTE4_4_ena_1, - WERTE3_4_ena_1, WERTE2_4_ena_1, WERTE1_4_ena_1, WERTE0_4_ena_1} = - {8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_5_ena_ctrl = RTC_ADR_q == 6'b00_0101 & UHR_DS & (!nFB_WR); - assign {WERTE7_6_ena_1, WERTE6_6_ena_1, WERTE5_6_ena_1, WERTE4_6_ena_1, - WERTE3_6_ena_1, WERTE2_6_ena_1, WERTE1_6_ena_1, WERTE0_6_ena_1} = - {8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_7_ena_1, WERTE6_7_ena_1, WERTE5_7_ena_1, WERTE4_7_ena_1, - WERTE3_7_ena_1, WERTE2_7_ena_1, WERTE1_7_ena_1, WERTE0_7_ena_1} = - {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_8_ena_1, WERTE6_8_ena_1, WERTE5_8_ena_1, WERTE4_8_ena_1, - WERTE3_8_ena_1, WERTE2_8_ena_1, WERTE1_8_ena_1, WERTE0_8_ena_1} = - {8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign {WERTE7_9_ena_1, WERTE6_9_ena_1, WERTE5_9_ena_1, WERTE4_9_ena_1, - WERTE3_9_ena_1, WERTE2_9_ena_1, WERTE1_9_ena_1, WERTE0_9_ena_1} = - {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_10_ena_ctrl = RTC_ADR_q == 6'b00_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_11_ena_ctrl = RTC_ADR_q == 6'b00_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_12_ena_ctrl = RTC_ADR_q == 6'b00_1100 & UHR_DS & (!nFB_WR); - assign {WERTE7_13_ena, WERTE6_13_ena, WERTE5_13_ena, WERTE4_13_ena, - WERTE3_13_ena, WERTE2_13_ena, WERTE1_13_ena, WERTE0_13_ena_1} = - {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}} & {8{!nFB_WR}}; - assign WERTE0_14_ena_ctrl = RTC_ADR_q == 6'b00_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_15_ena_ctrl = RTC_ADR_q == 6'b00_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_16_ena_ctrl = RTC_ADR_q == 6'b01_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_17_ena_ctrl = RTC_ADR_q == 6'b01_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_18_ena_ctrl = RTC_ADR_q == 6'b01_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_19_ena_ctrl = RTC_ADR_q == 6'b01_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_20_ena_ctrl = RTC_ADR_q == 6'b01_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_21_ena_ctrl = RTC_ADR_q == 6'b01_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_22_ena_ctrl = RTC_ADR_q == 6'b01_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_23_ena_ctrl = RTC_ADR_q == 6'b01_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_24_ena_ctrl = RTC_ADR_q == 6'b01_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_25_ena_ctrl = RTC_ADR_q == 6'b01_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_26_ena_ctrl = RTC_ADR_q == 6'b01_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_27_ena_ctrl = RTC_ADR_q == 6'b01_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_28_ena_ctrl = RTC_ADR_q == 6'b01_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_29_ena_ctrl = RTC_ADR_q == 6'b01_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_30_ena_ctrl = RTC_ADR_q == 6'b01_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_31_ena_ctrl = RTC_ADR_q == 6'b01_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_32_ena_ctrl = RTC_ADR_q == 6'b10_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_33_ena_ctrl = RTC_ADR_q == 6'b10_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_34_ena_ctrl = RTC_ADR_q == 6'b10_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_35_ena_ctrl = RTC_ADR_q == 6'b10_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_36_ena_ctrl = RTC_ADR_q == 6'b10_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_37_ena_ctrl = RTC_ADR_q == 6'b10_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_38_ena_ctrl = RTC_ADR_q == 6'b10_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_39_ena_ctrl = RTC_ADR_q == 6'b10_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_40_ena_ctrl = RTC_ADR_q == 6'b10_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_41_ena_ctrl = RTC_ADR_q == 6'b10_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_42_ena_ctrl = RTC_ADR_q == 6'b10_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_43_ena_ctrl = RTC_ADR_q == 6'b10_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_44_ena_ctrl = RTC_ADR_q == 6'b10_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_45_ena_ctrl = RTC_ADR_q == 6'b10_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_46_ena_ctrl = RTC_ADR_q == 6'b10_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_47_ena_ctrl = RTC_ADR_q == 6'b10_1111 & UHR_DS & (!nFB_WR); - assign WERTE0_48_ena_ctrl = RTC_ADR_q == 6'b11_0000 & UHR_DS & (!nFB_WR); - assign WERTE0_49_ena_ctrl = RTC_ADR_q == 6'b11_0001 & UHR_DS & (!nFB_WR); - assign WERTE0_50_ena_ctrl = RTC_ADR_q == 6'b11_0010 & UHR_DS & (!nFB_WR); - assign WERTE0_51_ena_ctrl = RTC_ADR_q == 6'b11_0011 & UHR_DS & (!nFB_WR); - assign WERTE0_52_ena_ctrl = RTC_ADR_q == 6'b11_0100 & UHR_DS & (!nFB_WR); - assign WERTE0_53_ena_ctrl = RTC_ADR_q == 6'b11_0101 & UHR_DS & (!nFB_WR); - assign WERTE0_54_ena_ctrl = RTC_ADR_q == 6'b11_0110 & UHR_DS & (!nFB_WR); - assign WERTE0_55_ena_ctrl = RTC_ADR_q == 6'b11_0111 & UHR_DS & (!nFB_WR); - assign WERTE0_56_ena_ctrl = RTC_ADR_q == 6'b11_1000 & UHR_DS & (!nFB_WR); - assign WERTE0_57_ena_ctrl = RTC_ADR_q == 6'b11_1001 & UHR_DS & (!nFB_WR); - assign WERTE0_58_ena_ctrl = RTC_ADR_q == 6'b11_1010 & UHR_DS & (!nFB_WR); - assign WERTE0_59_ena_ctrl = RTC_ADR_q == 6'b11_1011 & UHR_DS & (!nFB_WR); - assign WERTE0_60_ena_ctrl = RTC_ADR_q == 6'b11_1100 & UHR_DS & (!nFB_WR); - assign WERTE0_61_ena_ctrl = RTC_ADR_q == 6'b11_1101 & UHR_DS & (!nFB_WR); - assign WERTE0_62_ena_ctrl = RTC_ADR_q == 6'b11_1110 & UHR_DS & (!nFB_WR); - assign WERTE0_63_ena_ctrl = RTC_ADR_q == 6'b11_1111 & UHR_DS & (!nFB_WR); - assign PIC_INT_SYNC0_clk_ctrl = MAIN_CLK; - assign PIC_INT_SYNC_d[0] = PIC_INT; - assign PIC_INT_SYNC_d[1] = PIC_INT_SYNC_q[0]; - assign PIC_INT_SYNC_d[2] = (!PIC_INT_SYNC_q[1]) & PIC_INT_SYNC_q[0]; - assign UPDATE_ON_1 = !WERTE7__q[11]; - -// KEIN UIP - assign WERTE6_10_clrn = gnd; - -// UPDATE ON OFF - assign UPDATE_ON_2 = !WERTE7__q[11]; - -// IMMER BINARY - assign WERTE2_11_d_2 = vcc; - -// IMMER 24H FORMAT - assign WERTE1_11_d_2 = vcc; - -// IMMER SOMMERZEITKORREKTUR - assign WERTE0_11_d_2 = vcc; - -// IMMER RICHTIG - assign WERTE7_13_d_2 = vcc; - -// SOMMER WINTERZEIT: BIT 0 IM REGISTER D IST DIE INFORMATION OB SOMMERZEIT IST (BRAUCHT MAN FÜR RÜCKSCHALTUNG) -// LETZTER SONNTAG IM APRIL - assign SOMMERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == - 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], - WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} - == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_0100 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - > 8'b0001_0111; - assign WERTE0_13_d_2 = SOMMERZEIT; - assign WERTE0_13_ena_2 = INC_STD & (SOMMERZEIT | WINTERZEIT); - -// LETZTER SONNTAG IM OKTOBER - assign WINTERZEIT = {WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} == - 8'b0000_0001 & {WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], - WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} - == 8'b0000_0001 & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1010 & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - > 8'b0001_1000 & WERTE0__q[13]; - -// ACHTELSEKUNDEN - assign ACHTELSEKUNDEN0_clk_ctrl = MAIN_CLK; - assign ACHTELSEKUNDEN_d = ACHTELSEKUNDEN_q + 3'b001; - assign ACHTELSEKUNDEN0_ena_ctrl = PIC_INT_SYNC_q[2] & UPDATE_ON; - -// SEKUNDEN - assign INC_SEC = ACHTELSEKUNDEN_q == 3'b111 & PIC_INT_SYNC_q[2] & UPDATE_ON; - -// SEKUNDEN ZÄHLEN BIS 59 - assign {WERTE7_0_d_2, WERTE6_0_d_2, WERTE5_0_d_2, WERTE4_0_d_2, - WERTE3_0_d_2, WERTE2_0_d_2, WERTE1_0_d_2, WERTE0_0_d_2} = - ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], - WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} + - 8'b0000_0001) & {8{{WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], - WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} - != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_0_ena_2, WERTE6_0_ena_2, WERTE5_0_ena_2, WERTE4_0_ena_2, - WERTE3_0_ena_2, WERTE2_0_ena_2, WERTE1_0_ena_2, WERTE0_0_ena_2} = - {8{INC_SEC}} & (~({8{RTC_ADR_q == 6'b00_0000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// MINUTEN - assign INC_MIN = INC_SEC & {WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], - WERTE4__q[0], WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} - == 8'b0011_1011; - -// MINUTEN ZÄHLEN BIS 59 - assign {WERTE7_2_d_2, WERTE6_2_d_2, WERTE5_2_d_2, WERTE4_2_d_2, - WERTE3_2_d_2, WERTE2_2_d_2, WERTE1_2_d_2, WERTE0_2_d_2} = - ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], - WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} + - 8'b0000_0001) & {8{{WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - != 8'b0011_1011}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_2_ena_2, WERTE6_2_ena_2, WERTE5_2_ena_2, WERTE4_2_ena_2, - WERTE3_2_ena_2, WERTE2_2_ena_2, WERTE1_2_ena_2, WERTE0_2_ena_2} = - {8{INC_MIN}} & (~({8{RTC_ADR_q == 6'b00_0010}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// STUNDEN - assign INC_STD = INC_MIN & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - == 8'b0011_1011; - -// STUNDEN ZÄHLEN BIS 23 - assign {WERTE7_4_d_2, WERTE6_4_d_2, WERTE5_4_d_2, WERTE4_4_d_2, - WERTE3_4_d_2, WERTE2_4_d_2, WERTE1_4_d_2, WERTE0_4_d_2} = - (({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], - WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} + - 8'b0000_0001) + (8'b0000_0001 & {8{SOMMERZEIT}})) & {8{{WERTE7__q[4], - WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], WERTE3__q[4], WERTE2__q[4], - WERTE1__q[4], WERTE0__q[4]} != 8'b0001_0111}} & (~({8{RTC_ADR_q == - 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); - -// EINE STUNDE AUSLASSEN WENN WINTERZEITUMSCHALTUNG UND NOCH SOMMERZEIT - assign {WERTE7_4_ena_2, WERTE6_4_ena_2, WERTE5_4_ena_2, WERTE4_4_ena_2, - WERTE3_4_ena_2, WERTE2_4_ena_2, WERTE1_4_ena_2, WERTE0_4_ena_2} = - {8{INC_STD}} & (~({8{WINTERZEIT}} & {8{WERTE0__q[12]}})) & - (~({8{RTC_ADR_q == 6'b00_0100}} & {8{UHR_DS}} & {8{!nFB_WR}})); - -// WOCHENTAG UND TAG - assign INC_TAG = INC_STD & {WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], - WERTE4__q[2], WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} - == 8'b0001_0111; - -// WOCHENTAG ZÄHLEN BIS 7 -// DANN BEI 1 WEITER - assign {WERTE7_6_d_2, WERTE6_6_d_2, WERTE5_6_d_2, WERTE4_6_d_2, - WERTE3_6_d_2, WERTE2_6_d_2, WERTE1_6_d_2, WERTE0_6_d_2} = - (({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} + - 8'b0000_0001) & {8{{WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], - WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} - != 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & - {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[6], WERTE6__q[6], - WERTE5__q[6], WERTE4__q[6], WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], - WERTE0__q[6]} == 8'b0000_0111}} & (~({8{RTC_ADR_q == 6'b00_0110}} & - {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_6_ena_2, WERTE6_6_ena_2, WERTE5_6_ena_2, WERTE4_6_ena_2, - WERTE3_6_ena_2, WERTE2_6_ena_2, WERTE1_6_ena_2, WERTE0_6_ena_2} = - {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0110}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign ANZAHL_TAGE_DES_MONATS = (8'b0001_1111 & ({8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0001}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0011}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0101}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_0111}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1000}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1010}} | {8{{WERTE7__q[8], - WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], - WERTE1__q[8], WERTE0__q[8]} == 8'b0000_1100}})) | (8'b0001_1110 & - ({8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} == - 8'b0000_0100}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_0110}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1001}} | {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1011}})) | (8'b0001_1101 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} == - 2'b00}}) | (8'b0001_1100 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_0010}} & {8{{WERTE1__q[9], WERTE0__q[9]} != - 2'b00}}); - -// TAG ZÄHLEN BIS MONATSENDE -// DANN BEI 1 WEITER - assign {WERTE7_7_d_2, WERTE6_7_d_2, WERTE5_7_d_2, WERTE4_7_d_2, - WERTE3_7_d_2, WERTE2_7_d_2, WERTE1_7_d_2, WERTE0_7_d_2} = - (({WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], - WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} + - 8'b0000_0001) & {8{{WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - != ANZAHL_TAGE_DES_MONATS}} & (~({8{RTC_ADR_q == 6'b00_0111}} & - {8{UHR_DS}} & {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[7], - WERTE6__q[7], WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], - WERTE1__q[7], WERTE0__q[7]} == ANZAHL_TAGE_DES_MONATS}} & - (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_7_ena_2, WERTE6_7_ena_2, WERTE5_7_ena_2, WERTE4_7_ena_2, - WERTE3_7_ena_2, WERTE2_7_ena_2, WERTE1_7_ena_2, WERTE0_7_ena_2} = - {8{INC_TAG}} & (~({8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// MONATE - assign INC_MONAT = INC_TAG & {WERTE7__q[7], WERTE6__q[7], WERTE5__q[7], - WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], WERTE0__q[7]} - == ANZAHL_TAGE_DES_MONATS; - -// MONATE ZÄHLEN BIS 12 -// DANN BEI 1 WEITER - assign {WERTE7_8_d_2, WERTE6_8_d_2, WERTE5_8_d_2, WERTE4_8_d_2, - WERTE3_8_d_2, WERTE2_8_d_2, WERTE1_8_d_2, WERTE0_8_d_2} = - (({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} + - 8'b0000_0001) & {8{{WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - != 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & - {8{!nFB_WR}}))) | (8'b0000_0001 & {8{{WERTE7__q[8], WERTE6__q[8], - WERTE5__q[8], WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], - WERTE0__q[8]} == 8'b0000_1100}} & (~({8{RTC_ADR_q == 6'b00_1000}} & - {8{UHR_DS}} & {8{!nFB_WR}}))); - assign {WERTE7_8_ena_2, WERTE6_8_ena_2, WERTE5_8_ena_2, WERTE4_8_ena_2, - WERTE3_8_ena_2, WERTE2_8_ena_2, WERTE1_8_ena_2, WERTE0_8_ena_2} = - {8{INC_MONAT}} & (~({8{RTC_ADR_q == 6'b00_1000}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// JAHR - assign INC_JAHR = INC_MONAT & {WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], - WERTE4__q[8], WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} - == 8'b0000_1100; - -// JAHRE ZÄHLEN BIS 99 - assign {WERTE7_9_d_2, WERTE6_9_d_2, WERTE5_9_d_2, WERTE4_9_d_2, - WERTE3_9_d_2, WERTE2_9_d_2, WERTE1_9_d_2, WERTE0_9_d_2} = - ({WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], WERTE4__q[9], - WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} + - 8'b0000_0001) & {8{{WERTE7__q[9], WERTE6__q[9], WERTE5__q[9], - WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], WERTE0__q[9]} - != 8'b0110_0011}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - assign {WERTE7_9_ena_2, WERTE6_9_ena_2, WERTE5_9_ena_2, WERTE4_9_ena_2, - WERTE3_9_ena_2, WERTE2_9_ena_2, WERTE1_9_ena_2, WERTE0_9_ena_2} = - {8{INC_JAHR}} & (~({8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}} & - {8{!nFB_WR}})); - -// TRISTATE OUTPUT - assign u0_data = ({8{INT_CTR_CS}} & INT_CTR_q[31:24]) | ({8{INT_ENA_CS}} & - INT_ENA_q[31:24]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[31:24]) | - ({8{INT_CLEAR_CS}} & INT_IN[31:24]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[31:24]); - assign u0_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[31:24] = u0_tridata; - assign u1_data = ({WERTE7__q[0], WERTE6__q[0], WERTE5__q[0], WERTE4__q[0], - WERTE3__q[0], WERTE2__q[0], WERTE1__q[0], WERTE0__q[0]} & {8{RTC_ADR_q - == 6'b00_0000}} & {8{UHR_DS}}) | ({WERTE7__q[1], WERTE6__q[1], - WERTE5__q[1], WERTE4__q[1], WERTE3__q[1], WERTE2__q[1], WERTE1__q[1], - WERTE0__q[1]} & {8{RTC_ADR_q == 6'b00_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[2], WERTE6__q[2], WERTE5__q[2], WERTE4__q[2], - WERTE3__q[2], WERTE2__q[2], WERTE1__q[2], WERTE0__q[2]} & {8{RTC_ADR_q - == 6'b00_0010}} & {8{UHR_DS}}) | ({WERTE7__q[3], WERTE6__q[3], - WERTE5__q[3], WERTE4__q[3], WERTE3__q[3], WERTE2__q[3], WERTE1__q[3], - WERTE0__q[3]} & {8{RTC_ADR_q == 6'b00_0011}} & {8{UHR_DS}}) | - ({WERTE7__q[4], WERTE6__q[4], WERTE5__q[4], WERTE4__q[4], - WERTE3__q[4], WERTE2__q[4], WERTE1__q[4], WERTE0__q[4]} & {8{RTC_ADR_q - == 6'b00_0100}} & {8{UHR_DS}}) | ({WERTE7__q[5], WERTE6__q[5], - WERTE5__q[5], WERTE4__q[5], WERTE3__q[5], WERTE2__q[5], WERTE1__q[5], - WERTE0__q[5]} & {8{RTC_ADR_q == 6'b00_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[6], WERTE6__q[6], WERTE5__q[6], WERTE4__q[6], - WERTE3__q[6], WERTE2__q[6], WERTE1__q[6], WERTE0__q[6]} & {8{RTC_ADR_q - == 6'b00_0110}} & {8{UHR_DS}}) | ({WERTE7__q[7], WERTE6__q[7], - WERTE5__q[7], WERTE4__q[7], WERTE3__q[7], WERTE2__q[7], WERTE1__q[7], - WERTE0__q[7]} & {8{RTC_ADR_q == 6'b00_0111}} & {8{UHR_DS}}) | - ({WERTE7__q[8], WERTE6__q[8], WERTE5__q[8], WERTE4__q[8], - WERTE3__q[8], WERTE2__q[8], WERTE1__q[8], WERTE0__q[8]} & {8{RTC_ADR_q - == 6'b00_1000}} & {8{UHR_DS}}) | ({WERTE7__q[9], WERTE6__q[9], - WERTE5__q[9], WERTE4__q[9], WERTE3__q[9], WERTE2__q[9], WERTE1__q[9], - WERTE0__q[9]} & {8{RTC_ADR_q == 6'b00_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[10], WERTE6__q[10], WERTE5__q[10], WERTE4__q[10], - WERTE3__q[10], WERTE2__q[10], WERTE1__q[10], WERTE0__q[10]} & - {8{RTC_ADR_q == 6'b00_1010}} & {8{UHR_DS}}) | ({WERTE7__q[11], - WERTE6__q[11], WERTE5__q[11], WERTE4__q[11], WERTE3__q[11], - WERTE2__q[11], WERTE1__q[11], WERTE0__q[11]} & {8{RTC_ADR_q == - 6'b00_1011}} & {8{UHR_DS}}) | ({WERTE7__q[12], WERTE6__q[12], - WERTE5__q[12], WERTE4__q[12], WERTE3__q[12], WERTE2__q[12], - WERTE1__q[12], WERTE0__q[12]} & {8{RTC_ADR_q == 6'b00_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[13], WERTE6__q[13], WERTE5__q[13], - WERTE4__q[13], WERTE3__q[13], WERTE2__q[13], WERTE1__q[13], - WERTE0__q[13]} & {8{RTC_ADR_q == 6'b00_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[14], WERTE6__q[14], WERTE5__q[14], WERTE4__q[14], - WERTE3__q[14], WERTE2__q[14], WERTE1__q[14], WERTE0__q[14]} & - {8{RTC_ADR_q == 6'b00_1110}} & {8{UHR_DS}}) | ({WERTE7__q[15], - WERTE6__q[15], WERTE5__q[15], WERTE4__q[15], WERTE3__q[15], - WERTE2__q[15], WERTE1__q[15], WERTE0__q[15]} & {8{RTC_ADR_q == - 6'b00_1111}} & {8{UHR_DS}}) | ({WERTE7__q[16], WERTE6__q[16], - WERTE5__q[16], WERTE4__q[16], WERTE3__q[16], WERTE2__q[16], - WERTE1__q[16], WERTE0__q[16]} & {8{RTC_ADR_q == 6'b01_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[17], WERTE6__q[17], WERTE5__q[17], - WERTE4__q[17], WERTE3__q[17], WERTE2__q[17], WERTE1__q[17], - WERTE0__q[17]} & {8{RTC_ADR_q == 6'b01_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[18], WERTE6__q[18], WERTE5__q[18], WERTE4__q[18], - WERTE3__q[18], WERTE2__q[18], WERTE1__q[18], WERTE0__q[18]} & - {8{RTC_ADR_q == 6'b01_0010}} & {8{UHR_DS}}) | ({WERTE7__q[19], - WERTE6__q[19], WERTE5__q[19], WERTE4__q[19], WERTE3__q[19], - WERTE2__q[19], WERTE1__q[19], WERTE0__q[19]} & {8{RTC_ADR_q == - 6'b01_0011}} & {8{UHR_DS}}) | ({WERTE7__q[20], WERTE6__q[20], - WERTE5__q[20], WERTE4__q[20], WERTE3__q[20], WERTE2__q[20], - WERTE1__q[20], WERTE0__q[20]} & {8{RTC_ADR_q == 6'b01_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[21], WERTE6__q[21], WERTE5__q[21], - WERTE4__q[21], WERTE3__q[21], WERTE2__q[21], WERTE1__q[21], - WERTE0__q[21]} & {8{RTC_ADR_q == 6'b01_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[22], WERTE6__q[22], WERTE5__q[22], WERTE4__q[22], - WERTE3__q[22], WERTE2__q[22], WERTE1__q[22], WERTE0__q[22]} & - {8{RTC_ADR_q == 6'b01_0110}} & {8{UHR_DS}}) | ({WERTE7__q[23], - WERTE6__q[23], WERTE5__q[23], WERTE4__q[23], WERTE3__q[23], - WERTE2__q[23], WERTE1__q[23], WERTE0__q[23]} & {8{RTC_ADR_q == - 6'b01_0111}} & {8{UHR_DS}}) | ({WERTE7__q[24], WERTE6__q[24], - WERTE5__q[24], WERTE4__q[24], WERTE3__q[24], WERTE2__q[24], - WERTE1__q[24], WERTE0__q[24]} & {8{RTC_ADR_q == 6'b01_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[25], WERTE6__q[25], WERTE5__q[25], - WERTE4__q[25], WERTE3__q[25], WERTE2__q[25], WERTE1__q[25], - WERTE0__q[25]} & {8{RTC_ADR_q == 6'b01_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[26], WERTE6__q[26], WERTE5__q[26], WERTE4__q[26], - WERTE3__q[26], WERTE2__q[26], WERTE1__q[26], WERTE0__q[26]} & - {8{RTC_ADR_q == 6'b01_1010}} & {8{UHR_DS}}) | ({WERTE7__q[27], - WERTE6__q[27], WERTE5__q[27], WERTE4__q[27], WERTE3__q[27], - WERTE2__q[27], WERTE1__q[27], WERTE0__q[27]} & {8{RTC_ADR_q == - 6'b01_1011}} & {8{UHR_DS}}) | ({WERTE7__q[28], WERTE6__q[28], - WERTE5__q[28], WERTE4__q[28], WERTE3__q[28], WERTE2__q[28], - WERTE1__q[28], WERTE0__q[28]} & {8{RTC_ADR_q == 6'b01_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[29], WERTE6__q[29], WERTE5__q[29], - WERTE4__q[29], WERTE3__q[29], WERTE2__q[29], WERTE1__q[29], - WERTE0__q[29]} & {8{RTC_ADR_q == 6'b01_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[30], WERTE6__q[30], WERTE5__q[30], WERTE4__q[30], - WERTE3__q[30], WERTE2__q[30], WERTE1__q[30], WERTE0__q[30]} & - {8{RTC_ADR_q == 6'b01_1110}} & {8{UHR_DS}}) | ({WERTE7__q[31], - WERTE6__q[31], WERTE5__q[31], WERTE4__q[31], WERTE3__q[31], - WERTE2__q[31], WERTE1__q[31], WERTE0__q[31]} & {8{RTC_ADR_q == - 6'b01_1111}} & {8{UHR_DS}}) | ({WERTE7__q[32], WERTE6__q[32], - WERTE5__q[32], WERTE4__q[32], WERTE3__q[32], WERTE2__q[32], - WERTE1__q[32], WERTE0__q[32]} & {8{RTC_ADR_q == 6'b10_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[33], WERTE6__q[33], WERTE5__q[33], - WERTE4__q[33], WERTE3__q[33], WERTE2__q[33], WERTE1__q[33], - WERTE0__q[33]} & {8{RTC_ADR_q == 6'b10_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[34], WERTE6__q[34], WERTE5__q[34], WERTE4__q[34], - WERTE3__q[34], WERTE2__q[34], WERTE1__q[34], WERTE0__q[34]} & - {8{RTC_ADR_q == 6'b10_0010}} & {8{UHR_DS}}) | ({WERTE7__q[35], - WERTE6__q[35], WERTE5__q[35], WERTE4__q[35], WERTE3__q[35], - WERTE2__q[35], WERTE1__q[35], WERTE0__q[35]} & {8{RTC_ADR_q == - 6'b10_0011}} & {8{UHR_DS}}) | ({WERTE7__q[36], WERTE6__q[36], - WERTE5__q[36], WERTE4__q[36], WERTE3__q[36], WERTE2__q[36], - WERTE1__q[36], WERTE0__q[36]} & {8{RTC_ADR_q == 6'b10_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[37], WERTE6__q[37], WERTE5__q[37], - WERTE4__q[37], WERTE3__q[37], WERTE2__q[37], WERTE1__q[37], - WERTE0__q[37]} & {8{RTC_ADR_q == 6'b10_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[38], WERTE6__q[38], WERTE5__q[38], WERTE4__q[38], - WERTE3__q[38], WERTE2__q[38], WERTE1__q[38], WERTE0__q[38]} & - {8{RTC_ADR_q == 6'b10_0110}} & {8{UHR_DS}}) | ({WERTE7__q[39], - WERTE6__q[39], WERTE5__q[39], WERTE4__q[39], WERTE3__q[39], - WERTE2__q[39], WERTE1__q[39], WERTE0__q[39]} & {8{RTC_ADR_q == - 6'b10_0111}} & {8{UHR_DS}}) | ({WERTE7__q[40], WERTE6__q[40], - WERTE5__q[40], WERTE4__q[40], WERTE3__q[40], WERTE2__q[40], - WERTE1__q[40], WERTE0__q[40]} & {8{RTC_ADR_q == 6'b10_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[41], WERTE6__q[41], WERTE5__q[41], - WERTE4__q[41], WERTE3__q[41], WERTE2__q[41], WERTE1__q[41], - WERTE0__q[41]} & {8{RTC_ADR_q == 6'b10_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[42], WERTE6__q[42], WERTE5__q[42], WERTE4__q[42], - WERTE3__q[42], WERTE2__q[42], WERTE1__q[42], WERTE0__q[42]} & - {8{RTC_ADR_q == 6'b10_1010}} & {8{UHR_DS}}) | ({WERTE7__q[43], - WERTE6__q[43], WERTE5__q[43], WERTE4__q[43], WERTE3__q[43], - WERTE2__q[43], WERTE1__q[43], WERTE0__q[43]} & {8{RTC_ADR_q == - 6'b10_1011}} & {8{UHR_DS}}) | ({WERTE7__q[44], WERTE6__q[44], - WERTE5__q[44], WERTE4__q[44], WERTE3__q[44], WERTE2__q[44], - WERTE1__q[44], WERTE0__q[44]} & {8{RTC_ADR_q == 6'b10_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[45], WERTE6__q[45], WERTE5__q[45], - WERTE4__q[45], WERTE3__q[45], WERTE2__q[45], WERTE1__q[45], - WERTE0__q[45]} & {8{RTC_ADR_q == 6'b10_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[46], WERTE6__q[46], WERTE5__q[46], WERTE4__q[46], - WERTE3__q[46], WERTE2__q[46], WERTE1__q[46], WERTE0__q[46]} & - {8{RTC_ADR_q == 6'b10_1110}} & {8{UHR_DS}}) | ({WERTE7__q[47], - WERTE6__q[47], WERTE5__q[47], WERTE4__q[47], WERTE3__q[47], - WERTE2__q[47], WERTE1__q[47], WERTE0__q[47]} & {8{RTC_ADR_q == - 6'b10_1111}} & {8{UHR_DS}}) | ({WERTE7__q[48], WERTE6__q[48], - WERTE5__q[48], WERTE4__q[48], WERTE3__q[48], WERTE2__q[48], - WERTE1__q[48], WERTE0__q[48]} & {8{RTC_ADR_q == 6'b11_0000}} & - {8{UHR_DS}}) | ({WERTE7__q[49], WERTE6__q[49], WERTE5__q[49], - WERTE4__q[49], WERTE3__q[49], WERTE2__q[49], WERTE1__q[49], - WERTE0__q[49]} & {8{RTC_ADR_q == 6'b11_0001}} & {8{UHR_DS}}) | - ({WERTE7__q[50], WERTE6__q[50], WERTE5__q[50], WERTE4__q[50], - WERTE3__q[50], WERTE2__q[50], WERTE1__q[50], WERTE0__q[50]} & - {8{RTC_ADR_q == 6'b11_0010}} & {8{UHR_DS}}) | ({WERTE7__q[51], - WERTE6__q[51], WERTE5__q[51], WERTE4__q[51], WERTE3__q[51], - WERTE2__q[51], WERTE1__q[51], WERTE0__q[51]} & {8{RTC_ADR_q == - 6'b11_0011}} & {8{UHR_DS}}) | ({WERTE7__q[52], WERTE6__q[52], - WERTE5__q[52], WERTE4__q[52], WERTE3__q[52], WERTE2__q[52], - WERTE1__q[52], WERTE0__q[52]} & {8{RTC_ADR_q == 6'b11_0100}} & - {8{UHR_DS}}) | ({WERTE7__q[53], WERTE6__q[53], WERTE5__q[53], - WERTE4__q[53], WERTE3__q[53], WERTE2__q[53], WERTE1__q[53], - WERTE0__q[53]} & {8{RTC_ADR_q == 6'b11_0101}} & {8{UHR_DS}}) | - ({WERTE7__q[54], WERTE6__q[54], WERTE5__q[54], WERTE4__q[54], - WERTE3__q[54], WERTE2__q[54], WERTE1__q[54], WERTE0__q[54]} & - {8{RTC_ADR_q == 6'b11_0110}} & {8{UHR_DS}}) | ({WERTE7__q[55], - WERTE6__q[55], WERTE5__q[55], WERTE4__q[55], WERTE3__q[55], - WERTE2__q[55], WERTE1__q[55], WERTE0__q[55]} & {8{RTC_ADR_q == - 6'b11_0111}} & {8{UHR_DS}}) | ({WERTE7__q[56], WERTE6__q[56], - WERTE5__q[56], WERTE4__q[56], WERTE3__q[56], WERTE2__q[56], - WERTE1__q[56], WERTE0__q[56]} & {8{RTC_ADR_q == 6'b11_1000}} & - {8{UHR_DS}}) | ({WERTE7__q[57], WERTE6__q[57], WERTE5__q[57], - WERTE4__q[57], WERTE3__q[57], WERTE2__q[57], WERTE1__q[57], - WERTE0__q[57]} & {8{RTC_ADR_q == 6'b11_1001}} & {8{UHR_DS}}) | - ({WERTE7__q[58], WERTE6__q[58], WERTE5__q[58], WERTE4__q[58], - WERTE3__q[58], WERTE2__q[58], WERTE1__q[58], WERTE0__q[58]} & - {8{RTC_ADR_q == 6'b11_1010}} & {8{UHR_DS}}) | ({WERTE7__q[59], - WERTE6__q[59], WERTE5__q[59], WERTE4__q[59], WERTE3__q[59], - WERTE2__q[59], WERTE1__q[59], WERTE0__q[59]} & {8{RTC_ADR_q == - 6'b11_1011}} & {8{UHR_DS}}) | ({WERTE7__q[60], WERTE6__q[60], - WERTE5__q[60], WERTE4__q[60], WERTE3__q[60], WERTE2__q[60], - WERTE1__q[60], WERTE0__q[60]} & {8{RTC_ADR_q == 6'b11_1100}} & - {8{UHR_DS}}) | ({WERTE7__q[61], WERTE6__q[61], WERTE5__q[61], - WERTE4__q[61], WERTE3__q[61], WERTE2__q[61], WERTE1__q[61], - WERTE0__q[61]} & {8{RTC_ADR_q == 6'b11_1101}} & {8{UHR_DS}}) | - ({WERTE7__q[62], WERTE6__q[62], WERTE5__q[62], WERTE4__q[62], - WERTE3__q[62], WERTE2__q[62], WERTE1__q[62], WERTE0__q[62]} & - {8{RTC_ADR_q == 6'b11_1110}} & {8{UHR_DS}}) | ({WERTE7__q[63], - WERTE6__q[63], WERTE5__q[63], WERTE4__q[63], WERTE3__q[63], - WERTE2__q[63], WERTE1__q[63], WERTE0__q[63]} & {8{RTC_ADR_q == - 6'b11_1111}} & {8{UHR_DS}}) | ({2'b00, RTC_ADR_q} & {8{UHR_AS}}) | - ({8{INT_CTR_CS}} & INT_CTR_q[23:16]) | ({8{INT_ENA_CS}} & - INT_ENA_q[23:16]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[23:16]) | - ({8{INT_CLEAR_CS}} & INT_IN[23:16]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[23:16]); - assign u1_enabledt = (UHR_DS | UHR_AS | INT_CTR_CS | INT_ENA_CS | - INT_LATCH_CS | INT_CLEAR_CS | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[23:16] = u1_tridata; - assign u2_data = ({8{INT_CTR_CS}} & INT_CTR_q[15:8]) | ({8{INT_ENA_CS}} & - INT_ENA_q[15:8]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[15:8]) | - ({8{INT_CLEAR_CS}} & INT_IN[15:8]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[15:8]); - assign u2_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[15:8] = u2_tridata; - assign u3_data = ({8{INT_CTR_CS}} & INT_CTR_q[7:0]) | ({8{INT_ENA_CS}} & - INT_ENA_q[7:0]) | ({8{INT_LATCH_CS}} & INT_LATCH_q[7:0]) | - ({8{INT_CLEAR_CS}} & INT_IN[7:0]) | ({8{ACP_CONF_CS}} & - ACP_CONF_q[7:0]); - assign u3_enabledt = (INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | INT_CLEAR_CS - | ACP_CONF_CS) & (!nFB_OE); - assign FB_AD[7:0] = u3_tridata; - assign INT_HANDLER_TA = INT_CTR_CS | INT_ENA_CS | INT_LATCH_CS | - INT_CLEAR_CS; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign UPDATE_ON = UPDATE_ON_1 | UPDATE_ON_2; - assign WERTE0_0_ena = WERTE0_0_ena_1 | WERTE0_0_ena_2; - assign WERTE0_2_ena = WERTE0_2_ena_1 | WERTE0_2_ena_2; - assign WERTE0_4_ena = WERTE0_4_ena_1 | WERTE0_4_ena_2; - assign WERTE0_6_ena = WERTE0_6_ena_1 | WERTE0_6_ena_2; - assign WERTE0_7_ena = WERTE0_7_ena_1 | WERTE0_7_ena_2; - assign WERTE0_8_ena = WERTE0_8_ena_1 | WERTE0_8_ena_2; - assign WERTE0_9_ena = WERTE0_9_ena_1 | WERTE0_9_ena_2; - assign WERTE0_13_ena = WERTE0_13_ena_1 | WERTE0_13_ena_2; - assign WERTE0__d[0] = WERTE0_0_d_1 | WERTE0_0_d_2; - assign WERTE0__d[2] = WERTE0_2_d_1 | WERTE0_2_d_2; - assign WERTE0__d[4] = WERTE0_4_d_1 | WERTE0_4_d_2; - assign WERTE0__d[6] = WERTE0_6_d_1 | WERTE0_6_d_2; - assign WERTE0__d[7] = WERTE0_7_d_1 | WERTE0_7_d_2; - assign WERTE0__d[8] = WERTE0_8_d_1 | WERTE0_8_d_2; - assign WERTE0__d[9] = WERTE0_9_d_1 | WERTE0_9_d_2; - assign WERTE0__d[11] = WERTE0_11_d_1 | WERTE0_11_d_2; - assign WERTE0__d[13] = WERTE0_13_d_1 | WERTE0_13_d_2; - assign WERTE1_0_ena = WERTE1_0_ena_1 | WERTE1_0_ena_2; - assign WERTE1_2_ena = WERTE1_2_ena_1 | WERTE1_2_ena_2; - assign WERTE1_4_ena = WERTE1_4_ena_1 | WERTE1_4_ena_2; - assign WERTE1_6_ena = WERTE1_6_ena_1 | WERTE1_6_ena_2; - assign WERTE1_7_ena = WERTE1_7_ena_1 | WERTE1_7_ena_2; - assign WERTE1_8_ena = WERTE1_8_ena_1 | WERTE1_8_ena_2; - assign WERTE1_9_ena = WERTE1_9_ena_1 | WERTE1_9_ena_2; - assign WERTE1__d[0] = WERTE1_0_d_1 | WERTE1_0_d_2; - assign WERTE1__d[2] = WERTE1_2_d_1 | WERTE1_2_d_2; - assign WERTE1__d[4] = WERTE1_4_d_1 | WERTE1_4_d_2; - assign WERTE1__d[6] = WERTE1_6_d_1 | WERTE1_6_d_2; - assign WERTE1__d[7] = WERTE1_7_d_1 | WERTE1_7_d_2; - assign WERTE1__d[8] = WERTE1_8_d_1 | WERTE1_8_d_2; - assign WERTE1__d[9] = WERTE1_9_d_1 | WERTE1_9_d_2; - assign WERTE1__d[11] = WERTE1_11_d_1 | WERTE1_11_d_2; - assign WERTE2_0_ena = WERTE2_0_ena_1 | WERTE2_0_ena_2; - assign WERTE2_2_ena = WERTE2_2_ena_1 | WERTE2_2_ena_2; - assign WERTE2_4_ena = WERTE2_4_ena_1 | WERTE2_4_ena_2; - assign WERTE2_6_ena = WERTE2_6_ena_1 | WERTE2_6_ena_2; - assign WERTE2_7_ena = WERTE2_7_ena_1 | WERTE2_7_ena_2; - assign WERTE2_8_ena = WERTE2_8_ena_1 | WERTE2_8_ena_2; - assign WERTE2_9_ena = WERTE2_9_ena_1 | WERTE2_9_ena_2; - assign WERTE2__d[0] = WERTE2_0_d_1 | WERTE2_0_d_2; - assign WERTE2__d[2] = WERTE2_2_d_1 | WERTE2_2_d_2; - assign WERTE2__d[4] = WERTE2_4_d_1 | WERTE2_4_d_2; - assign WERTE2__d[6] = WERTE2_6_d_1 | WERTE2_6_d_2; - assign WERTE2__d[7] = WERTE2_7_d_1 | WERTE2_7_d_2; - assign WERTE2__d[8] = WERTE2_8_d_1 | WERTE2_8_d_2; - assign WERTE2__d[9] = WERTE2_9_d_1 | WERTE2_9_d_2; - assign WERTE2__d[11] = WERTE2_11_d_1 | WERTE2_11_d_2; - assign WERTE3_0_ena = WERTE3_0_ena_1 | WERTE3_0_ena_2; - assign WERTE3_2_ena = WERTE3_2_ena_1 | WERTE3_2_ena_2; - assign WERTE3_4_ena = WERTE3_4_ena_1 | WERTE3_4_ena_2; - assign WERTE3_6_ena = WERTE3_6_ena_1 | WERTE3_6_ena_2; - assign WERTE3_7_ena = WERTE3_7_ena_1 | WERTE3_7_ena_2; - assign WERTE3_8_ena = WERTE3_8_ena_1 | WERTE3_8_ena_2; - assign WERTE3_9_ena = WERTE3_9_ena_1 | WERTE3_9_ena_2; - assign WERTE3__d[0] = WERTE3_0_d_1 | WERTE3_0_d_2; - assign WERTE3__d[2] = WERTE3_2_d_1 | WERTE3_2_d_2; - assign WERTE3__d[4] = WERTE3_4_d_1 | WERTE3_4_d_2; - assign WERTE3__d[6] = WERTE3_6_d_1 | WERTE3_6_d_2; - assign WERTE3__d[7] = WERTE3_7_d_1 | WERTE3_7_d_2; - assign WERTE3__d[8] = WERTE3_8_d_1 | WERTE3_8_d_2; - assign WERTE3__d[9] = WERTE3_9_d_1 | WERTE3_9_d_2; - assign WERTE4_0_ena = WERTE4_0_ena_1 | WERTE4_0_ena_2; - assign WERTE4_2_ena = WERTE4_2_ena_1 | WERTE4_2_ena_2; - assign WERTE4_4_ena = WERTE4_4_ena_1 | WERTE4_4_ena_2; - assign WERTE4_6_ena = WERTE4_6_ena_1 | WERTE4_6_ena_2; - assign WERTE4_7_ena = WERTE4_7_ena_1 | WERTE4_7_ena_2; - assign WERTE4_8_ena = WERTE4_8_ena_1 | WERTE4_8_ena_2; - assign WERTE4_9_ena = WERTE4_9_ena_1 | WERTE4_9_ena_2; - assign WERTE4__d[0] = WERTE4_0_d_1 | WERTE4_0_d_2; - assign WERTE4__d[2] = WERTE4_2_d_1 | WERTE4_2_d_2; - assign WERTE4__d[4] = WERTE4_4_d_1 | WERTE4_4_d_2; - assign WERTE4__d[6] = WERTE4_6_d_1 | WERTE4_6_d_2; - assign WERTE4__d[7] = WERTE4_7_d_1 | WERTE4_7_d_2; - assign WERTE4__d[8] = WERTE4_8_d_1 | WERTE4_8_d_2; - assign WERTE4__d[9] = WERTE4_9_d_1 | WERTE4_9_d_2; - assign WERTE5_0_ena = WERTE5_0_ena_1 | WERTE5_0_ena_2; - assign WERTE5_2_ena = WERTE5_2_ena_1 | WERTE5_2_ena_2; - assign WERTE5_4_ena = WERTE5_4_ena_1 | WERTE5_4_ena_2; - assign WERTE5_6_ena = WERTE5_6_ena_1 | WERTE5_6_ena_2; - assign WERTE5_7_ena = WERTE5_7_ena_1 | WERTE5_7_ena_2; - assign WERTE5_8_ena = WERTE5_8_ena_1 | WERTE5_8_ena_2; - assign WERTE5_9_ena = WERTE5_9_ena_1 | WERTE5_9_ena_2; - assign WERTE5__d[0] = WERTE5_0_d_1 | WERTE5_0_d_2; - assign WERTE5__d[2] = WERTE5_2_d_1 | WERTE5_2_d_2; - assign WERTE5__d[4] = WERTE5_4_d_1 | WERTE5_4_d_2; - assign WERTE5__d[6] = WERTE5_6_d_1 | WERTE5_6_d_2; - assign WERTE5__d[7] = WERTE5_7_d_1 | WERTE5_7_d_2; - assign WERTE5__d[8] = WERTE5_8_d_1 | WERTE5_8_d_2; - assign WERTE5__d[9] = WERTE5_9_d_1 | WERTE5_9_d_2; - assign WERTE6_0_ena = WERTE6_0_ena_1 | WERTE6_0_ena_2; - assign WERTE6_2_ena = WERTE6_2_ena_1 | WERTE6_2_ena_2; - assign WERTE6_4_ena = WERTE6_4_ena_1 | WERTE6_4_ena_2; - assign WERTE6_6_ena = WERTE6_6_ena_1 | WERTE6_6_ena_2; - assign WERTE6_7_ena = WERTE6_7_ena_1 | WERTE6_7_ena_2; - assign WERTE6_8_ena = WERTE6_8_ena_1 | WERTE6_8_ena_2; - assign WERTE6_9_ena = WERTE6_9_ena_1 | WERTE6_9_ena_2; - assign WERTE6__d[0] = WERTE6_0_d_1 | WERTE6_0_d_2; - assign WERTE6__d[2] = WERTE6_2_d_1 | WERTE6_2_d_2; - assign WERTE6__d[4] = WERTE6_4_d_1 | WERTE6_4_d_2; - assign WERTE6__d[6] = WERTE6_6_d_1 | WERTE6_6_d_2; - assign WERTE6__d[7] = WERTE6_7_d_1 | WERTE6_7_d_2; - assign WERTE6__d[8] = WERTE6_8_d_1 | WERTE6_8_d_2; - assign WERTE6__d[9] = WERTE6_9_d_1 | WERTE6_9_d_2; - assign WERTE7_0_ena = WERTE7_0_ena_1 | WERTE7_0_ena_2; - assign WERTE7_2_ena = WERTE7_2_ena_1 | WERTE7_2_ena_2; - assign WERTE7_4_ena = WERTE7_4_ena_1 | WERTE7_4_ena_2; - assign WERTE7_6_ena = WERTE7_6_ena_1 | WERTE7_6_ena_2; - assign WERTE7_7_ena = WERTE7_7_ena_1 | WERTE7_7_ena_2; - assign WERTE7_8_ena = WERTE7_8_ena_1 | WERTE7_8_ena_2; - assign WERTE7_9_ena = WERTE7_9_ena_1 | WERTE7_9_ena_2; - assign WERTE7__d[0] = WERTE7_0_d_1 | WERTE7_0_d_2; - assign WERTE7__d[2] = WERTE7_2_d_1 | WERTE7_2_d_2; - assign WERTE7__d[4] = WERTE7_4_d_1 | WERTE7_4_d_2; - assign WERTE7__d[6] = WERTE7_6_d_1 | WERTE7_6_d_2; - assign WERTE7__d[7] = WERTE7_7_d_1 | WERTE7_7_d_2; - assign WERTE7__d[8] = WERTE7_8_d_1 | WERTE7_8_d_2; - assign WERTE7__d[9] = WERTE7_9_d_1 | WERTE7_9_d_2; - assign WERTE7__d[13] = WERTE7_13_d_1 | WERTE7_13_d_2; - -// Define power signal(s) - assign vcc = 1'b1; - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf deleted file mode 100644 index abd780b..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri.tdf +++ /dev/null @@ -1,78 +0,0 @@ --------------------------------------------------------------------- --- --- LPM_BUSTRI Parameterized Megafunction --- --- Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 --- --- Version 2.0 --- --------------------------------------------------------------------- - - -PARAMETERS -( - LPM_WIDTH -); - -SUBDESIGN lpm_bustri -( - tridata[LPM_WIDTH-1..0] : BIDIR; - data[LPM_WIDTH-1..0] : INPUT = VCC; - enabletr : INPUT = VCC; - enabledt : INPUT = VCC; - result[LPM_WIDTH-1..0] : OUTPUT; -) - -VARIABLE - % Are the enable inputs used? % - IF (USED(enabledt)) GENERATE - dout[LPM_WIDTH-1..0] : TRI; - END GENERATE; - IF (USED(enabletr)) GENERATE - din[LPM_WIDTH-1..0] : TRI; - END GENERATE; - -BEGIN - - ASSERT (LPM_WIDTH > 0) - REPORT "Value of LPM_WIDTH parameter value must be greater than 0" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_WIDTH; - - ASSERT (USED(enabledt) & USED(data)) - REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_DATA; - - % Connect buffers if they are used % - IF (USED(enabledt)) GENERATE - dout[].oe = enabledt; - dout[] = data[]; - tridata[] = dout[]; - END GENERATE; - - IF (USED(enabletr)) GENERATE - din[].oe = enabletr; - din[] = tridata[]; - result[] = din[]; - ELSE GENERATE - result[] = tridata[]; - END GENERATE; - IF !USED(result) GENERATE - result[] = GND; - END GENERATE; -END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc deleted file mode 100644 index 8cb4941..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf deleted file mode 100644 index 84b70c8..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.tdf +++ /dev/null @@ -1,72 +0,0 @@ --------------------------------------------------------------------- --- --- LPM_BUSTRI Parameterized Megafunction --- --- Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 --- --- Version 2.0 --- --------------------------------------------------------------------- - -SUBDESIGN lpm_bustri_BYT -( - tridata[8-1..0] : BIDIR; - data[8-1..0] : INPUT = VCC; - enabletr : INPUT = VCC; - enabledt : INPUT = VCC; - result[8-1..0] : OUTPUT; -) - -VARIABLE - % Are the enable inputs used? % - IF (USED(enabledt)) GENERATE - dout[8-1..0] : TRI; - END GENERATE; - IF (USED(enabletr)) GENERATE - din[8-1..0] : TRI; - END GENERATE; - -BEGIN - - ASSERT (8 > 0) - REPORT "Value of 8 parameter value must be greater than 0" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_WIDTH; - - ASSERT (USED(enabledt) & USED(data)) - REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_DATA; - - % Connect buffers if they are used % - IF (USED(enabledt)) GENERATE - dout[].oe = enabledt; - dout[] = data[]; - tridata[] = dout[]; - END GENERATE; - - IF (USED(enabletr)) GENERATE - din[].oe = enabletr; - din[] = tridata[]; - result[] = din[]; - ELSE GENERATE - result[] = tridata[]; - END GENERATE; - IF !USED(result) GENERATE - result[] = GND; - END GENERATE; -END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v deleted file mode 100644 index da23b16..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_BYT.v +++ /dev/null @@ -1,78 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: lpm_bustri_BYT.tdf -// Verilog Design Output: lpm_bustri_BYT.v -// Created 03-Mar-2014 09:18 PM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - - -// ------------------------------------------------------------------ -// LPM_BUSTRI Parameterized Megafunction -// Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 -// Version 2.0 -// ------------------------------------------------------------------ -module lpm_bustri_BYT(tridata, data, enabletr, enabledt, result); - input [7:0] data; - input enabletr, enabledt; - output [7:0] result; - inout [7:0] tridata; - -// Are the enable inputs used? - wire [7:0] dout; - wire [7:0] dout_in; - wire gnd, result0_1, result0_2, result1_1, result1_2, result2_1, result2_2, - result3_1, result3_2, result4_1, result4_2, result5_1, result5_2, - result6_1, result6_2, result7_1, result7_2, dout0_oe_ctrl; - - assign dout[0] = (dout0_oe_ctrl) ? dout_in[0] : 1'bz; - assign dout[1] = (dout0_oe_ctrl) ? dout_in[1] : 1'bz; - assign dout[2] = (dout0_oe_ctrl) ? dout_in[2] : 1'bz; - assign dout[3] = (dout0_oe_ctrl) ? dout_in[3] : 1'bz; - assign dout[4] = (dout0_oe_ctrl) ? dout_in[4] : 1'bz; - assign dout[5] = (dout0_oe_ctrl) ? dout_in[5] : 1'bz; - assign dout[6] = (dout0_oe_ctrl) ? dout_in[6] : 1'bz; - assign dout[7] = (dout0_oe_ctrl) ? dout_in[7] : 1'bz; - -// Start of original equations - -// Connect buffers if they are used - assign dout0_oe_ctrl = enabledt; - assign dout_in = data; - assign tridata = dout; - assign {result7_1, result6_1, result5_1, result4_1, result3_1, result2_1, - result1_1, result0_1} = tridata; - assign {result7_2, result6_2, result5_2, result4_2, result3_2, result2_2, - result1_2, result0_2} = {8{gnd}}; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign result[0] = result0_1 | result0_2; - assign result[1] = result1_1 | result1_2; - assign result[2] = result2_1 | result2_2; - assign result[3] = result3_1 | result3_2; - assign result[4] = result4_1 | result4_2; - assign result[5] = result5_1 | result5_2; - assign result[6] = result6_1 | result6_2; - assign result[7] = result7_1 | result7_2; - -// Define power signal(s) - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc deleted file mode 100644 index f180c48..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf deleted file mode 100644 index 0ec70d1..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_LONG.tdf +++ /dev/null @@ -1,72 +0,0 @@ --------------------------------------------------------------------- --- --- LPM_BUSTRI Parameterized Megafunction --- --- Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 --- --- Version 2.0 --- --------------------------------------------------------------------- - -SUBDESIGN lpm_bustri_LONG -( - tridata[32-1..0] : BIDIR; - data[32-1..0] : INPUT = VCC; - enabletr : INPUT = VCC; - enabledt : INPUT = VCC; - result[32-1..0] : OUTPUT; -) - -VARIABLE - % Are the enable inputs used? % - IF (USED(enabledt)) GENERATE - dout[32-1..0] : TRI; - END GENERATE; - IF (USED(enabletr)) GENERATE - din[32-1..0] : TRI; - END GENERATE; - -BEGIN - - ASSERT (32 > 0) - REPORT "Value of 32 parameter value must be greater than 0" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_WIDTH; - - ASSERT (USED(enabledt) & USED(data)) - REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_DATA; - - % Connect buffers if they are used % - IF (USED(enabledt)) GENERATE - dout[].oe = enabledt; - dout[] = data[]; - tridata[] = dout[]; - END GENERATE; - - IF (USED(enabletr)) GENERATE - din[].oe = enabletr; - din[] = tridata[]; - result[] = din[]; - ELSE GENERATE - result[] = tridata[]; - END GENERATE; - IF !USED(result) GENERATE - result[] = GND; - END GENERATE; -END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc deleted file mode 100644 index 09f6251..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf deleted file mode 100644 index 3e2ac8b..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.tdf +++ /dev/null @@ -1,72 +0,0 @@ --------------------------------------------------------------------- --- --- LPM_BUSTRI Parameterized Megafunction --- --- Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 --- --- Version 2.0 --- --------------------------------------------------------------------- - -SUBDESIGN lpm_bustri_WORD -( - tridata[16-1..0] : BIDIR; - data[16-1..0] : INPUT = VCC; - enabletr : INPUT = VCC; - enabledt : INPUT = VCC; - result[16-1..0] : OUTPUT; -) - -VARIABLE - % Are the enable inputs used? % - IF (USED(enabledt)) GENERATE - dout[16-1..0] : TRI; - END GENERATE; - IF (USED(enabletr)) GENERATE - din[16-1..0] : TRI; - END GENERATE; - -BEGIN - - ASSERT (16 > 0) - REPORT "Value of 16 parameter value must be greater than 0" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_WIDTH; - - ASSERT (USED(enabledt) & USED(data)) - REPORT "lpm_bustri function requires data[] port -- Altera recommends using the TRI primitive instead" - SEVERITY ERROR - HELP_ID LPM_BUSTRI_DATA; - - % Connect buffers if they are used % - IF (USED(enabledt)) GENERATE - dout[].oe = enabledt; - dout[] = data[]; - tridata[] = dout[]; - END GENERATE; - - IF (USED(enabletr)) GENERATE - din[].oe = enabletr; - din[] = tridata[]; - result[] = din[]; - ELSE GENERATE - result[] = tridata[]; - END GENERATE; - IF !USED(result) GENERATE - result[] = GND; - END GENERATE; -END; diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v b/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v deleted file mode 100644 index cfd22d9..0000000 --- a/FPGA_by_Gregory_Estrade/ahdl2v/lpm_bustri_WORD.v +++ /dev/null @@ -1,99 +0,0 @@ -// Xilinx XPort Language Converter, Version 4.1 (110) -// -// AHDL Design Source: lpm_bustri_WORD.tdf -// Verilog Design Output: lpm_bustri_WORD.v -// Created 02-Mar-2014 04:36 PM -// -// Copyright (c) 2014, Xilinx, Inc. All Rights Reserved. -// Xilinx Inc makes no warranty, expressed or implied, with respect to -// the operation and/or functionality of the converted output files. -// - - -// ------------------------------------------------------------------ -// LPM_BUSTRI Parameterized Megafunction -// Copyright (C) 1991-2013 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 13.1.0 Build 162 10/23/2013 -// Version 2.0 -// ------------------------------------------------------------------ -module lpm_bustri_WORD(tridata, data, enabletr, enabledt, result); - input [15:0] data; - input enabletr, enabledt; - output [15:0] result; - inout [15:0] tridata; - -// Are the enable inputs used? - wire [15:0] dout; - wire [15:0] dout_in; - wire gnd, result0_1, result0_2, result1_1, result1_2, result2_1, result2_2, - result3_1, result3_2, result4_1, result4_2, result5_1, result5_2, - result6_1, result6_2, result7_1, result7_2, result8_1, result8_2, - result9_1, result9_2, result10_1, result10_2, result11_1, result11_2, - result12_1, result12_2, result13_1, result13_2, result14_1, - result14_2, result15_1, result15_2, dout0_oe_ctrl; - - assign dout[0] = (dout0_oe_ctrl) ? dout_in[0] : 1'bz; - assign dout[1] = (dout0_oe_ctrl) ? dout_in[1] : 1'bz; - assign dout[2] = (dout0_oe_ctrl) ? dout_in[2] : 1'bz; - assign dout[3] = (dout0_oe_ctrl) ? dout_in[3] : 1'bz; - assign dout[4] = (dout0_oe_ctrl) ? dout_in[4] : 1'bz; - assign dout[5] = (dout0_oe_ctrl) ? dout_in[5] : 1'bz; - assign dout[6] = (dout0_oe_ctrl) ? dout_in[6] : 1'bz; - assign dout[7] = (dout0_oe_ctrl) ? dout_in[7] : 1'bz; - assign dout[8] = (dout0_oe_ctrl) ? dout_in[8] : 1'bz; - assign dout[9] = (dout0_oe_ctrl) ? dout_in[9] : 1'bz; - assign dout[10] = (dout0_oe_ctrl) ? dout_in[10] : 1'bz; - assign dout[11] = (dout0_oe_ctrl) ? dout_in[11] : 1'bz; - assign dout[12] = (dout0_oe_ctrl) ? dout_in[12] : 1'bz; - assign dout[13] = (dout0_oe_ctrl) ? dout_in[13] : 1'bz; - assign dout[14] = (dout0_oe_ctrl) ? dout_in[14] : 1'bz; - assign dout[15] = (dout0_oe_ctrl) ? dout_in[15] : 1'bz; - -// Start of original equations - -// Connect buffers if they are used - assign dout0_oe_ctrl = enabledt; - assign dout_in = data; - assign tridata = dout; - assign {result15_1, result14_1, result13_1, result12_1, result11_1, - result10_1, result9_1, result8_1, result7_1, result6_1, result5_1, - result4_1, result3_1, result2_1, result1_1, result0_1} = tridata; - assign {result15_2, result14_2, result13_2, result12_2, result11_2, - result10_2, result9_2, result8_2, result7_2, result6_2, result5_2, - result4_2, result3_2, result2_2, result1_2, result0_2} = {16{gnd}}; - - -// Assignments added to explicitly combine the -// effects of multiple drivers in the source - assign result[0] = result0_1 | result0_2; - assign result[1] = result1_1 | result1_2; - assign result[2] = result2_1 | result2_2; - assign result[3] = result3_1 | result3_2; - assign result[4] = result4_1 | result4_2; - assign result[5] = result5_1 | result5_2; - assign result[6] = result6_1 | result6_2; - assign result[7] = result7_1 | result7_2; - assign result[8] = result8_1 | result8_2; - assign result[9] = result9_1 | result9_2; - assign result[10] = result10_1 | result10_2; - assign result[11] = result11_1 | result11_2; - assign result[12] = result12_1 | result12_2; - assign result[13] = result13_1 | result13_2; - assign result[14] = result14_1 | result14_2; - assign result[15] = result15_1 | result15_2; - -// Define power signal(s) - assign gnd = 1'b0; -endmodule diff --git a/FPGA_by_Gregory_Estrade/ahdl2v/xport.exe b/FPGA_by_Gregory_Estrade/ahdl2v/xport.exe deleted file mode 100644 index 16ea1b34b463aa7a1eb9d53948f1171c7289fb17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566272 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 Yni*4T>OXwOh@^SF>%c|$zrp7}0jo13 - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altddio_out0.qip b/FPGA_by_Gregory_Estrade/altddio_out0.qip deleted file mode 100644 index 8193856..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out0.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altddio_out0.vhd b/FPGA_by_Gregory_Estrade/altddio_out0.vhd deleted file mode 100644 index ea6d708..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out0.vhd +++ /dev/null @@ -1,146 +0,0 @@ --- 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_by_Gregory_Estrade/altddio_out3.bsf b/FPGA_by_Gregory_Estrade/altddio_out3.bsf deleted file mode 100644 index ba8c153..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out3.bsf +++ /dev/null @@ -1,64 +0,0 @@ -/* -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_by_Gregory_Estrade/altddio_out3.inc b/FPGA_by_Gregory_Estrade/altddio_out3.inc deleted file mode 100644 index f6b4097..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out3.inc +++ /dev/null @@ -1,25 +0,0 @@ ---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_by_Gregory_Estrade/altddio_out3.ppf b/FPGA_by_Gregory_Estrade/altddio_out3.ppf deleted file mode 100644 index e914df8..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out3.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altddio_out3.qip b/FPGA_by_Gregory_Estrade/altddio_out3.qip deleted file mode 100644 index 8f94ee3..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out3.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altddio_out3.vhd b/FPGA_by_Gregory_Estrade/altddio_out3.vhd deleted file mode 100644 index e55160f..0000000 --- a/FPGA_by_Gregory_Estrade/altddio_out3.vhd +++ /dev/null @@ -1,146 +0,0 @@ --- 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_by_Gregory_Estrade/altpll0.bsf b/FPGA_by_Gregory_Estrade/altpll0.bsf deleted file mode 100644 index b9a2853..0000000 --- a/FPGA_by_Gregory_Estrade/altpll0.bsf +++ /dev/null @@ -1,117 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll0.inc b/FPGA_by_Gregory_Estrade/altpll0.inc deleted file mode 100644 index 933af49..0000000 --- a/FPGA_by_Gregory_Estrade/altpll0.inc +++ /dev/null @@ -1,27 +0,0 @@ ---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_by_Gregory_Estrade/altpll0.ppf b/FPGA_by_Gregory_Estrade/altpll0.ppf deleted file mode 100644 index 521a742..0000000 --- a/FPGA_by_Gregory_Estrade/altpll0.ppf +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altpll0.qip b/FPGA_by_Gregory_Estrade/altpll0.qip deleted file mode 100644 index 1b4cd11..0000000 --- a/FPGA_by_Gregory_Estrade/altpll0.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altpll0.vhd b/FPGA_by_Gregory_Estrade/altpll0.vhd deleted file mode 100644 index b035bf5..0000000 --- a/FPGA_by_Gregory_Estrade/altpll0.vhd +++ /dev/null @@ -1,477 +0,0 @@ --- 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_by_Gregory_Estrade/altpll1.bsf b/FPGA_by_Gregory_Estrade/altpll1.bsf deleted file mode 100644 index d1e4a9e..0000000 --- a/FPGA_by_Gregory_Estrade/altpll1.bsf +++ /dev/null @@ -1,100 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll1.inc b/FPGA_by_Gregory_Estrade/altpll1.inc deleted file mode 100644 index 0923ad2..0000000 --- a/FPGA_by_Gregory_Estrade/altpll1.inc +++ /dev/null @@ -1,26 +0,0 @@ ---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_by_Gregory_Estrade/altpll1.ppf b/FPGA_by_Gregory_Estrade/altpll1.ppf deleted file mode 100644 index 0f38a28..0000000 --- a/FPGA_by_Gregory_Estrade/altpll1.ppf +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altpll1.qip b/FPGA_by_Gregory_Estrade/altpll1.qip deleted file mode 100644 index ec03f05..0000000 --- a/FPGA_by_Gregory_Estrade/altpll1.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altpll1.vhd b/FPGA_by_Gregory_Estrade/altpll1.vhd deleted file mode 100644 index ab9bfaf..0000000 --- a/FPGA_by_Gregory_Estrade/altpll1.vhd +++ /dev/null @@ -1,423 +0,0 @@ --- 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_by_Gregory_Estrade/altpll2.bsf b/FPGA_by_Gregory_Estrade/altpll2.bsf deleted file mode 100644 index 79679d7..0000000 --- a/FPGA_by_Gregory_Estrade/altpll2.bsf +++ /dev/null @@ -1,117 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll2.inc b/FPGA_by_Gregory_Estrade/altpll2.inc deleted file mode 100644 index e75913b..0000000 --- a/FPGA_by_Gregory_Estrade/altpll2.inc +++ /dev/null @@ -1,27 +0,0 @@ ---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_by_Gregory_Estrade/altpll2.ppf b/FPGA_by_Gregory_Estrade/altpll2.ppf deleted file mode 100644 index b1c71cc..0000000 --- a/FPGA_by_Gregory_Estrade/altpll2.ppf +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altpll2.qip b/FPGA_by_Gregory_Estrade/altpll2.qip deleted file mode 100644 index 74cc641..0000000 --- a/FPGA_by_Gregory_Estrade/altpll2.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altpll2.vhd b/FPGA_by_Gregory_Estrade/altpll2.vhd deleted file mode 100644 index 2c55f08..0000000 --- a/FPGA_by_Gregory_Estrade/altpll2.vhd +++ /dev/null @@ -1,477 +0,0 @@ --- 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_by_Gregory_Estrade/altpll3.bsf b/FPGA_by_Gregory_Estrade/altpll3.bsf deleted file mode 100644 index da30b0c..0000000 --- a/FPGA_by_Gregory_Estrade/altpll3.bsf +++ /dev/null @@ -1,105 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll3.inc b/FPGA_by_Gregory_Estrade/altpll3.inc deleted file mode 100644 index 160ecad..0000000 --- a/FPGA_by_Gregory_Estrade/altpll3.inc +++ /dev/null @@ -1,26 +0,0 @@ ---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_by_Gregory_Estrade/altpll3.ppf b/FPGA_by_Gregory_Estrade/altpll3.ppf deleted file mode 100644 index 2a7b695..0000000 --- a/FPGA_by_Gregory_Estrade/altpll3.ppf +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altpll3.qip b/FPGA_by_Gregory_Estrade/altpll3.qip deleted file mode 100644 index 8dd2955..0000000 --- a/FPGA_by_Gregory_Estrade/altpll3.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altpll3.vhd b/FPGA_by_Gregory_Estrade/altpll3.vhd deleted file mode 100644 index 6ead1f5..0000000 --- a/FPGA_by_Gregory_Estrade/altpll3.vhd +++ /dev/null @@ -1,445 +0,0 @@ --- 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_by_Gregory_Estrade/altpll4.bsf b/FPGA_by_Gregory_Estrade/altpll4.bsf deleted file mode 100644 index e071d43..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.bsf +++ /dev/null @@ -1,125 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll4.inc b/FPGA_by_Gregory_Estrade/altpll4.inc deleted file mode 100644 index 39f54c9..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.inc +++ /dev/null @@ -1,31 +0,0 @@ ---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_by_Gregory_Estrade/altpll4.mif b/FPGA_by_Gregory_Estrade/altpll4.mif deleted file mode 100644 index e50eda2..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.mif +++ /dev/null @@ -1,174 +0,0 @@ --- 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_by_Gregory_Estrade/altpll4.ppf b/FPGA_by_Gregory_Estrade/altpll4.ppf deleted file mode 100644 index 541ce91..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.ppf +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/FPGA_by_Gregory_Estrade/altpll4.qip b/FPGA_by_Gregory_Estrade/altpll4.qip deleted file mode 100644 index f44acdc..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.qip +++ /dev/null @@ -1,7 +0,0 @@ -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_by_Gregory_Estrade/altpll4.tdf b/FPGA_by_Gregory_Estrade/altpll4.tdf deleted file mode 100644 index 3ec77d4..0000000 --- a/FPGA_by_Gregory_Estrade/altpll4.tdf +++ /dev/null @@ -1,298 +0,0 @@ --- 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_by_Gregory_Estrade/altpll_reconfig0.bsf b/FPGA_by_Gregory_Estrade/altpll_reconfig0.bsf deleted file mode 100644 index 452f320..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig0.bsf +++ /dev/null @@ -1,162 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll_reconfig0.qip b/FPGA_by_Gregory_Estrade/altpll_reconfig0.qip deleted file mode 100644 index 3194459..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/altpll_reconfig1.bsf b/FPGA_by_Gregory_Estrade/altpll_reconfig1.bsf deleted file mode 100644 index f896607..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1.bsf +++ /dev/null @@ -1,162 +0,0 @@ -/* -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_by_Gregory_Estrade/altpll_reconfig1.inc b/FPGA_by_Gregory_Estrade/altpll_reconfig1.inc deleted file mode 100644 index c1a6e65..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1.inc +++ /dev/null @@ -1,39 +0,0 @@ ---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_by_Gregory_Estrade/altpll_reconfig1.qip b/FPGA_by_Gregory_Estrade/altpll_reconfig1.qip deleted file mode 100644 index 713a3c3..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/altpll_reconfig1.tdf b/FPGA_by_Gregory_Estrade/altpll_reconfig1.tdf deleted file mode 100644 index 82ad4ff..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1.tdf +++ /dev/null @@ -1,144 +0,0 @@ --- 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_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_bju.tdf b/FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_bju.tdf deleted file mode 100644 index 81695ae..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_bju.tdf +++ /dev/null @@ -1,583 +0,0 @@ ---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_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_t4q.tdf b/FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_t4q.tdf deleted file mode 100644 index fae939f..0000000 --- a/FPGA_by_Gregory_Estrade/altpll_reconfig1_pllrcfg_t4q.tdf +++ /dev/null @@ -1,582 +0,0 @@ ---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_by_Gregory_Estrade/firebee1.bdf b/FPGA_by_Gregory_Estrade/firebee1.bdf deleted file mode 100644 index 46507a2..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.bdf +++ /dev/null @@ -1,5837 +0,0 @@ -/* -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_by_Gregory_Estrade/firebee1.done b/FPGA_by_Gregory_Estrade/firebee1.done deleted file mode 100644 index 301e639..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.done +++ /dev/null @@ -1 +0,0 @@ -Fri Mar 07 20:10:16 2014 diff --git a/FPGA_by_Gregory_Estrade/firebee1.qpf b/FPGA_by_Gregory_Estrade/firebee1.qpf deleted file mode 100644 index 49e7c57..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.qpf +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 1991-2013 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 32-bit -# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition -# Date created = 01:26:07 March 01, 2014 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "13.1" -DATE = "01:26:07 March 01, 2014" - -# Revisions - -PROJECT_REVISION = "firebee1" diff --git a/FPGA_by_Gregory_Estrade/firebee1.qsf b/FPGA_by_Gregory_Estrade/firebee1.qsf deleted file mode 100644 index 0730e08..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.qsf +++ /dev/null @@ -1,826 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# 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 13.1 - -# 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 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" - -# 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 OFF -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:b2v_Fredi_Aschwanden|DDRCLK" -section_id fast -set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[0]" -section_id fast -set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[1]" -section_id fast -set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_Fredi_Aschwanden|DDRCLK[2]" -section_id fast -set_global_assignment -name ASSIGNMENT_GROUP_MEMBER "video:b2v_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:b2v_Fredi_Aschwanden|DDRCLK" -set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[0]" -set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[1]" -set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_Fredi_Aschwanden|DDRCLK[2]" -set_instance_assignment -name CLOCK_SETTINGS fast -to "video:b2v_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 "MAXIMUM CURRENT" -to VCKE -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -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 "MAXIMUM CURRENT" -to nVWE -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to nVRAS -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -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_location_assignment PIN_E5 -to LPDIR -set_location_assignment PIN_B11 -to nRSTO_MCF -set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top -set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" -set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" -set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON -set_global_assignment -name ALLOW_POWER_UP_DONT_CARE ON -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to DDR_CLK -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VCKE -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nDDR_CLK -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVCAS -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVCS -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVRAS -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to nVWE -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[0] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[1] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[2] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[3] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[4] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[5] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[6] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[7] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[8] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[9] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[10] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[11] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VA[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VA[12] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to BA[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to BA[0] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to BA[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to BA[1] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[0] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[1] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[2] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDM[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDM[3] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[0] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[1] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[2] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[3] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[4] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[5] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[6] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[7] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[8] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[9] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[10] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[11] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[12] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[13] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[14] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[15] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[16] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[17] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[18] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[19] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[20] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[21] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[22] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[23] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[24] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[25] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[26] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[27] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[28] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[28] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[29] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[29] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[30] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[30] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VD[31] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VD[31] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[0] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[1] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[2] -#set_instance_assignment -name IO_STANDARD "SSTL-2 CLASS I" -to VDQS[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW 12MA -to VDQS[3] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[0] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[1] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[2] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDM[3] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[0] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[1] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[2] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[3] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[4] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[5] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[6] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[7] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[8] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[9] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[10] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[11] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[12] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[13] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[14] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[15] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[16] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[17] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[18] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[19] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[20] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[21] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[22] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[23] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[24] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[25] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[26] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[27] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[28] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[29] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[30] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VD[31] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[0] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[1] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[2] -set_instance_assignment -name OUTPUT_ENABLE_GROUP 1077756020 -to VDQS[3] -set_instance_assignment -name PAD_TO_CORE_DELAY 0 -to DDR_CLK -set_instance_assignment -name CKN_CK_PAIR ON -from nDDR_CLK -to DDR_CLK -set_global_assignment -name USE_CONFIGURATION_DEVICE OFF -set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF -set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise -set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall -set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise -set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall -set_global_assignment -name VERILOG_FILE firebee1.v -set_global_assignment -name SDC_FILE firebee1.sdc -set_global_assignment -name VERILOG_FILE Video/video.v -set_global_assignment -name VERILOG_FILE Video/DDR_CTR.v -set_global_assignment -name VERILOG_FILE Video/VIDEO_MOD_MUX_CLUTCTR.v -set_global_assignment -name VHDL_FILE Video/BLITTER/BLITTER.vhd -set_global_assignment -name VERILOG_FILE Interrupt_Handler/interrupt_handler.v -set_global_assignment -name VHDL_FILE DSP/DSP.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_control.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_pkg.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF5380/wf5380_registers.vhd -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 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 VHDL_FILE FalconIO_SDCard_IDE_CF/WF_UART6850_IP/wf6850ip_ctrl_status.vhd -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 VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_interrupts.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_MFP68901_IP/wf68901ip_pkg.vhd -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 VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_top_soc.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/WF_SND2149_IP/wf2149ip_wave.vhd -set_global_assignment -name VHDL_FILE FalconIO_SDCard_IDE_CF/FalconIO_SDCard_IDE_CF_pgk.vhd -set_global_assignment -name VERILOG_FILE lpm_ffs.v -set_global_assignment -name VERILOG_FILE mux41.v -set_global_assignment -name QIP_FILE altip/altddio_bidir0.qip -set_global_assignment -name QIP_FILE altip/altddio_out0.qip -set_global_assignment -name QIP_FILE altip/altddio_out1.qip -set_global_assignment -name QIP_FILE altip/altddio_out2.qip -set_global_assignment -name QIP_FILE altip/lpm_compare1.qip -set_global_assignment -name QIP_FILE altip/lpm_constant0.qip -set_global_assignment -name QIP_FILE altip/lpm_constant1.qip -set_global_assignment -name QIP_FILE altip/lpm_constant2.qip -set_global_assignment -name QIP_FILE altip/lpm_constant3.qip -set_global_assignment -name QIP_FILE altip/lpm_constant4.qip -set_global_assignment -name QIP_FILE altip/lpm_mux0.qip -set_global_assignment -name QIP_FILE altip/lpm_mux1.qip -set_global_assignment -name QIP_FILE altip/lpm_mux2.qip -set_global_assignment -name QIP_FILE altip/lpm_mux3.qip -set_global_assignment -name QIP_FILE altip/lpm_mux4.qip -set_global_assignment -name QIP_FILE altip/lpm_mux5.qip -set_global_assignment -name QIP_FILE altip/lpm_mux6.qip -set_global_assignment -name QIP_FILE altip/lpm_muxDZ.qip -set_global_assignment -name QIP_FILE altip/lpm_muxDZ2.qip -set_global_assignment -name QIP_FILE altip/lpm_muxVDM.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg0.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg1.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg2.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg3.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg4.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg5.qip -set_global_assignment -name QIP_FILE altip/lpm_shiftreg6.qip -set_global_assignment -name QIP_FILE altip/altddio_out3.qip -set_global_assignment -name QIP_FILE altip/altpll_reconfig1.qip -set_global_assignment -name QIP_FILE altip/altpll0.qip -set_global_assignment -name QIP_FILE altip/altpll1.qip -set_global_assignment -name QIP_FILE altip/altpll2.qip -set_global_assignment -name QIP_FILE altip/altpll3.qip -set_global_assignment -name QIP_FILE altip/altpll4.qip -set_global_assignment -name QIP_FILE altip/lpm_counter0.qip -set_global_assignment -name QIP_FILE altip/altdpram0.qip -set_global_assignment -name QIP_FILE altip/altdpram1.qip -set_global_assignment -name QIP_FILE altip/altdpram2.qip -set_global_assignment -name QIP_FILE altip/lpm_fifo_dc0.qip -set_global_assignment -name QIP_FILE altip/lpm_fifoDZ.qip -set_global_assignment -name QIP_FILE altip/dcfifo0.qip -set_global_assignment -name QIP_FILE altip/dcfifo1.qip -set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/firebee1.qws b/FPGA_by_Gregory_Estrade/firebee1.qws deleted file mode 100644 index 2c267916f2523a0ad78b49ae913bf93fbb3187fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmbV}y-EW?6ot>O5mM#>EP{vxVMG1|OHr`063c+B*;$oDHzX?-;saTlC$P7%^+jxq z(eI9vN)dF1`!{>;xo2i~8(OY4jg)GtQYX4mp^1i6W6lP00TdArb*oI<>R}c$16m!IHpoE3pFk$etf3=a=uGGTnPkL9vf)LIf0qjGo75GKj9`m97U7PU ef2V0iFV9cQzhq;i)mPr};VbuJ7d+C!>R6v=H)zTL diff --git a/FPGA_by_Gregory_Estrade/firebee1.rbf b/FPGA_by_Gregory_Estrade/firebee1.rbf deleted file mode 100644 index 99fa0be5853275aa489fd4c7595544e1bb0b31c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1191788 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

u1!|smTkIaubx&8v_*UFM|J8qn(dPYSc&`B-a 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η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 diff --git a/FPGA_by_Gregory_Estrade/firebee1.sdc b/FPGA_by_Gregory_Estrade/firebee1.sdc deleted file mode 100644 index 0a81d12..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.sdc +++ /dev/null @@ -1,149 +0,0 @@ -########################################################################### -# -# Generated by : Version 9.1 Build 222 10/21/2009 SJ Full Version -# -# Project : firebee1 -# Revision : firebee1 -# -# Date : Sat Mar 01 15:22:38 CET 2014 -# -########################################################################### - - -# WARNING: Ignored QSF Variable: Global TSU_REQUIREMENT = 1 ns -# WARNING: Ignored QSF Variable: Global TH_REQUIREMENT = 1 ns -# WARNING: Ignored QSF Variable: Global TPD_REQUIREMENT = 1 ns -# WARNING: Ignored QSF Variable: Global TCO_REQUIREMENT = 1 ns -# WARNING: Expected ENABLE_CLOCK_LATENCY to be set to 'ON', but it is set to 'OFF' -# In SDC, create_generated_clock auto-generates clock latency -# -# ------------------------------------------ -# -# Create generated clocks based on PLLs -derive_pll_clocks -use_tan_name -# -# ------------------------------------------ -# WARNING: Global Fmax translated to derive_clocks. Behavior is not identical -if {![info exist ::qsta_message_posted]} { - post_message -type warning "Original Global Fmax translated from QSF using derive_clocks" - set ::qsta_message_posted 1 -} -derive_clocks -period "30.303 ns" -# - - -# Original Clock Setting Name: CLK33M -create_clock -period "30.303 ns" \ - -name {CLK33M} {CLK33M} -# --------------------------------------------- - -# ** Clock Latency -# ------------- - -# ** Clock Uncertainty -# ----------------- - -derive_clock_uncertainty - -# ** Multicycles -# ----------- - -# ** Cuts -# ---- - -# ** Input/Output Delays -# ------------------- -# QSF: -name INPUT_MAX_DELAY 4 ns -from * -to FB_ALE -# Command requires a unique clock. Expand clock -#foreach_in_collection clk [get_clocks * ] { -# set_input_delay -add_delay -max 4 -clock [get_object_info -name $clk] [get_ports {FB_ALE}] -#} -#set_input_delay -add_delay -max 4 -clock {altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[4]} [get_ports {FB_ALE}] - -# ** Tpd requirements -# ---------------- - -# ** Setup/Hold Relationships -# ------------------------ - -# ** Tsu/Th requirements -# ------------------- - - -# ** Tco/MinTco requirements -# ----------------------- - -# -# Entity Specific Timing Assignments found in -# the Timing Analyzer Settings report panel -# -set_false_path -from [get_registers {*dcfifo*delayed_wrptr_g[*]}] -to [get_registers {*dcfifo*rs_dgwp*}] -set_false_path -from [get_registers {*dcfifo*rdptr_g[*]}] -to [get_registers {*dcfifo*ws_dgrp*}] - -set_clock_groups -asynchronous -group { \ -altpll4:b2v_inst22|altpll:altpll_component|altpll_qfk2:auto_generated|clk[0] \ -} \ --group { \ -altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[3] \ -} \ --group { \ -altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[2] \ -} \ --group { \ -altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[1] \ -} \ --group { \ -altpll3:b2v_inst13|altpll:altpll_component|altpll_jvs2:auto_generated|clk[0] \ -} \ --group { \ -altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[4] \ -altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[3] \ -altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[2] \ -altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[1] \ -altpll2:b2v_inst12|altpll:altpll_component|altpll_1r33:auto_generated|clk[0] \ -CLK33M \ -} \ --group { \ -altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[2] \ -altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[1] \ -} \ --group { \ -altpll1:b2v_inst|altpll:altpll_component|altpll_8tp2:auto_generated|clk[0] \ -} \ - - -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -setup -end 2 -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -hold -end 1 - -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {CLK33M}] -setup -end 2 -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -to [get_clocks {CLK33M}] -hold -end 1 - -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -to [get_clocks {CLK33M}] -setup -end 2 -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[0]}] -to [get_clocks {CLK33M}] -hold -end 1 - -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[3]}] -to [get_clocks {CLK33M}] -setup -end 2 -set_multicycle_path -from [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[3]}] -to [get_clocks {CLK33M}] -hold -end 1 - -set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -setup -end 2 -set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[4]}] -hold -end 1 - -set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[1]}] -setup -end 2 -set_multicycle_path -from [get_clocks {CLK33M}] -to [get_clocks {altpll2:b2v_inst12|altpll:altpll_component|altpll_*:auto_generated|clk[1]}] -hold -end 1 - -# --------------------------------------------- - -# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from VD -to FB_AD -# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to VA -# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to nVRAS -# WARNING: Ignored QSF Variable: -name MAX_DELAY 5 ns -from FB_AD -to BA -#set_max_delay -from [get_ports {VD[*]}] -to [get_ports {FB_AD[*]}] 5.000 -#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {VA[*]}] 5.000 -#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {nVRAS}] 5.000 -#set_max_delay -from [get_ports {FB_AD[*]}] -to [get_ports {BA[*]}] 5.000 - -# Constrain the input I/O path -set_input_delay -clock CLK33M -max 5 [all_inputs] -#set_input_delay -clock CLK33M -min 4 [all_inputs] - -# Constrain the output I/O path -set_output_delay -clock CLK33M -max 5 [all_outputs] diff --git a/FPGA_by_Gregory_Estrade/firebee1.v b/FPGA_by_Gregory_Estrade/firebee1.v deleted file mode 100644 index b2dcdf6..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.v +++ /dev/null @@ -1,707 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:20:47 2014" - -module firebee1( - FB_ALE, - nFB_WR, - CLK33M, - nFB_CS1, - nFB_CS2, - nFB_CS3, - FB_SIZE0, - FB_SIZE1, - nFB_BURST, - LP_BUSY, - nACSI_DRQ, - nACSI_INT, - RxD, - CTS, - RI, - DCD, - AMKB_RX, - PIC_AMKB_RX, - IDE_RDY, - IDE_INT, - WP_CF_CARD, - TRACK00, - nWP, - nDCHG, - SD_DATA0, - SD_DATA1, - SD_DATA2, - SD_CARD_DEDECT, - MIDI_IN, - nSCSI_DRQ, - SD_WP, - nRD_DATA, - nSCSI_C_D, - nSCSI_I_O, - nSCSI_MSG, - nDACK0, - PIC_INT, - nFB_OE, - TOUT0, - nMASTER, - DVI_INT, - nDACK1, - nPCI_INTD, - nPCI_INTC, - nPCI_INTB, - nPCI_INTA, - E0_INT, - nINDEX, - HD_DD, - MAIN_CLK, - nRSTO_MCF, - CLK24M576, - LP_STR, - nACSI_ACK, - nACSI_RESET, - nACSI_CS, - ACSI_DIR, - ACSI_A1, - nSCSI_ACK, - nSCSI_ATN, - SCSI_DIR, - MIDI_OLR, - MIDI_TLR, - TxD, - RTS, - DTR, - AMKB_TX, - IDE_RES, - nIDE_CS0, - nIDE_CS1, - nIDE_WR, - nIDE_RD, - nCF_CS0, - nCF_CS1, - nROM3, - nROM4, - nRP_UDS, - nRP_LDS, - nSDSEL, - nWR_GATE, - nWR, - YM_QA, - YM_QB, - YM_QC, - SD_CLK, - DSA_D, - nVWE, - nVCAS, - nVRAS, - nVCS, - nPD_VGA, - CLK25M, - TIN0, - nSRCS, - nSRBLE, - nSRBHE, - nSRWE, - nDREQ1, - LED_FPGA_OK, - nSROE, - VCKE, - nFB_TA, - nDDR_CLK, - DDR_CLK, - VSYNC_PAD, - HSYNC_PAD, - nBLANK_PAD, - PIXEL_CLK_PAD, - nSYNC, - nMOT_ON, - nSTEP_DIR, - nSTEP, - CLKUSB, - LPDIR, - SCSI_PAR, - nSCSI_RST, - nSCSI_SEL, - nSCSI_BUSY, - SD_CD_DATA3, - SD_CMD_D1, - ACSI_D, - BA, - FB_AD, - IO, - LP_D, - nIRQ, - SCSI_D, - SRD, - VA, - VB, - VD, - VDM, - VDQS, - VG, - VR -); - - -input FB_ALE; -input nFB_WR; -input CLK33M; -input nFB_CS1; -input nFB_CS2; -input nFB_CS3; -input FB_SIZE0; -input FB_SIZE1; -input nFB_BURST; -input LP_BUSY; -input nACSI_DRQ; -input nACSI_INT; -input RxD; -input CTS; -input RI; -input DCD; -input AMKB_RX; -input PIC_AMKB_RX; -input IDE_RDY; -input IDE_INT; -input WP_CF_CARD; -input TRACK00; -input nWP; -input nDCHG; -input SD_DATA0; -input SD_DATA1; -input SD_DATA2; -input SD_CARD_DEDECT; -input MIDI_IN; -input nSCSI_DRQ; -input SD_WP; -input nRD_DATA; -input nSCSI_C_D; -input nSCSI_I_O; -input nSCSI_MSG; -input nDACK0; -input PIC_INT; -input nFB_OE; -input TOUT0; -input nMASTER; -input DVI_INT; -input nDACK1; -input nPCI_INTD; -input nPCI_INTC; -input nPCI_INTB; -input nPCI_INTA; -input E0_INT; -input nINDEX; -input HD_DD; -input MAIN_CLK; -input nRSTO_MCF; -output CLK24M576; -output LP_STR; -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 DTR; -output AMKB_TX; -output IDE_RES; -output nIDE_CS0; -output nIDE_CS1; -output nIDE_WR; -output nIDE_RD; -output nCF_CS0; -output nCF_CS1; -output nROM3; -output nROM4; -output nRP_UDS; -output nRP_LDS; -output nSDSEL; -output nWR_GATE; -output nWR; -output YM_QA; -output YM_QB; -output YM_QC; -output SD_CLK; -output DSA_D; -output nVWE; -output nVCAS; -output nVRAS; -output nVCS; -output nPD_VGA; -output CLK25M; -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 HSYNC_PAD; -output nBLANK_PAD; -output PIXEL_CLK_PAD; -output nSYNC; -output nMOT_ON; -output nSTEP_DIR; -output nSTEP; -output CLKUSB; -output LPDIR; -inout SCSI_PAR; -inout nSCSI_RST; -inout nSCSI_SEL; -inout nSCSI_BUSY; -inout SD_CD_DATA3; -inout SD_CMD_D1; -inout [7:0] ACSI_D; -output [1:0] BA; -inout [31:0] FB_AD; -inout [17:0] IO; -inout [7:0] LP_D; -output [7:2] nIRQ; -inout [7:0] SCSI_D; -inout [15:0] SRD; -output [12:0] VA; -output [7:0] VB; -inout [31:0] VD; -output [3:0] VDM; -inout [3:0] VDQS; -output [7:0] VG; -output [7:0] VR; - -wire [31:0] ACP_CONF; -wire CLK25M_ALTERA_SYNTHESIZED; -wire CLK2M; -wire CLK2M4576; -wire CLK48M; -wire CLK500k; -wire CLK_VIDEO; -wire DDR_SYNC_66M; -wire [3:0] DDRCLK; -wire DMA_DRQ; -wire DSP_INT; -wire DSP_TA; -wire FALCON_IO_TA; - -//GE wire [31:0] FB_ADR; -reg [31:0] FB_ADR; - -wire FDC_CLK; -wire HSYNC; -wire INT_HANDLER_TA; -wire LP_DIR; -wire MOT_ON; -wire nBLANK; -wire nDREQ0; -wire nMFP_INT; -wire nRSTO; -wire PIXEL_CLK; -wire SD_CDM_D1; -wire STEP; -wire STEP_DIR; -wire [17:0] TIMEBASE; -wire VIDEO_RECONFIG; -wire Video_TA; -wire VR_BUSY; -wire [8:0] VR_D; -wire VR_RD; -wire VR_WR; -wire VSYNC; -wire WR_DATA; -wire WR_GATE; -wire SYNTHESIZED_WIRE_0; -wire SYNTHESIZED_WIRE_1; -wire SYNTHESIZED_WIRE_2; -wire SYNTHESIZED_WIRE_3; -wire SYNTHESIZED_WIRE_4; -wire SYNTHESIZED_WIRE_5; -wire SYNTHESIZED_WIRE_6; -wire SYNTHESIZED_WIRE_7; -wire SYNTHESIZED_WIRE_8; -wire SYNTHESIZED_WIRE_9; -wire SYNTHESIZED_WIRE_10; - -assign nDREQ1 = nDACK1; -assign SYNTHESIZED_WIRE_9 = 0; -assign SYNTHESIZED_WIRE_10 = 1; - -wire w_MAIN_CLK; -assign w_MAIN_CLK = CLK33M; - -video b2v_Fredi_Aschwanden( - .MAIN_CLK(w_MAIN_CLK), - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .nFB_CS3(nFB_CS3), - .nFB_WR(nFB_WR), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .nRSTO(nRSTO), - .nFB_OE(nFB_OE), - .FB_ALE(FB_ALE), - .DDR_SYNC_66M(DDR_SYNC_66M), - .CLK33M(CLK33M), - .CLK25M(CLK25M_ALTERA_SYNTHESIZED), - .CLK_VIDEO(CLK_VIDEO), - .VR_BUSY(VR_BUSY), - .DDRCLK(DDRCLK), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .VD(VD), - .VDQS(VDQS), - .VR_D(VR_D), - .VR_RD(VR_RD), - .nBLANK(nBLANK), - .nVWE(nVWE), - .nVCAS(nVCAS), - .nVRAS(nVRAS), - .nVCS(nVCS), - .nPD_VGA(nPD_VGA), - .VCKE(VCKE), - .VSYNC(VSYNC), - .HSYNC(HSYNC), - .nSYNC(nSYNC), - .VIDEO_TA(Video_TA), - .PIXEL_CLK(PIXEL_CLK), - .VIDEO_RECONFIG(VIDEO_RECONFIG), - .VR_WR(VR_WR), - .BA(BA), - - .VA(VA), - .VB(VB), - - .VDM(VDM), - - .VG(VG), - .VR(VR)); - - -altpll1 b2v_inst( - .inclk0(CLK33M), - .c0(CLK500k), - .c1(CLK2M4576), - .c2(CLK24M576), - .locked(SYNTHESIZED_WIRE_5)); - - -/*lpm_ff0 b2v_inst1( - .clock(DDR_SYNC_66M), - .enable(FB_ALE), - .data(FB_AD), - .q(FB_ADR));*/ -always @(posedge DDR_SYNC_66M) -begin - if (FB_ALE) - FB_ADR <= FB_AD; -end - - - - - -altpll2 b2v_inst12( - .inclk0(w_MAIN_CLK), - .c0(DDRCLK[0]), - .c1(DDRCLK[1]), - .c2(DDRCLK[2]), - .c3(DDRCLK[3]), - .c4(DDR_SYNC_66M)); - - -altpll3 b2v_inst13( - .inclk0(CLK33M), - .c0(CLK2M), - .c1(FDC_CLK), - .c2(CLK25M_ALTERA_SYNTHESIZED), - .c3(CLK48M)); - -assign nMOT_ON = ~MOT_ON; - -assign nSTEP_DIR = ~STEP_DIR; - -assign nSTEP = ~STEP; - -assign nWR = ~WR_DATA; - - -lpm_counter0 b2v_inst18( - .clock(CLK500k), - .q(TIMEBASE)); - -assign nWR_GATE = ~WR_GATE; - -assign nFB_TA = ~(Video_TA | INT_HANDLER_TA | DSP_TA | FALCON_IO_TA); - - -altpll4 b2v_inst22( - .inclk0(CLK48M), - .areset(SYNTHESIZED_WIRE_0), - .scanclk(SYNTHESIZED_WIRE_1), - .scandata(SYNTHESIZED_WIRE_2), - .scanclkena(SYNTHESIZED_WIRE_3), - .configupdate(SYNTHESIZED_WIRE_4), - .c0(CLK_VIDEO), - .scandataout(SYNTHESIZED_WIRE_6), - .scandone(SYNTHESIZED_WIRE_7) - ); - -assign SYNTHESIZED_WIRE_8 = ~nRSTO; - -assign nRSTO = SYNTHESIZED_WIRE_5 & nRSTO_MCF; - -assign LED_FPGA_OK = TIMEBASE[17]; - - -assign nDDR_CLK = ~DDRCLK[0]; - - -altddio_out3 b2v_inst5( - .datain_h(VSYNC), - .datain_l(VSYNC), - .outclock(PIXEL_CLK), - .dataout(VSYNC_PAD)); - - -altddio_out3 b2v_inst6( - .datain_h(HSYNC), - .datain_l(HSYNC), - .outclock(PIXEL_CLK), - .dataout(HSYNC_PAD)); - - -altpll_reconfig1 b2v_inst7( - .reconfig(VIDEO_RECONFIG), - .read_param(VR_RD), - .write_param(VR_WR), - .pll_scandataout(SYNTHESIZED_WIRE_6), - .pll_scandone(SYNTHESIZED_WIRE_7), - .clock(w_MAIN_CLK), - .reset(SYNTHESIZED_WIRE_8), - - .counter_param(FB_ADR[8:6]), - .counter_type(FB_ADR[5:2]), - .data_in(FB_AD[24:16]), - .busy(VR_BUSY), - .pll_scandata(SYNTHESIZED_WIRE_2), - .pll_scanclk(SYNTHESIZED_WIRE_1), - .pll_scanclkena(SYNTHESIZED_WIRE_3), - .pll_configupdate(SYNTHESIZED_WIRE_4), - .pll_areset(SYNTHESIZED_WIRE_0), - .data_out(VR_D)); - - -altddio_out3 b2v_inst8( - .datain_h(nBLANK), - .datain_l(nBLANK), - .outclock(PIXEL_CLK), - .dataout(nBLANK_PAD)); - - -altddio_out3 b2v_inst9( - .datain_h(SYNTHESIZED_WIRE_9), - .datain_l(SYNTHESIZED_WIRE_10), - .outclock(PIXEL_CLK), - .dataout(PIXEL_CLK_PAD)); - - -DSP b2v_Mathias_Alles( - .CLK33M(CLK33M), - .MAIN_CLK(w_MAIN_CLK), - .nFB_OE(nFB_OE), - .nFB_WR(nFB_WR), - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .nFB_BURST(nFB_BURST), - .nRSTO(nRSTO), - .nFB_CS3(nFB_CS3), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .IO(IO), - .SRD(SRD), - .nSRCS(nSRCS), - .nSRBLE(nSRBLE), - .nSRBHE(nSRBHE), - .nSRWE(nSRWE), - .nSROE(nSROE), - .DSP_INT(DSP_INT), - .DSP_TA(DSP_TA) - - - ); - - -interrupt_handler b2v_nobody( - .MAIN_CLK(w_MAIN_CLK), - .nFB_WR(nFB_WR), - .nFB_CS1(nFB_CS1), - .nFB_CS2(nFB_CS2), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .PIC_INT(PIC_INT), - .E0_INT(E0_INT), - .DVI_INT(DVI_INT), - .nPCI_INTA(nPCI_INTA), - .nPCI_INTB(nPCI_INTB), - .nPCI_INTC(nPCI_INTC), - .nPCI_INTD(nPCI_INTD), - .nMFP_INT(nMFP_INT), - .nFB_OE(nFB_OE), - .DSP_INT(DSP_INT), - .VSYNC(VSYNC), - .HSYNC(HSYNC), - .DMA_DRQ(DMA_DRQ), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .INT_HANDLER_TA(INT_HANDLER_TA), - .TIN0(TIN0), - .ACP_CONF(ACP_CONF), - .nRST(nRSTO), //GE - .nIRQ(nIRQ)); - - -FalconIO_SDCard_IDE_CF b2v_Wolfgang_Foerster_and_Fredi_Aschwanden( - .CLK33M(CLK33M), - .MAIN_CLK(w_MAIN_CLK), - .CLK2M(CLK2M), - .CLK500k(CLK500k), - .nFB_CS1(nFB_CS1), - .FB_SIZE0(FB_SIZE0), - .FB_SIZE1(FB_SIZE1), - .nFB_BURST(nFB_BURST), - .LP_BUSY(LP_BUSY), - .nACSI_DRQ(nACSI_DRQ), - .nACSI_INT(nACSI_INT), - .nSCSI_DRQ(nSCSI_DRQ), - .nSCSI_MSG(nSCSI_MSG), - .MIDI_IN(MIDI_IN), - .RxD(RxD), - .CTS(CTS), - .RI(RI), - .DCD(DCD), - .AMKB_RX(AMKB_RX), - .PIC_AMKB_RX(PIC_AMKB_RX), - .IDE_RDY(IDE_RDY), - .IDE_INT(IDE_INT), - - .nINDEX(nINDEX), - .TRACK00(TRACK00), - .nRD_DATA(nRD_DATA), - .nDCHG(nDCHG), - .SD_DATA0(SD_DATA0), - .SD_DATA1(SD_DATA1), - .SD_DATA2(SD_DATA2), - .SD_CARD_DEDECT(SD_CARD_DEDECT), - .SD_WP(SD_WP), - .nDACK0(nDACK0), - .nFB_WR(nFB_WR), - .WP_CF_CARD(WP_CF_CARD), - .nWP(nWP), - .nFB_CS2(nFB_CS2), - .nRSTO(nRSTO), - .nSCSI_C_D(nSCSI_C_D), - .nSCSI_I_O(nSCSI_I_O), - .CLK2M4576(CLK2M4576), - .nFB_OE(nFB_OE), - .VSYNC(VSYNC), - .HSYNC(HSYNC), - .DSP_INT(DSP_INT), - .nBLANK(nBLANK), - .FDC_CLK(FDC_CLK), - .FB_ALE(FB_ALE), - .HD_DD(HD_DD), - .SCSI_PAR(SCSI_PAR), - .nSCSI_SEL(nSCSI_SEL), - .nSCSI_BUSY(nSCSI_BUSY), - .nSCSI_RST(nSCSI_RST), - .SD_CD_DATA3(SD_CD_DATA3), - .SD_CDM_D1(SD_CDM_D1), - .ACP_CONF(ACP_CONF[31:24]), - .ACSI_D(ACSI_D), - .FB_AD(FB_AD), - .FB_ADR(FB_ADR), - .LP_D(LP_D), - .SCSI_D(SCSI_D), - .nIDE_CS1(nIDE_CS1), - .nIDE_CS0(nIDE_CS0), - .LP_STR(LP_STR), - .LP_DIR(LP_DIR), - .nACSI_ACK(nACSI_ACK), - .nACSI_RESET(nACSI_RESET), - .nACSI_CS(nACSI_CS), - .ACSI_DIR(ACSI_DIR), - .ACSI_A1(ACSI_A1), - .nSCSI_ACK(nSCSI_ACK), - .nSCSI_ATN(nSCSI_ATN), - .SCSI_DIR(SCSI_DIR), - .SD_CLK(SD_CLK), - .YM_QA(YM_QA), - .YM_QC(YM_QC), - .YM_QB(YM_QB), - .nSDSEL(nSDSEL), - .STEP(STEP), - .MOT_ON(MOT_ON), - .nRP_LDS(nRP_LDS), - .nRP_UDS(nRP_UDS), - .nROM4(nROM4), - .nROM3(nROM3), - .nCF_CS1(nCF_CS1), - .nCF_CS0(nCF_CS0), - .nIDE_RD(nIDE_RD), - .nIDE_WR(nIDE_WR), - .AMKB_TX(AMKB_TX), - .IDE_RES(IDE_RES), - .DTR(DTR), - .RTS(RTS), - .TxD(TxD), - .MIDI_OLR(MIDI_OLR), - .MIDI_TLR(MIDI_TLR), - - .DSA_D(DSA_D), - .nMFP_INT(nMFP_INT), - .FALCON_IO_TA(FALCON_IO_TA), - .STEP_DIR(STEP_DIR), - .WR_DATA(WR_DATA), - .WR_GATE(WR_GATE), - .DMA_DRQ(DMA_DRQ) - - - - - - - - - - ); - -assign SD_CMD_D1 = SD_CDM_D1; -assign CLK25M = CLK25M_ALTERA_SYNTHESIZED; -assign DDR_CLK = DDRCLK[0]; -assign CLKUSB = CLK48M; -assign LPDIR = LP_DIR; - -endmodule diff --git a/FPGA_by_Gregory_Estrade/firebee1.vhd b/FPGA_by_Gregory_Estrade/firebee1.vhd deleted file mode 100644 index 25431e1..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1.vhd +++ /dev/null @@ -1,861 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:20:24 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY work; - -ENTITY firebee1 IS - PORT - ( - FB_ALE : IN STD_LOGIC; - nFB_WR : IN STD_LOGIC; - CLK33M : IN STD_LOGIC; - nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - FB_SIZE0 : IN STD_LOGIC; - FB_SIZE1 : IN STD_LOGIC; - nFB_BURST : IN STD_LOGIC; - LP_BUSY : IN STD_LOGIC; - nACSI_DRQ : IN STD_LOGIC; - nACSI_INT : 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_CF_CARD : IN STD_LOGIC; - TRACK00 : IN STD_LOGIC; - nWP : 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; - MIDI_IN : IN STD_LOGIC; - nSCSI_DRQ : IN STD_LOGIC; - SD_WP : IN STD_LOGIC; - nRD_DATA : IN STD_LOGIC; - nSCSI_C_D : IN STD_LOGIC; - nSCSI_I_O : IN STD_LOGIC; - nSCSI_MSG : IN STD_LOGIC; - nDACK0 : IN STD_LOGIC; - PIC_INT : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - TOUT0 : IN STD_LOGIC; - nMASTER : IN STD_LOGIC; - DVI_INT : IN STD_LOGIC; - nDACK1 : IN STD_LOGIC; - nPCI_INTD : IN STD_LOGIC; - nPCI_INTC : IN STD_LOGIC; - nPCI_INTB : IN STD_LOGIC; - nPCI_INTA : IN STD_LOGIC; - E0_INT : IN STD_LOGIC; - nINDEX : IN STD_LOGIC; - HD_DD : IN STD_LOGIC; - MAIN_CLK : IN STD_LOGIC; - nRSTO_MCF : IN STD_LOGIC; - SCSI_PAR : INOUT STD_LOGIC; - nSCSI_RST : INOUT STD_LOGIC; - nSCSI_SEL : INOUT STD_LOGIC; - nSCSI_BUSY : INOUT STD_LOGIC; - SD_CD_DATA3 : INOUT STD_LOGIC; - SD_CMD_D1 : INOUT STD_LOGIC; - ACSI_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - IO : INOUT STD_LOGIC_VECTOR(17 DOWNTO 0); - LP_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - SCSI_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - SRD : INOUT STD_LOGIC_VECTOR(15 DOWNTO 0); - VD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - VDQS : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0); - CLK24M576 : OUT STD_LOGIC; - LP_STR : 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; - MIDI_OLR : OUT STD_LOGIC; - MIDI_TLR : OUT STD_LOGIC; - TxD : OUT STD_LOGIC; - RTS : OUT STD_LOGIC; - DTR : OUT STD_LOGIC; - AMKB_TX : OUT STD_LOGIC; - IDE_RES : OUT STD_LOGIC; - nIDE_CS0 : OUT STD_LOGIC; - nIDE_CS1 : OUT STD_LOGIC; - nIDE_WR : OUT STD_LOGIC; - nIDE_RD : OUT STD_LOGIC; - nCF_CS0 : OUT STD_LOGIC; - nCF_CS1 : OUT STD_LOGIC; - nROM3 : OUT STD_LOGIC; - nROM4 : OUT STD_LOGIC; - nRP_UDS : OUT STD_LOGIC; - nRP_LDS : OUT STD_LOGIC; - nSDSEL : OUT STD_LOGIC; - nWR_GATE : OUT STD_LOGIC; - nWR : OUT STD_LOGIC; - YM_QA : OUT STD_LOGIC; - YM_QB : OUT STD_LOGIC; - YM_QC : OUT STD_LOGIC; - SD_CLK : OUT STD_LOGIC; - DSA_D : OUT STD_LOGIC; - nVWE : OUT STD_LOGIC; - nVCAS : OUT STD_LOGIC; - nVRAS : OUT STD_LOGIC; - nVCS : OUT STD_LOGIC; - nPD_VGA : OUT STD_LOGIC; - CLK25M : OUT STD_LOGIC; - TIN0 : OUT STD_LOGIC; - nSRCS : OUT STD_LOGIC; - nSRBLE : OUT STD_LOGIC; - nSRBHE : OUT STD_LOGIC; - nSRWE : OUT STD_LOGIC; - nDREQ1 : OUT STD_LOGIC; - LED_FPGA_OK : OUT STD_LOGIC; - nSROE : OUT STD_LOGIC; - VCKE : OUT STD_LOGIC; - nFB_TA : OUT STD_LOGIC; - nDDR_CLK : OUT STD_LOGIC; - DDR_CLK : OUT STD_LOGIC; - VSYNC_PAD : OUT STD_LOGIC; - HSYNC_PAD : OUT STD_LOGIC; - nBLANK_PAD : OUT STD_LOGIC; - PIXEL_CLK_PAD : OUT STD_LOGIC; - nSYNC : OUT STD_LOGIC; - nMOT_ON : OUT STD_LOGIC; - nSTEP_DIR : OUT STD_LOGIC; - nSTEP : OUT STD_LOGIC; - CLKUSB : OUT STD_LOGIC; - LPDIR : OUT STD_LOGIC; - BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); - nIRQ : OUT STD_LOGIC_VECTOR(7 DOWNTO 2); - VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); - VB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VDM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - VG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) - ); -END firebee1; - -ARCHITECTURE bdf_type OF firebee1 IS - -COMPONENT video - PORT(MAIN_CLK : IN STD_LOGIC; - nFB_CS1 : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - nFB_WR : IN STD_LOGIC; - FB_SIZE0 : IN STD_LOGIC; - FB_SIZE1 : IN STD_LOGIC; - nRSTO : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - FB_ALE : IN STD_LOGIC; - DDR_SYNC_66M : IN STD_LOGIC; - CLK33M : IN STD_LOGIC; - CLK25M : IN STD_LOGIC; - CLK_VIDEO : IN STD_LOGIC; - VR_BUSY : IN STD_LOGIC; - DDRCLK : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - VD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - VDQS : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0); - VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0); - VR_RD : OUT STD_LOGIC; - nBLANK : OUT STD_LOGIC; - nVWE : OUT STD_LOGIC; - nVCAS : OUT STD_LOGIC; - nVRAS : OUT STD_LOGIC; - nVCS : OUT STD_LOGIC; - nPD_VGA : OUT STD_LOGIC; - VCKE : OUT STD_LOGIC; - VSYNC : OUT STD_LOGIC; - HSYNC : OUT STD_LOGIC; - nSYNC : OUT STD_LOGIC; - VIDEO_TA : OUT STD_LOGIC; - PIXEL_CLK : OUT STD_LOGIC; - VIDEO_RECONFIG : OUT STD_LOGIC; - VR_WR : OUT STD_LOGIC; - BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); - VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); - VB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VDM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); - VG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - VR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altpll1 - PORT(inclk0 : IN STD_LOGIC; - c0 : OUT STD_LOGIC; - c1 : OUT STD_LOGIC; - c2 : OUT STD_LOGIC; - locked : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT lpm_ff0 - PORT(clock : IN STD_LOGIC; - enable : IN STD_LOGIC; - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altpll2 - PORT(inclk0 : IN STD_LOGIC; - c0 : OUT STD_LOGIC; - c1 : OUT STD_LOGIC; - c2 : OUT STD_LOGIC; - c3 : OUT STD_LOGIC; - c4 : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT altpll3 - PORT(inclk0 : IN STD_LOGIC; - c0 : OUT STD_LOGIC; - c1 : OUT STD_LOGIC; - c2 : OUT STD_LOGIC; - c3 : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT lpm_counter0 - PORT(clock : IN STD_LOGIC; - q : OUT STD_LOGIC_VECTOR(17 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT altpll4 - PORT(inclk0 : IN STD_LOGIC; - areset : IN STD_LOGIC; - scanclk : IN STD_LOGIC; - scandata : IN STD_LOGIC; - scanclkena : IN STD_LOGIC; - configupdate : IN STD_LOGIC; - c0 : OUT STD_LOGIC; - scandataout : OUT STD_LOGIC; - scandone : OUT STD_LOGIC; - locked : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT altddio_out3 - PORT(datain_h : IN STD_LOGIC; - datain_l : IN STD_LOGIC; - outclock : IN STD_LOGIC; - dataout : OUT STD_LOGIC - ); -END COMPONENT; - -COMPONENT altpll_reconfig1 - PORT(reconfig : IN STD_LOGIC; - read_param : IN STD_LOGIC; - write_param : IN STD_LOGIC; - pll_scandataout : IN STD_LOGIC; - pll_scandone : IN STD_LOGIC; - clock : IN STD_LOGIC; - reset : IN STD_LOGIC; - pll_areset_in : 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); - busy : OUT STD_LOGIC; - pll_scandata : OUT STD_LOGIC; - pll_scanclk : OUT STD_LOGIC; - pll_scanclkena : OUT STD_LOGIC; - pll_configupdate : OUT STD_LOGIC; - pll_areset : OUT STD_LOGIC; - data_out : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) - ); -END COMPONENT; - -COMPONENT dsp - 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; - nRSTO : IN STD_LOGIC; - nFB_CS3 : IN STD_LOGIC; - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - IO : INOUT STD_LOGIC_VECTOR(17 DOWNTO 0); - SRD : INOUT STD_LOGIC_VECTOR(15 DOWNTO 0); - 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 - ); -END COMPONENT; - -COMPONENT interrupt_handler - PORT(MAIN_CLK : 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; - PIC_INT : IN STD_LOGIC; - E0_INT : IN STD_LOGIC; - DVI_INT : IN STD_LOGIC; - nPCI_INTA : IN STD_LOGIC; - nPCI_INTB : IN STD_LOGIC; - nPCI_INTC : IN STD_LOGIC; - nPCI_INTD : IN STD_LOGIC; - nMFP_INT : IN STD_LOGIC; - nFB_OE : IN STD_LOGIC; - DSP_INT : IN STD_LOGIC; - VSYNC : IN STD_LOGIC; - HSYNC : IN STD_LOGIC; - DMA_DRQ : IN STD_LOGIC; - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - INT_HANDLER_TA : OUT STD_LOGIC; - TIN0 : OUT STD_LOGIC; - ACP_CONF : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); - nIRQ : OUT STD_LOGIC_VECTOR(7 DOWNTO 2) - ); -END COMPONENT; - -COMPONENT falconio_sdcard_ide_cf - 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; - 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 : IN STD_LOGIC; - WP_CF_CARD : IN STD_LOGIC; - nWP : IN STD_LOGIC; - nFB_CS2 : IN STD_LOGIC; - nRSTO : 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; - HD_DD : IN STD_LOGIC; - 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; - ACP_CONF : IN STD_LOGIC_VECTOR(31 DOWNTO 24); - ACSI_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0); - FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - LP_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - SCSI_D : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - 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 : OUT STD_LOGIC; - nIDE_WR : OUT 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 - ); -END COMPONENT; - -SIGNAL ACP_CONF : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL CLK25M_ALTERA_SYNTHESIZED : STD_LOGIC; -SIGNAL CLK2M : STD_LOGIC; -SIGNAL CLK2M4576 : STD_LOGIC; -SIGNAL CLK48M : STD_LOGIC; -SIGNAL CLK500k : STD_LOGIC; -SIGNAL CLK_VIDEO : STD_LOGIC; -SIGNAL DDR_SYNC_66M : STD_LOGIC; -SIGNAL DDRCLK : STD_LOGIC_VECTOR(3 DOWNTO 0); -SIGNAL DMA_DRQ : STD_LOGIC; -SIGNAL DSP_INT : STD_LOGIC; -SIGNAL DSP_TA : STD_LOGIC; -SIGNAL FALCON_IO_TA : STD_LOGIC; -SIGNAL FB_ADR : STD_LOGIC_VECTOR(31 DOWNTO 0); -SIGNAL FDC_CLK : STD_LOGIC; -SIGNAL HSYNC : STD_LOGIC; -SIGNAL INT_HANDLER_TA : STD_LOGIC; -SIGNAL LP_DIR : STD_LOGIC; -SIGNAL MOT_ON : STD_LOGIC; -SIGNAL nBLANK : STD_LOGIC; -SIGNAL nDREQ0 : STD_LOGIC; -SIGNAL nMFP_INT : STD_LOGIC; -SIGNAL nRSTO : STD_LOGIC; -SIGNAL PIXEL_CLK : STD_LOGIC; -SIGNAL SD_CDM_D1 : STD_LOGIC; -SIGNAL STEP : STD_LOGIC; -SIGNAL STEP_DIR : STD_LOGIC; -SIGNAL TIMEBASE : STD_LOGIC_VECTOR(17 DOWNTO 0); -SIGNAL VIDEO_RECONFIG : STD_LOGIC; -SIGNAL Video_TA : STD_LOGIC; -SIGNAL VR_BUSY : STD_LOGIC; -SIGNAL VR_D : STD_LOGIC_VECTOR(8 DOWNTO 0); -SIGNAL VR_RD : STD_LOGIC; -SIGNAL VR_WR : STD_LOGIC; -SIGNAL VSYNC : STD_LOGIC; -SIGNAL WR_DATA : STD_LOGIC; -SIGNAL WR_GATE : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_3 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_4 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_5 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_6 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_7 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_8 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_9 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC; - - -BEGIN -nDREQ1 <= nDACK1; -SYNTHESIZED_WIRE_9 <= '0'; -SYNTHESIZED_WIRE_10 <= '1'; - - - -b2v_Fredi_Aschwanden : video -PORT MAP(MAIN_CLK => MAIN_CLK, - nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - nFB_CS3 => nFB_CS3, - nFB_WR => nFB_WR, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - nRSTO => nRSTO, - nFB_OE => nFB_OE, - FB_ALE => FB_ALE, - DDR_SYNC_66M => DDR_SYNC_66M, - CLK33M => CLK33M, - CLK25M => CLK25M_ALTERA_SYNTHESIZED, - CLK_VIDEO => CLK_VIDEO, - VR_BUSY => VR_BUSY, - DDRCLK => DDRCLK, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - VD => VD, - VDQS => VDQS, - VR_D => VR_D, - VR_RD => VR_RD, - nBLANK => nBLANK, - nVWE => nVWE, - nVCAS => nVCAS, - nVRAS => nVRAS, - nVCS => nVCS, - nPD_VGA => nPD_VGA, - VCKE => VCKE, - VSYNC => VSYNC, - HSYNC => HSYNC, - nSYNC => nSYNC, - VIDEO_TA => Video_TA, - PIXEL_CLK => PIXEL_CLK, - VIDEO_RECONFIG => VIDEO_RECONFIG, - VR_WR => VR_WR, - BA => BA, - VA => VA, - VB => VB, - VDM => VDM, - VG => VG, - VR => VR); - - -b2v_inst : altpll1 -PORT MAP(inclk0 => CLK33M, - c0 => CLK500k, - c1 => CLK2M4576, - c2 => CLK24M576, - locked => SYNTHESIZED_WIRE_5); - - -b2v_inst1 : lpm_ff0 -PORT MAP(clock => DDR_SYNC_66M, - enable => FB_ALE, - data => FB_AD, - q => FB_ADR); - - - - -b2v_inst12 : altpll2 -PORT MAP(inclk0 => MAIN_CLK, - c0 => DDRCLK(0), - c1 => DDRCLK(1), - c2 => DDRCLK(2), - c3 => DDRCLK(3), - c4 => DDR_SYNC_66M); - - -b2v_inst13 : altpll3 -PORT MAP(inclk0 => CLK33M, - c0 => CLK2M, - c1 => FDC_CLK, - c2 => CLK25M_ALTERA_SYNTHESIZED, - c3 => CLK48M); - - -nMOT_ON <= NOT(MOT_ON); - - - -nSTEP_DIR <= NOT(STEP_DIR); - - - -nSTEP <= NOT(STEP); - - - -nWR <= NOT(WR_DATA); - - - -b2v_inst18 : lpm_counter0 -PORT MAP(clock => CLK500k, - q => TIMEBASE); - - -nWR_GATE <= NOT(WR_GATE); - - - -nFB_TA <= NOT(Video_TA OR INT_HANDLER_TA OR DSP_TA OR FALCON_IO_TA); - - -b2v_inst22 : altpll4 -PORT MAP(inclk0 => CLK48M, - areset => SYNTHESIZED_WIRE_0, - scanclk => SYNTHESIZED_WIRE_1, - scandata => SYNTHESIZED_WIRE_2, - scanclkena => SYNTHESIZED_WIRE_3, - configupdate => SYNTHESIZED_WIRE_4, - c0 => CLK_VIDEO, - scandataout => SYNTHESIZED_WIRE_6, - scandone => SYNTHESIZED_WIRE_7); - - -SYNTHESIZED_WIRE_8 <= NOT(nRSTO); - - - -nRSTO <= SYNTHESIZED_WIRE_5 AND nRSTO_MCF; - -LED_FPGA_OK <= TIMEBASE(17); - - - -nDDR_CLK <= NOT(DDRCLK(0)); - - - -b2v_inst5 : altddio_out3 -PORT MAP(datain_h => VSYNC, - datain_l => VSYNC, - outclock => PIXEL_CLK, - dataout => VSYNC_PAD); - - -b2v_inst6 : altddio_out3 -PORT MAP(datain_h => HSYNC, - datain_l => HSYNC, - outclock => PIXEL_CLK, - dataout => HSYNC_PAD); - - -b2v_inst7 : altpll_reconfig1 -PORT MAP(reconfig => VIDEO_RECONFIG, - read_param => VR_RD, - write_param => VR_WR, - pll_scandataout => SYNTHESIZED_WIRE_6, - pll_scandone => SYNTHESIZED_WIRE_7, - clock => MAIN_CLK, - reset => SYNTHESIZED_WIRE_8, - counter_param => FB_ADR(8 DOWNTO 6), - counter_type => FB_ADR(5 DOWNTO 2), - data_in => FB_AD(24 DOWNTO 16), - busy => VR_BUSY, - pll_scandata => SYNTHESIZED_WIRE_2, - pll_scanclk => SYNTHESIZED_WIRE_1, - pll_scanclkena => SYNTHESIZED_WIRE_3, - pll_configupdate => SYNTHESIZED_WIRE_4, - pll_areset => SYNTHESIZED_WIRE_0, - data_out => VR_D); - - -b2v_inst8 : altddio_out3 -PORT MAP(datain_h => nBLANK, - datain_l => nBLANK, - outclock => PIXEL_CLK, - dataout => nBLANK_PAD); - - -b2v_inst9 : altddio_out3 -PORT MAP(datain_h => SYNTHESIZED_WIRE_9, - datain_l => SYNTHESIZED_WIRE_10, - outclock => PIXEL_CLK, - dataout => PIXEL_CLK_PAD); - - -b2v_Mathias_Alles : dsp -PORT MAP(CLK33M => CLK33M, - MAIN_CLK => MAIN_CLK, - nFB_OE => nFB_OE, - nFB_WR => nFB_WR, - nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - nFB_BURST => nFB_BURST, - nRSTO => nRSTO, - nFB_CS3 => nFB_CS3, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - IO => IO, - SRD => SRD, - nSRCS => nSRCS, - nSRBLE => nSRBLE, - nSRBHE => nSRBHE, - nSRWE => nSRWE, - nSROE => nSROE, - DSP_INT => DSP_INT, - DSP_TA => DSP_TA); - - -b2v_nobody : interrupt_handler -PORT MAP(MAIN_CLK => MAIN_CLK, - nFB_WR => nFB_WR, - nFB_CS1 => nFB_CS1, - nFB_CS2 => nFB_CS2, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - PIC_INT => PIC_INT, - E0_INT => E0_INT, - DVI_INT => DVI_INT, - nPCI_INTA => nPCI_INTA, - nPCI_INTB => nPCI_INTB, - nPCI_INTC => nPCI_INTC, - nPCI_INTD => nPCI_INTD, - nMFP_INT => nMFP_INT, - nFB_OE => nFB_OE, - DSP_INT => DSP_INT, - VSYNC => VSYNC, - HSYNC => HSYNC, - DMA_DRQ => DMA_DRQ, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - INT_HANDLER_TA => INT_HANDLER_TA, - TIN0 => TIN0, - ACP_CONF => ACP_CONF, - nIRQ => nIRQ); - - -b2v_Wolfgang_Foerster_and_Fredi_Aschwanden : falconio_sdcard_ide_cf -PORT MAP(CLK33M => CLK33M, - MAIN_CLK => MAIN_CLK, - CLK2M => CLK2M, - CLK500k => CLK500k, - nFB_CS1 => nFB_CS1, - FB_SIZE0 => FB_SIZE0, - FB_SIZE1 => FB_SIZE1, - nFB_BURST => nFB_BURST, - LP_BUSY => LP_BUSY, - nACSI_DRQ => nACSI_DRQ, - nACSI_INT => nACSI_INT, - nSCSI_DRQ => nSCSI_DRQ, - nSCSI_MSG => nSCSI_MSG, - MIDI_IN => MIDI_IN, - RxD => RxD, - CTS => CTS, - RI => RI, - DCD => DCD, - AMKB_RX => AMKB_RX, - PIC_AMKB_RX => PIC_AMKB_RX, - IDE_RDY => IDE_RDY, - IDE_INT => IDE_INT, - nINDEX => nINDEX, - TRACK00 => TRACK00, - nRD_DATA => nRD_DATA, - nDCHG => nDCHG, - SD_DATA0 => SD_DATA0, - SD_DATA1 => SD_DATA1, - SD_DATA2 => SD_DATA2, - SD_CARD_DEDECT => SD_CARD_DEDECT, - SD_WP => SD_WP, - nDACK0 => nDACK0, - nFB_WR => nFB_WR, - WP_CF_CARD => WP_CF_CARD, - nWP => nWP, - nFB_CS2 => nFB_CS2, - nRSTO => nRSTO, - nSCSI_C_D => nSCSI_C_D, - nSCSI_I_O => nSCSI_I_O, - CLK2M4576 => CLK2M4576, - nFB_OE => nFB_OE, - VSYNC => VSYNC, - HSYNC => HSYNC, - DSP_INT => DSP_INT, - nBLANK => nBLANK, - FDC_CLK => FDC_CLK, - FB_ALE => FB_ALE, - HD_DD => HD_DD, - SCSI_PAR => SCSI_PAR, - nSCSI_SEL => nSCSI_SEL, - nSCSI_BUSY => nSCSI_BUSY, - nSCSI_RST => nSCSI_RST, - SD_CD_DATA3 => SD_CD_DATA3, - SD_CDM_D1 => SD_CDM_D1, - ACP_CONF => ACP_CONF(31 DOWNTO 24), - ACSI_D => ACSI_D, - FB_AD => FB_AD, - FB_ADR => FB_ADR, - LP_D => LP_D, - SCSI_D => SCSI_D, - nIDE_CS1 => nIDE_CS1, - nIDE_CS0 => nIDE_CS0, - LP_STR => LP_STR, - LP_DIR => LP_DIR, - nACSI_ACK => nACSI_ACK, - nACSI_RESET => nACSI_RESET, - nACSI_CS => nACSI_CS, - ACSI_DIR => ACSI_DIR, - ACSI_A1 => ACSI_A1, - nSCSI_ACK => nSCSI_ACK, - nSCSI_ATN => nSCSI_ATN, - SCSI_DIR => SCSI_DIR, - SD_CLK => SD_CLK, - YM_QA => YM_QA, - YM_QC => YM_QC, - YM_QB => YM_QB, - nSDSEL => nSDSEL, - STEP => STEP, - MOT_ON => MOT_ON, - nRP_LDS => nRP_LDS, - nRP_UDS => nRP_UDS, - nROM4 => nROM4, - nROM3 => nROM3, - nCF_CS1 => nCF_CS1, - nCF_CS0 => nCF_CS0, - nIDE_RD => nIDE_RD, - nIDE_WR => nIDE_WR, - AMKB_TX => AMKB_TX, - IDE_RES => IDE_RES, - DTR => DTR, - RTS => RTS, - TxD => TxD, - MIDI_OLR => MIDI_OLR, - MIDI_TLR => MIDI_TLR, - DSA_D => DSA_D, - nMFP_INT => nMFP_INT, - FALCON_IO_TA => FALCON_IO_TA, - STEP_DIR => STEP_DIR, - WR_DATA => WR_DATA, - WR_GATE => WR_GATE, - DMA_DRQ => DMA_DRQ); - -SD_CMD_D1 <= SD_CDM_D1; -CLK25M <= CLK25M_ALTERA_SYNTHESIZED; -DDR_CLK <= DDRCLK(0); -CLKUSB <= CLK48M; -LPDIR <= LP_DIR; - -END bdf_type; \ No newline at end of file diff --git a/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf b/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf deleted file mode 100644 index 2119467..0000000 --- a/FPGA_by_Gregory_Estrade/firebee1_assignment_defaults.qdf +++ /dev/null @@ -1,687 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# 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_by_Gregory_Estrade/firebee1_description.txt b/FPGA_by_Gregory_Estrade/firebee1_description.txt deleted file mode 100644 index e69de29..0000000 diff --git a/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.bsf b/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.bsf deleted file mode 100644 index dcc4b63..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/lpm_bustri_BYT.inc b/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.inc deleted file mode 100644 index 8cb4941..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/lpm_bustri_BYT.qip b/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.qip deleted file mode 100644 index 89e40bd..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/lpm_bustri_BYT.vhd b/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.vhd deleted file mode 100644 index d24e3cb..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_BYT.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/lpm_bustri_LONG.bsf b/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.bsf deleted file mode 100644 index 6535d3e..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/lpm_bustri_LONG.inc b/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.inc deleted file mode 100644 index f180c48..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/lpm_bustri_LONG.qip b/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.qip deleted file mode 100644 index 67b7232..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/lpm_bustri_LONG.vhd b/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.vhd deleted file mode 100644 index 3de83c0..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_LONG.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/lpm_bustri_WORD.bsf b/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.bsf deleted file mode 100644 index 4e882d1..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.bsf +++ /dev/null @@ -1,56 +0,0 @@ -/* -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_by_Gregory_Estrade/lpm_bustri_WORD.inc b/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.inc deleted file mode 100644 index 09f6251..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.inc +++ /dev/null @@ -1,24 +0,0 @@ ---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_by_Gregory_Estrade/lpm_bustri_WORD.qip b/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.qip deleted file mode 100644 index 57bbe2e..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.qip +++ /dev/null @@ -1,6 +0,0 @@ -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_by_Gregory_Estrade/lpm_bustri_WORD.vhd b/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.vhd deleted file mode 100644 index 85cbdd1..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_bustri_WORD.vhd +++ /dev/null @@ -1,107 +0,0 @@ --- 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_by_Gregory_Estrade/lpm_counter0.bsf b/FPGA_by_Gregory_Estrade/lpm_counter0.bsf deleted file mode 100644 index 7fc7aaa..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_counter0.bsf +++ /dev/null @@ -1,49 +0,0 @@ -/* -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_by_Gregory_Estrade/lpm_counter0.qip b/FPGA_by_Gregory_Estrade/lpm_counter0.qip deleted file mode 100644 index a72845b..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_counter0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/lpm_counter0.vhd b/FPGA_by_Gregory_Estrade/lpm_counter0.vhd deleted file mode 100644 index 9135dbc..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_counter0.vhd +++ /dev/null @@ -1,126 +0,0 @@ --- 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_by_Gregory_Estrade/lpm_latch0.bsf b/FPGA_by_Gregory_Estrade/lpm_latch0.bsf deleted file mode 100644 index ddb325c..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_latch0.bsf +++ /dev/null @@ -1,53 +0,0 @@ -/* -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_by_Gregory_Estrade/lpm_latch0.qip b/FPGA_by_Gregory_Estrade/lpm_latch0.qip deleted file mode 100644 index 1bda27a..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_latch0.qip +++ /dev/null @@ -1,5 +0,0 @@ -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_by_Gregory_Estrade/lpm_latch0.vhd b/FPGA_by_Gregory_Estrade/lpm_latch0.vhd deleted file mode 100644 index 1eda161..0000000 --- a/FPGA_by_Gregory_Estrade/lpm_latch0.vhd +++ /dev/null @@ -1,110 +0,0 @@ --- 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_by_Gregory_Estrade/mux41.v b/FPGA_by_Gregory_Estrade/mux41.v deleted file mode 100644 index ddb02fb..0000000 --- a/FPGA_by_Gregory_Estrade/mux41.v +++ /dev/null @@ -1,74 +0,0 @@ -// 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. - -// PROGRAM "Quartus II 64-Bit" -// VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" -// CREATED "Sat Mar 01 09:17:14 2014" - -module mux41( - S0, - D2, - INH, - D0, - D1, - D3, - S1, - Q -); - - -input S0; -input D2; -input INH; -input D0; -input D1; -input D3; -input S1; -output Q; - -wire SYNTHESIZED_WIRE_18; -wire SYNTHESIZED_WIRE_19; -wire SYNTHESIZED_WIRE_20; -wire SYNTHESIZED_WIRE_21; -wire SYNTHESIZED_WIRE_22; -wire SYNTHESIZED_WIRE_13; -wire SYNTHESIZED_WIRE_14; -wire SYNTHESIZED_WIRE_15; -wire SYNTHESIZED_WIRE_16; - - - - -assign SYNTHESIZED_WIRE_18 = ~S0; - -assign SYNTHESIZED_WIRE_21 = ~SYNTHESIZED_WIRE_18; - -assign SYNTHESIZED_WIRE_13 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_18 & D0; - -assign SYNTHESIZED_WIRE_14 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_21 & D1; - -assign SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_22 & SYNTHESIZED_WIRE_18 & D2; - -assign SYNTHESIZED_WIRE_16 = SYNTHESIZED_WIRE_19 & SYNTHESIZED_WIRE_22 & SYNTHESIZED_WIRE_21 & D3; - -assign Q = SYNTHESIZED_WIRE_13 | SYNTHESIZED_WIRE_14 | SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; - -assign SYNTHESIZED_WIRE_19 = ~INH; - -assign SYNTHESIZED_WIRE_20 = ~S1; - -assign SYNTHESIZED_WIRE_22 = ~SYNTHESIZED_WIRE_20; - - -endmodule diff --git a/FPGA_by_Gregory_Estrade/mux41.vhd b/FPGA_by_Gregory_Estrade/mux41.vhd deleted file mode 100644 index b0b24ad..0000000 --- a/FPGA_by_Gregory_Estrade/mux41.vhd +++ /dev/null @@ -1,90 +0,0 @@ --- 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. - --- PROGRAM "Quartus II 64-Bit" --- VERSION "Version 9.1 Build 222 10/21/2009 SJ Full Version" --- CREATED "Sat Mar 01 09:16:22 2014" - -LIBRARY ieee; -USE ieee.std_logic_1164.all; - -LIBRARY work; - -ENTITY mux41 IS - PORT - ( - S0 : IN STD_LOGIC; - D2 : IN STD_LOGIC; - INH : IN STD_LOGIC; - D0 : IN STD_LOGIC; - D1 : IN STD_LOGIC; - D3 : IN STD_LOGIC; - S1 : IN STD_LOGIC; - Q : OUT STD_LOGIC - ); -END mux41; - -ARCHITECTURE bdf_type OF mux41 IS - -SIGNAL SYNTHESIZED_WIRE_18 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_19 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_20 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_21 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_22 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_15 : STD_LOGIC; -SIGNAL SYNTHESIZED_WIRE_16 : STD_LOGIC; - - -BEGIN - - - -SYNTHESIZED_WIRE_18 <= NOT(S0); - - - -SYNTHESIZED_WIRE_21 <= NOT(SYNTHESIZED_WIRE_18); - - - -SYNTHESIZED_WIRE_13 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_20 AND SYNTHESIZED_WIRE_18 AND D0; - - -SYNTHESIZED_WIRE_14 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_20 AND SYNTHESIZED_WIRE_21 AND D1; - - -SYNTHESIZED_WIRE_15 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_22 AND SYNTHESIZED_WIRE_18 AND D2; - - -SYNTHESIZED_WIRE_16 <= SYNTHESIZED_WIRE_19 AND SYNTHESIZED_WIRE_22 AND SYNTHESIZED_WIRE_21 AND D3; - - -Q <= SYNTHESIZED_WIRE_13 OR SYNTHESIZED_WIRE_14 OR SYNTHESIZED_WIRE_15 OR SYNTHESIZED_WIRE_16; - - -SYNTHESIZED_WIRE_19 <= NOT(INH); - - - -SYNTHESIZED_WIRE_20 <= NOT(S1); - - - -SYNTHESIZED_WIRE_22 <= NOT(SYNTHESIZED_WIRE_20); - - - -END bdf_type; \ No newline at end of file