From 413d26237e93b8b019c719ed186e228a8eeb41b8 Mon Sep 17 00:00:00 2001 From: Matt Ettus Date: Thu, 1 Oct 2009 00:06:11 -0700 Subject: [PATCH] remove unused opencores --- .../opencores/ethernet_tri_mode/.gitignore | 2 - .../opencores/ethernet_tri_mode/CVS/Entries | 6 - .../ethernet_tri_mode/CVS/Repository | 1 - .../fpga/opencores/ethernet_tri_mode/CVS/Root | 1 - .../opencores/ethernet_tri_mode/CVS/Template | 0 .../ethernet_tri_mode/bench/CVS/Entries | 1 - .../ethernet_tri_mode/bench/CVS/Repository | 1 - .../ethernet_tri_mode/bench/CVS/Root | 1 - .../ethernet_tri_mode/bench/CVS/Template | 0 .../bench/verilog/CVS/Entries | 7 - .../bench/verilog/CVS/Repository | 1 - .../ethernet_tri_mode/bench/verilog/CVS/Root | 1 - .../bench/verilog/CVS/Template | 0 .../ethernet_tri_mode/bench/verilog/Phy_sim.v | 102 - .../bench/verilog/User_int_sim.v | 148 - .../bench/verilog/altera_mf.v | 34538 ---------------- .../bench/verilog/host_sim.v | 77 - .../bench/verilog/reg_int_sim.v | 135 - .../ethernet_tri_mode/bench/verilog/tb_top.v | 230 - .../fpga/opencores/ethernet_tri_mode/cmdfile | 7 - .../ethernet_tri_mode/doc/CVS/Entries | 3 - .../ethernet_tri_mode/doc/CVS/Repository | 1 - .../opencores/ethernet_tri_mode/doc/CVS/Root | 1 - .../ethernet_tri_mode/doc/CVS/Template | 0 .../Tri-mode_Ethernet_MAC_Specifications.pdf | Bin 313150 -> 0 bytes ...ri-mode_Ethernet_MAC_Verification_plan.pdf | Bin 144899 -> 0 bytes .../ethernet_tri_mode/rtl/CVS/Entries | 1 - .../ethernet_tri_mode/rtl/CVS/Repository | 1 - .../opencores/ethernet_tri_mode/rtl/CVS/Root | 1 - .../ethernet_tri_mode/rtl/CVS/Template | 0 .../ethernet_tri_mode/rtl/verilog/CVS/Entries | 14 - .../rtl/verilog/CVS/Repository | 1 - .../ethernet_tri_mode/rtl/verilog/CVS/Root | 1 - .../rtl/verilog/CVS/Template | 0 .../ethernet_tri_mode/rtl/verilog/Clk_ctrl.v | 127 - .../ethernet_tri_mode/rtl/verilog/MAC_rx.v | 230 - .../rtl/verilog/MAC_rx/Broadcast_filter.v | 107 - .../rtl/verilog/MAC_rx/CRC_chk.v | 129 - .../rtl/verilog/MAC_rx/CVS/Entries | 6 - .../rtl/verilog/MAC_rx/CVS/Repository | 1 - .../rtl/verilog/MAC_rx/CVS/Root | 1 - .../rtl/verilog/MAC_rx/CVS/Template | 0 .../rtl/verilog/MAC_rx/MAC_rx_FF.v | 659 - .../rtl/verilog/MAC_rx/MAC_rx_add_chk.v | 156 - .../rtl/verilog/MAC_rx/MAC_rx_ctrl.v | 536 - .../ethernet_tri_mode/rtl/verilog/MAC_top.v | 430 - .../ethernet_tri_mode/rtl/verilog/MAC_tx.v | 266 - .../rtl/verilog/MAC_tx/CRC_gen.v | 168 - .../rtl/verilog/MAC_tx/CVS/Entries | 7 - .../rtl/verilog/MAC_tx/CVS/Repository | 1 - .../rtl/verilog/MAC_tx/CVS/Root | 1 - .../rtl/verilog/MAC_tx/CVS/Template | 0 .../rtl/verilog/MAC_tx/MAC_tx_FF.v | 745 - .../rtl/verilog/MAC_tx/MAC_tx_addr_add.v | 128 - .../rtl/verilog/MAC_tx/MAC_tx_ctrl.v | 646 - .../rtl/verilog/MAC_tx/flow_ctrl.v | 203 - .../rtl/verilog/MAC_tx/random_gen.v | 123 - .../ethernet_tri_mode/rtl/verilog/Phy_int.v | 227 - .../ethernet_tri_mode/rtl/verilog/RMON.v | 180 - .../rtl/verilog/RMON/CVS/Entries | 4 - .../rtl/verilog/RMON/CVS/Repository | 1 - .../rtl/verilog/RMON/CVS/Root | 1 - .../rtl/verilog/RMON/CVS/Template | 0 .../rtl/verilog/RMON/RMON_addr_gen.v | 295 - .../rtl/verilog/RMON/RMON_ctrl.v | 290 - .../rtl/verilog/RMON/RMON_dpram.v | 46 - .../rtl/verilog/TECH/CLK_SWITCH.v | 68 - .../rtl/verilog/TECH/CVS/Entries | 5 - .../rtl/verilog/TECH/CVS/Repository | 1 - .../rtl/verilog/TECH/CVS/Root | 1 - .../rtl/verilog/TECH/CVS/Template | 0 .../rtl/verilog/TECH/altera/CLK_DIV2.v | 74 - .../rtl/verilog/TECH/altera/CLK_SWITCH.v | 71 - .../rtl/verilog/TECH/altera/CVS/Entries | 4 - .../rtl/verilog/TECH/altera/CVS/Repository | 1 - .../rtl/verilog/TECH/altera/CVS/Root | 1 - .../rtl/verilog/TECH/altera/CVS/Template | 0 .../rtl/verilog/TECH/altera/duram.v | 87 - .../rtl/verilog/TECH/clkdiv2.v | 71 - .../rtl/verilog/TECH/duram.v | 103 - .../rtl/verilog/TECH/xilinx/CLK_DIV2.v | 74 - .../rtl/verilog/TECH/xilinx/CLK_SWITCH.v | 77 - .../rtl/verilog/TECH/xilinx/CVS/Entries | 4 - .../rtl/verilog/TECH/xilinx/CVS/Repository | 1 - .../rtl/verilog/TECH/xilinx/CVS/Root | 1 - .../rtl/verilog/TECH/xilinx/CVS/Template | 0 .../rtl/verilog/TECH/xilinx/duram.v | 60 - .../ethernet_tri_mode/rtl/verilog/cmdfile | 7 - .../ethernet_tri_mode/rtl/verilog/eth_miim.v | 475 - .../rtl/verilog/eth_wrapper.v | 103 - .../ethernet_tri_mode/rtl/verilog/header.v | 5 - .../ethernet_tri_mode/rtl/verilog/mac_tb.v | 55 - .../rtl/verilog/miim/CVS/Entries | 5 - .../rtl/verilog/miim/CVS/Repository | 1 - .../rtl/verilog/miim/CVS/Root | 1 - .../rtl/verilog/miim/CVS/Template | 0 .../rtl/verilog/miim/eth_clockgen.v | 142 - .../rtl/verilog/miim/eth_outputcontrol.v | 162 - .../rtl/verilog/miim/eth_shiftreg.v | 164 - .../rtl/verilog/miim/timescale.v | 62 - .../ethernet_tri_mode/rtl/verilog/reg_int.v | 179 - .../ethernet_tri_mode/sim/CVS/Entries | 1 - .../ethernet_tri_mode/sim/CVS/Repository | 1 - .../opencores/ethernet_tri_mode/sim/CVS/Root | 1 - .../ethernet_tri_mode/sim/CVS/Template | 0 .../ethernet_tri_mode/sim/rtl_sim/CVS/Entries | 1 - .../sim/rtl_sim/CVS/Repository | 1 - .../ethernet_tri_mode/sim/rtl_sim/CVS/Root | 1 - .../sim/rtl_sim/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/CVS/Entries | 6 - .../sim/rtl_sim/ncsim_sim/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/bin/CVS/Entries | 12 - .../sim/rtl_sim/ncsim_sim/bin/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/bin/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/bin/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/bin/cds.lib | 2 - .../sim/rtl_sim/ncsim_sim/bin/com.nc | 36 - .../sim/rtl_sim/ncsim_sim/bin/config.ini | 3 - .../sim/rtl_sim/ncsim_sim/bin/hdl.var | 1 - .../rtl_sim/ncsim_sim/bin/ip_32W_check.dll | Bin 40960 -> 0 bytes .../ncsim_sim/bin/ip_32W_check_vpi.dll | Bin 32768 -> 0 bytes .../sim/rtl_sim/ncsim_sim/bin/ip_32W_gen.dll | Bin 45056 -> 0 bytes .../rtl_sim/ncsim_sim/bin/ip_32W_gen_vpi.dll | Bin 45056 -> 0 bytes .../sim/rtl_sim/ncsim_sim/bin/sim.nc | 37 - .../sim/rtl_sim/ncsim_sim/bin/sim_only.nc | 13 - .../sim/rtl_sim/ncsim_sim/bin/vlog.list | 41 - .../ncsim_sim/data/1000Mbps_duplex.vec | 1 - .../rtl_sim/ncsim_sim/data/100Mbps_duplex.vec | 1 - .../rtl_sim/ncsim_sim/data/10Mbps_duplex.vec | 1 - .../sim/rtl_sim/ncsim_sim/data/46-50.ini | 1 - .../sim/rtl_sim/ncsim_sim/data/CPU.vec | 0 .../sim/rtl_sim/ncsim_sim/data/CVS/Entries | 11 - .../sim/rtl_sim/ncsim_sim/data/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/data/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/data/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/data/batch.dat | 3 - .../sim/rtl_sim/ncsim_sim/data/config.ini | 1 - .../sim/rtl_sim/ncsim_sim/data/flow_ctrl.vec | 4 - .../ncsim_sim/data/source_mac_replace.vec | 24 - .../ncsim_sim/data/target_mac_check.vec | 25 - .../sim/rtl_sim/ncsim_sim/log/CVS/Entries | 2 - .../sim/rtl_sim/ncsim_sim/log/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/log/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/log/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/log/ncsim.log | 245 - .../sim/rtl_sim/ncsim_sim/out/CVS/Entries | 1 - .../sim/rtl_sim/ncsim_sim/out/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/out/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/out/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/run/CVS/Entries | 1 - .../sim/rtl_sim/ncsim_sim/run/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/run/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/run/CVS/Template | 0 .../sim/rtl_sim/ncsim_sim/script/CVS/Entries | 9 - .../rtl_sim/ncsim_sim/script/CVS/Repository | 1 - .../sim/rtl_sim/ncsim_sim/script/CVS/Root | 1 - .../sim/rtl_sim/ncsim_sim/script/CVS/Template | 0 .../rtl_sim/ncsim_sim/script/batch_mode.tcl | 148 - .../sim/rtl_sim/ncsim_sim/script/filesel.tcl | 325 - .../sim/rtl_sim/ncsim_sim/script/run.tcl | 26 - .../sim/rtl_sim/ncsim_sim/script/run_proc.tcl | 27 - .../rtl_sim/ncsim_sim/script/set_reg_data.tcl | 192 - .../rtl_sim/ncsim_sim/script/set_stimulus.tcl | 101 - .../rtl_sim/ncsim_sim/script/start_verify.tcl | 127 - .../sim/rtl_sim/ncsim_sim/script/user_lib.tcl | 17 - .../opencores/ethernet_tri_mode/start.tcl | 180 - .../ethernet_tri_mode/syn/CVS/Entries | 4 - .../ethernet_tri_mode/syn/CVS/Repository | 1 - .../opencores/ethernet_tri_mode/syn/CVS/Root | 1 - .../ethernet_tri_mode/syn/CVS/Template | 0 .../opencores/ethernet_tri_mode/syn/syn.prj | 86 - .../ethernet_tri_mode/syn/syn_altrea.prj | 91 - .../ethernet_tri_mode/syn/syn_xilinx.prj | 92 - .../fpga/opencores/sd_interface/RTL/RxFifo.v | 134 - .../opencores/sd_interface/RTL/RxFifoBI.v | 149 - .../fpga/opencores/sd_interface/RTL/TxFifo.v | 132 - .../opencores/sd_interface/RTL/TxFifoBI.v | 139 - .../opencores/sd_interface/RTL/ctrlStsRegBI.v | 267 - .../opencores/sd_interface/RTL/dpMem_dc.v | 84 - .../fpga/opencores/sd_interface/RTL/fifoRTL.v | 164 - .../opencores/sd_interface/RTL/initSD.asf | 226 - .../fpga/opencores/sd_interface/RTL/initSD.v | 386 - .../sd_interface/RTL/readWriteSDBlock.asf | 528 - .../sd_interface/RTL/readWriteSDBlock.v | 730 - .../sd_interface/RTL/readWriteSPIWireData.asf | 121 - .../sd_interface/RTL/readWriteSPIWireData.v | 229 - .../opencores/sd_interface/RTL/sendCmd.asf | 231 - .../fpga/opencores/sd_interface/RTL/sendCmd.v | 369 - .../opencores/sd_interface/RTL/spiCtrl.asf | 141 - .../fpga/opencores/sd_interface/RTL/spiCtrl.v | 224 - .../opencores/sd_interface/RTL/spiMaster.v | 383 - .../sd_interface/RTL/spiMaster_defines.v | 125 - .../opencores/sd_interface/RTL/spiTxRxData.v | 108 - .../opencores/sd_interface/RTL/timescale.v | 5 - .../opencores/sd_interface/RTL/wishBoneBI.v | 145 - .../opencores/sd_interface/bench/testCase0.v | 126 - .../sd_interface/bench/testHarness.v | 105 - .../sd_interface/doc/spiMaster_FSM.pdf | Bin 3871409 -> 0 bytes .../doc/spiMaster_Specification.pdf | Bin 45134 -> 0 bytes .../doc/src/spiMaster_Specification.sxw | Bin 42063 -> 0 bytes .../opencores/sd_interface/model/sdModel.v | 99 - .../sd_interface/model/wb_master_model.v | 176 - .../sd_interface/sim/build_icarus.bat | 4 - .../opencores/sd_interface/sim/compile.do | 22 - .../sd_interface/sim/filelist.icarus | 21 - usrp2/fpga/opencores/sd_interface/sim/run.do | 5 - .../opencores/sd_interface/sim/run_icarus.bat | 2 - .../opencores/sd_interface/sim/testHarness | 5458 --- usrp2/fpga/opencores/sd_interface/sim/wave.do | 133 - .../opencores/sd_interface/syn/spiMaster.qpf | 23 - .../opencores/sd_interface/syn/spiMaster.qsf | 57 - usrp2/fpga/opencores/uart16550/CVS/Entries | 1 - .../fpga/opencores/uart16550/CVS/Entries.Log | 9 - usrp2/fpga/opencores/uart16550/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/CVS/Root | 1 - usrp2/fpga/opencores/uart16550/CVS/Template | 0 .../opencores/uart16550/bench/CVS/Entries | 1 - .../opencores/uart16550/bench/CVS/Entries.Log | 2 - .../opencores/uart16550/bench/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/bench/CVS/Root | 1 - .../opencores/uart16550/bench/CVS/Template | 0 .../uart16550/bench/verilog/CVS/Entries | 14 - .../uart16550/bench/verilog/CVS/Entries.Log | 1 - .../uart16550/bench/verilog/CVS/Repository | 1 - .../uart16550/bench/verilog/CVS/Root | 1 - .../uart16550/bench/verilog/CVS/Template | 0 .../uart16550/bench/verilog/readme.txt | 114 - .../bench/verilog/test_cases/CVS/Entries | 2 - .../bench/verilog/test_cases/CVS/Repository | 1 - .../bench/verilog/test_cases/CVS/Root | 1 - .../bench/verilog/test_cases/CVS/Template | 0 .../bench/verilog/test_cases/uart_int.v | 279 - .../uart16550/bench/verilog/uart_device.v | 717 - .../bench/verilog/uart_device_utilities.v | 323 - .../uart16550/bench/verilog/uart_log.v | 209 - .../uart16550/bench/verilog/uart_test.v | 339 - .../uart16550/bench/verilog/uart_testbench.v | 1366 - .../bench/verilog/uart_testbench_defines.v | 89 - .../bench/verilog/uart_testbench_utilities.v | 323 - .../bench/verilog/uart_wb_utilities.v | 362 - .../uart16550/bench/verilog/vapi.log | 117 - .../uart16550/bench/verilog/wb_mast.v | 640 - .../uart16550/bench/verilog/wb_master_model.v | 844 - .../bench/verilog/wb_model_defines.v | 82 - .../opencores/uart16550/bench/vhdl/.keepme | 0 .../uart16550/bench/vhdl/CVS/Entries | 2 - .../uart16550/bench/vhdl/CVS/Repository | 1 - .../opencores/uart16550/bench/vhdl/CVS/Root | 1 - .../uart16550/bench/vhdl/CVS/Template | 0 .../fpga/opencores/uart16550/doc/CHANGES.txt | 111 - .../fpga/opencores/uart16550/doc/CVS/Entries | 3 - .../opencores/uart16550/doc/CVS/Entries.Log | 1 - .../opencores/uart16550/doc/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/doc/CVS/Root | 1 - .../fpga/opencores/uart16550/doc/CVS/Template | 0 .../opencores/uart16550/doc/UART_spec.pdf | Bin 163447 -> 0 bytes .../opencores/uart16550/doc/src/CVS/Entries | 2 - .../uart16550/doc/src/CVS/Repository | 1 - .../fpga/opencores/uart16550/doc/src/CVS/Root | 1 - .../opencores/uart16550/doc/src/CVS/Template | 0 .../opencores/uart16550/doc/src/UART_spec.doc | Bin 129024 -> 0 bytes usrp2/fpga/opencores/uart16550/fv/.keepme | 0 usrp2/fpga/opencores/uart16550/fv/CVS/Entries | 2 - .../opencores/uart16550/fv/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/fv/CVS/Root | 1 - .../fpga/opencores/uart16550/fv/CVS/Template | 0 .../fpga/opencores/uart16550/lint/CVS/Entries | 1 - .../opencores/uart16550/lint/CVS/Entries.Log | 4 - .../opencores/uart16550/lint/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/lint/CVS/Root | 1 - .../opencores/uart16550/lint/CVS/Template | 0 .../fpga/opencores/uart16550/lint/bin/.keepme | 0 .../opencores/uart16550/lint/bin/CVS/Entries | 2 - .../uart16550/lint/bin/CVS/Repository | 1 - .../opencores/uart16550/lint/bin/CVS/Root | 1 - .../opencores/uart16550/lint/bin/CVS/Template | 0 .../fpga/opencores/uart16550/lint/log/.keepme | 0 .../opencores/uart16550/lint/log/CVS/Entries | 2 - .../uart16550/lint/log/CVS/Repository | 1 - .../opencores/uart16550/lint/log/CVS/Root | 1 - .../opencores/uart16550/lint/log/CVS/Template | 0 .../fpga/opencores/uart16550/lint/out/.keepme | 0 .../opencores/uart16550/lint/out/CVS/Entries | 2 - .../uart16550/lint/out/CVS/Repository | 1 - .../opencores/uart16550/lint/out/CVS/Root | 1 - .../opencores/uart16550/lint/out/CVS/Template | 0 .../fpga/opencores/uart16550/lint/run/.keepme | 0 .../opencores/uart16550/lint/run/CVS/Entries | 2 - .../uart16550/lint/run/CVS/Repository | 1 - .../opencores/uart16550/lint/run/CVS/Root | 1 - .../opencores/uart16550/lint/run/CVS/Template | 0 .../fpga/opencores/uart16550/rtl/CVS/Entries | 1 - .../opencores/uart16550/rtl/CVS/Entries.Log | 3 - .../opencores/uart16550/rtl/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/rtl/CVS/Root | 1 - .../fpga/opencores/uart16550/rtl/CVS/Template | 0 .../uart16550/rtl/verilog-backup/CVS/Entries | 9 - .../rtl/verilog-backup/CVS/Repository | 1 - .../uart16550/rtl/verilog-backup/CVS/Root | 1 - .../uart16550/rtl/verilog-backup/CVS/Template | 0 .../uart16550/rtl/verilog-backup/timescale.v | 3 - .../rtl/verilog-backup/uart_defines.v | 177 - .../uart16550/rtl/verilog-backup/uart_fifo.v | 278 - .../rtl/verilog-backup/uart_receiver.v | 341 - .../uart16550/rtl/verilog-backup/uart_regs.v | 532 - .../uart16550/rtl/verilog-backup/uart_top.v | 170 - .../rtl/verilog-backup/uart_transmitter.v | 288 - .../uart16550/rtl/verilog-backup/uart_wb.v | 125 - .../uart16550/rtl/verilog/CVS/Entries | 13 - .../uart16550/rtl/verilog/CVS/Repository | 1 - .../opencores/uart16550/rtl/verilog/CVS/Root | 1 - .../uart16550/rtl/verilog/CVS/Template | 0 .../opencores/uart16550/rtl/verilog/raminfr.v | 114 - .../uart16550/rtl/verilog/timescale.v | 64 - .../uart16550/rtl/verilog/uart_debug_if.v | 129 - .../uart16550/rtl/verilog/uart_defines.v | 250 - .../uart16550/rtl/verilog/uart_receiver.v | 485 - .../uart16550/rtl/verilog/uart_regs.v | 903 - .../uart16550/rtl/verilog/uart_rfifo.v | 323 - .../uart16550/rtl/verilog/uart_sync_flops.v | 125 - .../uart16550/rtl/verilog/uart_tfifo.v | 246 - .../uart16550/rtl/verilog/uart_top.v | 337 - .../uart16550/rtl/verilog/uart_transmitter.v | 355 - .../opencores/uart16550/rtl/verilog/uart_wb.v | 308 - .../fpga/opencores/uart16550/rtl/vhdl/.keepme | 0 .../opencores/uart16550/rtl/vhdl/CVS/Entries | 2 - .../uart16550/rtl/vhdl/CVS/Repository | 1 - .../opencores/uart16550/rtl/vhdl/CVS/Root | 1 - .../opencores/uart16550/rtl/vhdl/CVS/Template | 0 .../fpga/opencores/uart16550/sim/CVS/Entries | 1 - .../opencores/uart16550/sim/CVS/Entries.Log | 2 - .../opencores/uart16550/sim/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/sim/CVS/Root | 1 - .../fpga/opencores/uart16550/sim/CVS/Template | 0 .../uart16550/sim/gate_sim/CVS/Entries | 1 - .../uart16550/sim/gate_sim/CVS/Entries.Log | 5 - .../uart16550/sim/gate_sim/CVS/Repository | 1 - .../opencores/uart16550/sim/gate_sim/CVS/Root | 1 - .../uart16550/sim/gate_sim/CVS/Template | 0 .../uart16550/sim/gate_sim/bin/.keepme | 0 .../uart16550/sim/gate_sim/bin/CVS/Entries | 2 - .../uart16550/sim/gate_sim/bin/CVS/Repository | 1 - .../uart16550/sim/gate_sim/bin/CVS/Root | 1 - .../uart16550/sim/gate_sim/bin/CVS/Template | 0 .../uart16550/sim/gate_sim/log/.keepme | 0 .../uart16550/sim/gate_sim/log/CVS/Entries | 2 - .../uart16550/sim/gate_sim/log/CVS/Repository | 1 - .../uart16550/sim/gate_sim/log/CVS/Root | 1 - .../uart16550/sim/gate_sim/log/CVS/Template | 0 .../uart16550/sim/gate_sim/out/.keepme | 0 .../uart16550/sim/gate_sim/out/CVS/Entries | 2 - .../uart16550/sim/gate_sim/out/CVS/Repository | 1 - .../uart16550/sim/gate_sim/out/CVS/Root | 1 - .../uart16550/sim/gate_sim/out/CVS/Template | 0 .../uart16550/sim/gate_sim/run/.keepme | 0 .../uart16550/sim/gate_sim/run/CVS/Entries | 2 - .../uart16550/sim/gate_sim/run/CVS/Repository | 1 - .../uart16550/sim/gate_sim/run/CVS/Root | 1 - .../uart16550/sim/gate_sim/run/CVS/Template | 0 .../uart16550/sim/gate_sim/src/.keepme | 0 .../uart16550/sim/gate_sim/src/CVS/Entries | 2 - .../uart16550/sim/gate_sim/src/CVS/Repository | 1 - .../uart16550/sim/gate_sim/src/CVS/Root | 1 - .../uart16550/sim/gate_sim/src/CVS/Template | 0 .../uart16550/sim/rtl_sim/CVS/Entries | 1 - .../uart16550/sim/rtl_sim/CVS/Entries.Log | 5 - .../uart16550/sim/rtl_sim/CVS/Repository | 1 - .../opencores/uart16550/sim/rtl_sim/CVS/Root | 1 - .../uart16550/sim/rtl_sim/CVS/Template | 0 .../uart16550/sim/rtl_sim/bin/CVS/Entries | 3 - .../uart16550/sim/rtl_sim/bin/CVS/Repository | 1 - .../uart16550/sim/rtl_sim/bin/CVS/Root | 1 - .../uart16550/sim/rtl_sim/bin/CVS/Template | 0 .../uart16550/sim/rtl_sim/bin/nc.scr | 9 - .../uart16550/sim/rtl_sim/bin/sim.tcl | 5 - .../uart16550/sim/rtl_sim/log/.keepme | 0 .../uart16550/sim/rtl_sim/log/CVS/Entries | 4 - .../uart16550/sim/rtl_sim/log/CVS/Repository | 1 - .../uart16550/sim/rtl_sim/log/CVS/Root | 1 - .../uart16550/sim/rtl_sim/log/CVS/Template | 0 .../rtl_sim/log/uart_interrupts_report.log | 23 - .../rtl_sim/log/uart_interrupts_verbose.log | 104 - .../uart16550/sim/rtl_sim/out/.keepme | 0 .../uart16550/sim/rtl_sim/out/CVS/Entries | 2 - .../uart16550/sim/rtl_sim/out/CVS/Repository | 1 - .../uart16550/sim/rtl_sim/out/CVS/Root | 1 - .../uart16550/sim/rtl_sim/out/CVS/Template | 0 .../uart16550/sim/rtl_sim/run/CVS/Entries | 4 - .../uart16550/sim/rtl_sim/run/CVS/Repository | 1 - .../uart16550/sim/rtl_sim/run/CVS/Root | 1 - .../uart16550/sim/rtl_sim/run/CVS/Template | 0 .../uart16550/sim/rtl_sim/run/run_signalscan | 2 - .../uart16550/sim/rtl_sim/run/run_sim | 1 - .../uart16550/sim/rtl_sim/run/run_sim.scr | 345 - .../uart16550/sim/rtl_sim/src/.keepme | 0 .../uart16550/sim/rtl_sim/src/CVS/Entries | 2 - .../uart16550/sim/rtl_sim/src/CVS/Repository | 1 - .../uart16550/sim/rtl_sim/src/CVS/Root | 1 - .../uart16550/sim/rtl_sim/src/CVS/Template | 0 .../fpga/opencores/uart16550/syn/CVS/Entries | 1 - .../opencores/uart16550/syn/CVS/Entries.Log | 5 - .../opencores/uart16550/syn/CVS/Repository | 1 - usrp2/fpga/opencores/uart16550/syn/CVS/Root | 1 - .../fpga/opencores/uart16550/syn/CVS/Template | 0 .../fpga/opencores/uart16550/syn/bin/.keepme | 0 .../opencores/uart16550/syn/bin/CVS/Entries | 2 - .../uart16550/syn/bin/CVS/Repository | 1 - .../fpga/opencores/uart16550/syn/bin/CVS/Root | 1 - .../opencores/uart16550/syn/bin/CVS/Template | 0 .../fpga/opencores/uart16550/syn/log/.keepme | 0 .../opencores/uart16550/syn/log/CVS/Entries | 2 - .../uart16550/syn/log/CVS/Repository | 1 - .../fpga/opencores/uart16550/syn/log/CVS/Root | 1 - .../opencores/uart16550/syn/log/CVS/Template | 0 .../fpga/opencores/uart16550/syn/out/.keepme | 0 .../opencores/uart16550/syn/out/CVS/Entries | 2 - .../uart16550/syn/out/CVS/Repository | 1 - .../fpga/opencores/uart16550/syn/out/CVS/Root | 1 - .../opencores/uart16550/syn/out/CVS/Template | 0 .../fpga/opencores/uart16550/syn/run/.keepme | 0 .../opencores/uart16550/syn/run/CVS/Entries | 2 - .../uart16550/syn/run/CVS/Repository | 1 - .../fpga/opencores/uart16550/syn/run/CVS/Root | 1 - .../opencores/uart16550/syn/run/CVS/Template | 0 .../fpga/opencores/uart16550/syn/src/.keepme | 0 .../opencores/uart16550/syn/src/CVS/Entries | 2 - .../uart16550/syn/src/CVS/Repository | 1 - .../fpga/opencores/uart16550/syn/src/CVS/Root | 1 - .../opencores/uart16550/syn/src/CVS/Template | 0 .../opencores/uart16550/verilog/CVS/Entries | 1 - .../uart16550/verilog/CVS/Repository | 1 - .../fpga/opencores/uart16550/verilog/CVS/Root | 1 - .../opencores/uart16550/verilog/CVS/Template | 0 usrp2/fpga/opencores/wb_conbus/CVS/Entries | 2 - usrp2/fpga/opencores/wb_conbus/CVS/Repository | 1 - usrp2/fpga/opencores/wb_conbus/CVS/Root | 1 - usrp2/fpga/opencores/wb_conbus/CVS/Template | 0 .../opencores/wb_conbus/bench/CVS/Entries | 1 - .../opencores/wb_conbus/bench/CVS/Repository | 1 - usrp2/fpga/opencores/wb_conbus/bench/CVS/Root | 1 - .../opencores/wb_conbus/bench/CVS/Template | 0 .../wb_conbus/bench/verilog/CVS/Entries | 6 - .../wb_conbus/bench/verilog/CVS/Repository | 1 - .../wb_conbus/bench/verilog/CVS/Root | 1 - .../wb_conbus/bench/verilog/CVS/Template | 0 .../bench/verilog/tb_wb_conbus_top.v | 759 - .../opencores/wb_conbus/bench/verilog/tests.v | 828 - .../wb_conbus/bench/verilog/wb_mast_model.v | 693 - .../bench/verilog/wb_model_defines.v | 64 - .../wb_conbus/bench/verilog/wb_slv_model.v | 167 - .../fpga/opencores/wb_conbus/rtl/CVS/Entries | 1 - .../opencores/wb_conbus/rtl/CVS/Repository | 1 - usrp2/fpga/opencores/wb_conbus/rtl/CVS/Root | 1 - .../fpga/opencores/wb_conbus/rtl/CVS/Template | 0 .../wb_conbus/rtl/verilog/CVS/Entries | 4 - .../wb_conbus/rtl/verilog/CVS/Repository | 1 - .../opencores/wb_conbus/rtl/verilog/CVS/Root | 1 - .../wb_conbus/rtl/verilog/CVS/Template | 0 .../wb_conbus/rtl/verilog/wb_conbus_arb.v | 252 - .../wb_conbus/rtl/verilog/wb_conbus_defines.v | 42 - .../wb_conbus/rtl/verilog/wb_conbus_top.v | 655 - 463 files changed, 71885 deletions(-) delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/.gitignore delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/altera_mf.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/host_sim.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/reg_int_sim.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/tb_top.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/cmdfile delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/Tri-mode_Ethernet_MAC_Specifications.pdf delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/doc/Tri-mode_Ethernet_MAC_Verification_plan.pdf delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/Clk_ctrl.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/Broadcast_filter.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/CRC_chk.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_FF.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_add_chk.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_ctrl.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CRC_gen.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_addr_add.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/flow_ctrl.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/Phy_int.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_addr_gen.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_SWITCH.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_DIV2.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_SWITCH.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/duram.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CLK_DIV2.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CLK_SWITCH.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/xilinx/duram.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/cmdfile delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/eth_miim.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/eth_wrapper.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/header.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/mac_tb.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_clockgen.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_outputcontrol.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_shiftreg.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/timescale.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/cds.lib delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/com.nc delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/config.ini delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/hdl.var delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check.dll delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check_vpi.dll delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen.dll delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen_vpi.dll delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim.nc delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim_only.nc delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/vlog.list delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/1000Mbps_duplex.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/100Mbps_duplex.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/10Mbps_duplex.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/46-50.ini delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CPU.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/batch.dat delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/config.ini delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/flow_ctrl.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/source_mac_replace.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/target_mac_check.vec delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/ncsim.log delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/batch_mode.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/filesel.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run_proc.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_reg_data.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_stimulus.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/start_verify.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/user_lib.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/start.tcl delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Entries delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Repository delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Root delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Template delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/syn.prj delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_altrea.prj delete mode 100644 usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_xilinx.prj delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/RxFifo.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/RxFifoBI.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/TxFifo.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/TxFifoBI.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/ctrlStsRegBI.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/dpMem_dc.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/fifoRTL.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/initSD.asf delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/initSD.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.asf delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.asf delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/sendCmd.asf delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/sendCmd.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.asf delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/spiMaster.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/spiMaster_defines.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/spiTxRxData.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/timescale.v delete mode 100644 usrp2/fpga/opencores/sd_interface/RTL/wishBoneBI.v delete mode 100644 usrp2/fpga/opencores/sd_interface/bench/testCase0.v delete mode 100644 usrp2/fpga/opencores/sd_interface/bench/testHarness.v delete mode 100644 usrp2/fpga/opencores/sd_interface/doc/spiMaster_FSM.pdf delete mode 100644 usrp2/fpga/opencores/sd_interface/doc/spiMaster_Specification.pdf delete mode 100644 usrp2/fpga/opencores/sd_interface/doc/src/spiMaster_Specification.sxw delete mode 100644 usrp2/fpga/opencores/sd_interface/model/sdModel.v delete mode 100644 usrp2/fpga/opencores/sd_interface/model/wb_master_model.v delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/build_icarus.bat delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/compile.do delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/filelist.icarus delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/run.do delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/run_icarus.bat delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/testHarness delete mode 100644 usrp2/fpga/opencores/sd_interface/sim/wave.do delete mode 100644 usrp2/fpga/opencores/sd_interface/syn/spiMaster.qpf delete mode 100644 usrp2/fpga/opencores/sd_interface/syn/spiMaster.qsf delete mode 100644 usrp2/fpga/opencores/uart16550/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/bench/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/bench/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/bench/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/bench/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/bench/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/readme.txt delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Template delete mode 100755 usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/uart_int.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_device.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_device_utilities.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_log.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_test.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_defines.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_utilities.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/uart_wb_utilities.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/vapi.log delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/wb_mast.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/wb_master_model.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/verilog/wb_model_defines.v delete mode 100644 usrp2/fpga/opencores/uart16550/bench/vhdl/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CHANGES.txt delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/doc/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/doc/UART_spec.pdf delete mode 100644 usrp2/fpga/opencores/uart16550/doc/src/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/doc/src/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/doc/src/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/doc/src/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/doc/src/UART_spec.doc delete mode 100644 usrp2/fpga/opencores/uart16550/fv/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/fv/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/fv/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/fv/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/fv/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/lint/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/lint/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/lint/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/lint/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/lint/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/lint/bin/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/lint/bin/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/lint/bin/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/lint/bin/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/lint/bin/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/lint/log/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/lint/log/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/lint/log/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/lint/log/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/lint/log/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/lint/out/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/lint/out/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/lint/out/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/lint/out/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/lint/out/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/lint/run/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/lint/run/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/lint/run/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/lint/run/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/lint/run/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/timescale.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_defines.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_fifo.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_receiver.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_regs.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_top.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_transmitter.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_wb.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/raminfr.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/timescale.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_debug_if.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_defines.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_receiver.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_regs.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_rfifo.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_sync_flops.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_tfifo.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_top.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_transmitter.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/verilog/uart_wb.v delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/vhdl/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/log/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/out/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/run/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/src/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/nc.scr delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/sim.tcl delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_report.log delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_verbose.log delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Template delete mode 100755 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_signalscan delete mode 100755 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim.scr delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/CVS/Entries.Log delete mode 100644 usrp2/fpga/opencores/uart16550/syn/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/bin/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/syn/bin/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/bin/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/bin/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/bin/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/log/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/syn/log/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/log/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/log/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/log/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/out/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/syn/out/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/out/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/out/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/out/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/run/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/syn/run/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/run/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/run/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/run/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/syn/src/.keepme delete mode 100644 usrp2/fpga/opencores/uart16550/syn/src/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/syn/src/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/syn/src/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/syn/src/CVS/Template delete mode 100644 usrp2/fpga/opencores/uart16550/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/uart16550/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/uart16550/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/uart16550/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/CVS/Entries delete mode 100644 usrp2/fpga/opencores/wb_conbus/CVS/Repository delete mode 100644 usrp2/fpga/opencores/wb_conbus/CVS/Root delete mode 100644 usrp2/fpga/opencores/wb_conbus/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/CVS/Entries delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/CVS/Repository delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/CVS/Root delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/tb_wb_conbus_top.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/tests.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/wb_mast_model.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/wb_model_defines.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/bench/verilog/wb_slv_model.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/CVS/Entries delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/CVS/Repository delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/CVS/Root delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/CVS/Entries delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/CVS/Repository delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/CVS/Root delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/CVS/Template delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/wb_conbus_arb.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/wb_conbus_defines.v delete mode 100644 usrp2/fpga/opencores/wb_conbus/rtl/verilog/wb_conbus_top.v diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/.gitignore b/usrp2/fpga/opencores/ethernet_tri_mode/.gitignore deleted file mode 100644 index ae160975..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/verilog.log -/a.out diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Entries deleted file mode 100644 index c8bbf235..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Entries +++ /dev/null @@ -1,6 +0,0 @@ -/start.tcl/1.3/Sun May 28 05:00:17 2006// -D/bench//// -D/doc//// -D/rtl//// -D/sim//// -D/syn//// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Repository deleted file mode 100644 index 7c0a8c1d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Entries deleted file mode 100644 index 428c5622..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/verilog//// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Repository deleted file mode 100644 index f7aa7ea6..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/bench diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/bench/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Entries deleted file mode 100644 index 21ad451b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Entries +++ /dev/null @@ -1,7 +0,0 @@ -/Phy_sim.v/1.3/Fri Nov 17 17:53:07 2006// -/User_int_sim.v/1.3/Fri Nov 17 17:53:07 2006// -/altera_mf.v/1.1/Thu Jan 19 14:07:50 2006// -/host_sim.v/1.1/Thu Jan 19 14:07:51 2006// -/reg_int_sim.v/1.1/Tue Dec 13 12:54:38 2005// -/tb_top.v/1.3/Thu Jan 19 14:07:51 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Repository deleted file mode 100644 index 614471f3..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/bench/verilog diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v deleted file mode 100644 index 37bf364f..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/Phy_sim.v +++ /dev/null @@ -1,102 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// Phy_sim.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: Phy_sim.v,v $ -// Revision 1.3 2006/11/17 17:53:07 maverickist -// no message -// -// Revision 1.2 2006/01/19 14:07:50 maverickist -// verification is complete. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - -`timescale 1ns/100ps - -module Phy_sim (input Gtx_clk ,//used only in GMII mode - output Rx_clk , - output Tx_clk ,//used only in MII mode - input Tx_er , - input Tx_en , - input [7:0] Txd , - output Rx_er , - output Rx_dv , - output [7:0] Rxd , - output Crs , - output Col , - input [2:0] Speed - ); - - // //////////////////////////////////////////////////////////////////// - // this file used to simulate Phy. - // generate clk and loop the Tx data to Rx data - // full duplex mode can be verified on loop mode. - // //////////////////////////////////////////////////////////////////// - // //////////////////////////////////////////////////////////////////// - // internal signals - // //////////////////////////////////////////////////////////////////// - reg Clk_25m ;//used for 100 Mbps mode - reg Clk_2_5m ;//used for 10 Mbps mode - //wire Rx_clk ; - //wire Tx_clk ;//used only in MII mode - // //////////////////////////////////////////////////////////////////// - always - begin - #20 Clk_25m=0; - #20 Clk_25m=1; - end - - always - begin - #200 Clk_2_5m=0; - #200 Clk_2_5m=1; - end - - assign Rx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0; - assign Tx_clk=Speed[2]?Gtx_clk:Speed[1]?Clk_25m:Speed[0]?Clk_2_5m:0; - - assign Rx_dv =Tx_en ; - assign Rxd =Txd ; - assign Rx_er =0 ; - assign Crs =Tx_en ; - assign Col =0 ; - -endmodule // Phy_sim diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v deleted file mode 100644 index 90c79b3d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/User_int_sim.v +++ /dev/null @@ -1,148 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// User_input_sim.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: User_int_sim.v,v $ -// Revision 1.3 2006/11/17 17:53:07 maverickist -// no message -// -// Revision 1.2 2006/01/19 14:07:50 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/13 12:15:35 Administrator -// no message -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - -module User_int_sim (Reset , - Clk_user , - CPU_init_end , - //user inputerface , - Rx_mac_ra , - Rx_mac_rd , - Rx_mac_data , - Rx_mac_BE , - Rx_mac_pa , - Rx_mac_sop , - Rx_mac_eop , - //user inputerface , - Tx_mac_wa , - Tx_mac_wr , - Tx_mac_data , - Tx_mac_BE , - Tx_mac_sop , - Tx_mac_eop - ); - - input Reset ; - input Clk_user ; - input CPU_init_end ; - //user inputerface - input Rx_mac_ra ; - output Rx_mac_rd ; - input [31:0] Rx_mac_data ; - input [1:0] Rx_mac_BE ; - input Rx_mac_pa ; - input Rx_mac_sop ; - input Rx_mac_eop ; - //user inputerface - input Tx_mac_wa ; - output Tx_mac_wr ; - output [31:0] Tx_mac_data ; - output [1:0] Tx_mac_BE ;//big endian - output Tx_mac_sop ; - output Tx_mac_eop ; - - // //////////////////////////////////////////////////////////////////// - // inputernal signals - // //////////////////////////////////////////////////////////////////// - reg [4:0] operation; - reg [31:0] data; - reg Rx_mac_rd; - reg Start_tran; - // //////////////////////////////////////////////////////////////////// - //generate Tx user data - // //////////////////////////////////////////////////////////////////// - initial - begin - operation =0; - data =0; - end - - always @ (posedge Clk_user or posedge Reset) - if (Reset) - Start_tran <=0; - else if (Tx_mac_eop&&!Tx_mac_wa) - Start_tran <=0; - else if (Tx_mac_wa) - Start_tran <=1; - - always @ (posedge Clk_user) - if (Tx_mac_wa&&CPU_init_end) - $ip_32W_gen("../data/config.ini",operation,data); - else - begin - operation <=0; - data <=0; - end - - assign Tx_mac_data =data; - assign Tx_mac_wr =operation[4]; - assign Tx_mac_sop =operation[3]; - assign Tx_mac_eop =operation[2]; - assign Tx_mac_BE =operation[1:0]; - ////////////////////////////////////////////////////////////////////// - //verify Rx user data - ////////////////////////////////////////////////////////////////////// - always @ (posedge Clk_user or posedge Reset) - if (Reset) - Rx_mac_rd <=0; - else if(Rx_mac_ra) - Rx_mac_rd <=1; - else - Rx_mac_rd <=0; - - always @ (posedge Clk_user ) - if (Rx_mac_pa) - $ip_32W_check( Rx_mac_data, - {Rx_mac_sop,Rx_mac_eop,Rx_mac_eop?Rx_mac_BE:2'b0}); - -endmodule // User_int_sim diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/altera_mf.v b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/altera_mf.v deleted file mode 100644 index fffc46ff..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/altera_mf.v +++ /dev/null @@ -1,34538 +0,0 @@ -// Copyright (C) 1991-2005 Altera Corporation -// Your use of Altera Corporation's design tools, logic functions -// and other software and tools, and its AMPP partner logic -// functions, and any output files any of the foregoing -// (including device programming or simulation files), and any -// associated documentation or information are expressly subject -// to the terms and conditions of the Altera Program License -// Subscription Agreement, Altera MegaCore Function License -// Agreement, or other applicable license agreement, including, -// without limitation, that your use is for the sole purpose 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 5.1 Build 176 10/26/2005 - - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : ALTERA_MF_MEMORY_INITIALIZATION -// -// Description : Common function to read intel-hex format data file with -// extension .hex and creates the equivalent verilog format -// data file with extension .ver. -// -// Limitation : Supports only record type '00'(data record), '01'(end of -// file record) and '02'(extended segment address record). -// -// Results expected: Creates the verilog format data file with extension .ver -// and return the name of the file. -// -//END_MODULE_NAME-------------------------------------------------------------- - - -`timescale 1 ps / 1 ps -module lcell (in, out); - input in; - output out; - - assign out = in; -endmodule - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -`define TRUE 1 -`define FALSE 0 -`define NULL 0 -`define EOF -1 -`define MAX_BUFFER_SZ 2048 -`define MAX_NAME_SZ 128 -`define COLON ":" -`define NEWLINE "\n" -`define CARRIAGE_RETURN 8'h0D -`define SPACE " " -`define OFFSET 9 -`define H10 8'h10 -`define AWORD 8 -`define MASK15 32'h000000FF -`define EXT_STR "ver" - -// MODULE DECLARATION -module ALTERA_MF_MEMORY_INITIALIZATION; - - -/****************************************************************/ -/* Read in Intel-hex format data to verilog format data. */ -/* Intel-hex format :nnaaaaattddddcc */ -/****************************************************************/ -task convert_hex2ver; - input[`MAX_NAME_SZ*8 : 1] in_file; - input width; - output [`MAX_NAME_SZ*8 : 1] out_file; - reg [`MAX_NAME_SZ*8 : 1] in_file; - reg [`MAX_NAME_SZ*8 : 1] out_file; - reg [8:1] c; - reg [3:0] hex, tmp_char; - - integer width; - integer ifp, ofp, r, r2; - integer i, j, k, m, n; - integer done; - integer error_status; - integer first_rec; - integer last_rec; - - integer off_addr, nn, aaaa, tt, cc, aah, aal, dd, sum ; - integer line_no; - -begin -`ifdef NO_PLI -`else - `ifdef USE_RIF - `else - done = `FALSE; - error_status = `FALSE; - first_rec = `FALSE; - last_rec = `FALSE; - - off_addr= 0; - nn= 0; - aaaa= 0; - tt= 0; - cc= 0; - aah= 0; - aal= 0; - dd= 0; - sum = 0; - line_no = 1; - c = 0; - hex = 0; - - if((in_file[4*8 : 1] == ".dat") || (in_file[4*8 : 1] == ".DAT")) - out_file = in_file; - else - begin - ifp = $fopen(in_file, "r"); - if (ifp == `NULL) - begin - $display("ERROR: cannot read %0s.", in_file); - done = `TRUE; - end - - out_file = in_file; - - if((out_file[4*8 : 1] == ".hex") || (out_file[4*8 : 1] == ".HEX")) - out_file[3*8 : 1] = `EXT_STR; - else - begin - $display("ERROR: Invalid input file name %0s. Expecting file with .hex extension and Intel-hex data format.", in_file); - done = `TRUE; - end - - ofp = $fopen(out_file, "w"); - if (ofp == `NULL) - begin - $display("ERROR : cannot write %0s.", out_file); - done = `TRUE; - end - - while((!done) && (!error_status)) - begin : READER - - r = $fgetc(ifp); - - if (r == `EOF) - begin - if(!first_rec) - begin - error_status = `TRUE; - $display("WARNING: %0s, Intel-hex data file is empty.", in_file); - end - else if(!last_rec) - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Missing the last record.", in_file, line_no); - end - end - else if (r == `COLON) - begin - first_rec = `TRUE; - nn= 0; - aaaa= 0; - tt= 0; - cc= 0; - aah= 0; - aal= 0; - dd= 0; - sum = 0; - - // get record length bytes - for (i = 0; i < 2; i = i+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - nn = (nn * 16) + (r - 'h30); - else if ((r >= "A") && (r <= "F")) - nn = (nn * 16) + 10 + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - nn = (nn * 16) + 10 + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - end - - // get address bytes - for (i = 0; i < 4; i = i+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - hex = (r - 'h30); - else if ((r >= "A") && (r <= "F")) - hex = 10 + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - hex = 10 + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - - aaaa = (aaaa * 16) + hex; - - if (i < 2) - aal = (aal * 16) + hex; - else - aah = (aah * 16) + hex; - end - - // get record type bytes - for (i = 0; i < 2; i = i+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - tt = (tt * 16) + (r - 'h30); - else if ((r >= "A") && (r <= "F")) - tt = (tt * 16) + 10 + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - tt = (tt * 16) + 10 + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - end - - if((tt == 2) && (nn != 2) ) - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid data record.", in_file, line_no); - end - else - begin - - // get the sum of all the bytes for record length, address and record types - sum = nn + aah + aal + tt ; - - // check the record type - case(tt) - // normal_record - 8'h00 : - begin - first_rec = `TRUE; - i = 0; - k = width / `AWORD; - if ((width % `AWORD) != 0) - k = k + 1; - - // k = no. of bytes per entry. - while (i < nn) - begin - $fdisplay(ofp,"@%0h", (aaaa + off_addr)); - for (j = 1; j <= k; j = j +1) - begin - if ((k - j +1) > nn) - begin - for(m = 1; m <= 2; m= m+1) - begin - if((((k-j)*8) + ((3-m)*4) - width) < 4) - $fwrite(ofp, "0"); - end - end - else - begin - // get the data bytes - for(m = 1; m <= 2; m= m+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - hex = (r - 'h30); - else if ((r >= "A") && (r <= "F")) - hex = 10 + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - hex = 10 + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - - if((((k-j)*8) + ((3-m)*4) - width) < 4) - $fwrite(ofp, "%h", hex); - dd = (dd * 16) + hex; - - if(m % 2 == 0) - begin - sum = sum + dd; - dd = 0; - end - end - end - end - $fwrite(ofp, "\n"); - - i = i + k; - aaaa = aaaa + 1; - end // end of while (i < nn) - end - // last record - 8'h01: - begin - last_rec = `TRUE; - done = `TRUE; - end - // address base record - 8'h02: - begin - off_addr= 0; - - // get the extended segment address record - for(i = 1; i <= (nn*2); i= i+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - hex = (r - 'h30); - else if ((r >= "A") && (r <= "F")) - hex = 10 + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - hex = 10 + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - - off_addr = (off_addr * `H10) + hex; - dd = (dd * 16) + hex; - - if(i % 2 == 0) - begin - sum = sum + dd; - dd = 0; - end - end - - off_addr = off_addr * `H10; - end - default: - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Unknown record type.", in_file, line_no); - end - endcase - - // get the checksum bytes - for (i = 0; i < 2; i = i+1) - begin - r = $fgetc(ifp); - - if ((r >= "0") && (r <= "9")) - cc = (cc * 16) + (r - 'h30); - else if ((r >= "A") && (r <= "F")) - cc = 10 + (cc * 16) + (r - 'h41); - else if ((r >= "a") && (r <= "f")) - cc = 10 + (cc * 16) + (r - 'h61); - else - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - disable READER; - end - end - - // Perform check sum. - if(((~sum+1)& `MASK15) != cc) - begin - error_status = `TRUE; - $display("ERROR: %0s, line %0d, Invalid checksum.", in_file, line_no); - end - end - end - else if ((r == `NEWLINE) || (r == `CARRIAGE_RETURN)) - begin - line_no = line_no +1; - end - else if (r == `SPACE) - begin - // continue to next character; - end - else - begin - error_status = `TRUE; - $display("ERROR:%0s, line %0d, Invalid INTEL HEX record.", in_file, line_no); - done = `TRUE; - end - end - $fclose(ifp); - $fclose(ofp); - end - `endif -`endif -end -endtask // convert_hex2ver - -endmodule // ALTERA_MF_MEMORY_INITIALIZATION - - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : ALTERA_DEVICE_FAMILIES -// -// Description : Common Altera device families comparison -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module ALTERA_DEVICE_FAMILIES; - -function IS_FAMILY_ACEX1K; - input[8*20:1] device; - reg is_acex1k; -begin - if ((device == "ACEX1K") || (device == "acex1k") || (device == "ACEX 1K") || (device == "acex 1k")) - is_acex1k = 1; - else - is_acex1k = 0; - - IS_FAMILY_ACEX1K = is_acex1k; -end -endfunction //IS_FAMILY_ACEX1K - -function IS_FAMILY_APEX20K; - input[8*20:1] device; - reg is_apex20k; -begin - if ((device == "APEX20K") || (device == "apex20k") || (device == "APEX 20K") || (device == "apex 20k") || (device == "RAPHAEL") || (device == "raphael")) - is_apex20k = 1; - else - is_apex20k = 0; - - IS_FAMILY_APEX20K = is_apex20k; -end -endfunction //IS_FAMILY_APEX20K - -function IS_FAMILY_APEX20KC; - input[8*20:1] device; - reg is_apex20kc; -begin - if ((device == "APEX20KC") || (device == "apex20kc") || (device == "APEX 20KC") || (device == "apex 20kc")) - is_apex20kc = 1; - else - is_apex20kc = 0; - - IS_FAMILY_APEX20KC = is_apex20kc; -end -endfunction //IS_FAMILY_APEX20KC - -function IS_FAMILY_APEX20KE; - input[8*20:1] device; - reg is_apex20ke; -begin - if ((device == "APEX20KE") || (device == "apex20ke") || (device == "APEX 20KE") || (device == "apex 20ke")) - is_apex20ke = 1; - else - is_apex20ke = 0; - - IS_FAMILY_APEX20KE = is_apex20ke; -end -endfunction //IS_FAMILY_APEX20KE - -function IS_FAMILY_APEXII; - input[8*20:1] device; - reg is_apexii; -begin - if ((device == "APEX II") || (device == "apex ii") || (device == "APEXII") || (device == "apexii") || (device == "APEX 20KF") || (device == "apex 20kf") || (device == "APEX20KF") || (device == "apex20kf")) - is_apexii = 1; - else - is_apexii = 0; - - IS_FAMILY_APEXII = is_apexii; -end -endfunction //IS_FAMILY_APEXII - -function IS_FAMILY_EXCALIBUR_ARM; - input[8*20:1] device; - reg is_excalibur_arm; -begin - if ((device == "EXCALIBUR_ARM") || (device == "excalibur_arm") || (device == "Excalibur ARM") || (device == "EXCALIBUR ARM") || (device == "excalibur arm") || (device == "ARM-BASED EXCALIBUR") || (device == "arm-based excalibur") || (device == "ARM_BASED_EXCALIBUR") || (device == "arm_based_excalibur")) - is_excalibur_arm = 1; - else - is_excalibur_arm = 0; - - IS_FAMILY_EXCALIBUR_ARM = is_excalibur_arm; -end -endfunction //IS_FAMILY_EXCALIBUR_ARM - -function IS_FAMILY_FLEX10KE; - input[8*20:1] device; - reg is_flex10ke; -begin - if ((device == "FLEX10KE") || (device == "flex10ke") || (device == "FLEX 10KE") || (device == "flex 10ke")) - is_flex10ke = 1; - else - is_flex10ke = 0; - - IS_FAMILY_FLEX10KE = is_flex10ke; -end -endfunction //IS_FAMILY_FLEX10KE - -function IS_FAMILY_MERCURY; - input[8*20:1] device; - reg is_mercury; -begin - if ((device == "Mercury") || (device == "MERCURY") || (device == "mercury") || (device == "DALI") || (device == "dali")) - is_mercury = 1; - else - is_mercury = 0; - - IS_FAMILY_MERCURY = is_mercury; -end -endfunction //IS_FAMILY_MERCURY - -function IS_FAMILY_STRATIX; - input[8*20:1] device; - reg is_stratix; -begin - if ((device == "Stratix") || (device == "STRATIX") || (device == "stratix") || (device == "Yeager") || (device == "YEAGER") || (device == "yeager")) - is_stratix = 1; - else - is_stratix = 0; - - IS_FAMILY_STRATIX = is_stratix; -end -endfunction //IS_FAMILY_STRATIX - -function IS_FAMILY_STRATIXGX; - input[8*20:1] device; - reg is_stratixgx; -begin - if ((device == "Stratix GX") || (device == "STRATIX GX") || (device == "stratix gx") || (device == "Stratix-GX") || (device == "STRATIX-GX") || (device == "stratix-gx") || (device == "StratixGX") || (device == "STRATIXGX") || (device == "stratixgx") || (device == "Aurora") || (device == "AURORA") || (device == "aurora")) - is_stratixgx = 1; - else - is_stratixgx = 0; - - IS_FAMILY_STRATIXGX = is_stratixgx; -end -endfunction //IS_FAMILY_STRATIXGX - -function IS_FAMILY_CYCLONE; - input[8*20:1] device; - reg is_cyclone; -begin - if ((device == "Cyclone") || (device == "CYCLONE") || (device == "cyclone") || (device == "ACEX2K") || (device == "acex2k") || (device == "ACEX 2K") || (device == "acex 2k") || (device == "Tornado") || (device == "TORNADO") || (device == "tornado")) - is_cyclone = 1; - else - is_cyclone = 0; - - IS_FAMILY_CYCLONE = is_cyclone; -end -endfunction //IS_FAMILY_CYCLONE - -function IS_FAMILY_MAXII; - input[8*20:1] device; - reg is_maxii; -begin - if ((device == "MAX II") || (device == "max ii") || (device == "MAXII") || (device == "maxii") || (device == "Tsunami") || (device == "TSUNAMI") || (device == "tsunami")) - is_maxii = 1; - else - is_maxii = 0; - - IS_FAMILY_MAXII = is_maxii; -end -endfunction //IS_FAMILY_MAXII - -function IS_FAMILY_HARDCOPYSTRATIX; - input[8*20:1] device; - reg is_hardcopystratix; -begin - if ((device == "HardCopy Stratix") || (device == "HARDCOPY STRATIX") || (device == "hardcopy stratix") || (device == "Stratix HC") || (device == "STRATIX HC") || (device == "stratix hc") || (device == "StratixHC") || (device == "STRATIXHC") || (device == "stratixhc") || (device == "HardcopyStratix") || (device == "HARDCOPYSTRATIX") || (device == "hardcopystratix")) - is_hardcopystratix = 1; - else - is_hardcopystratix = 0; - - IS_FAMILY_HARDCOPYSTRATIX = is_hardcopystratix; -end -endfunction //IS_FAMILY_HARDCOPYSTRATIX - -function IS_FAMILY_STRATIXII; - input[8*20:1] device; - reg is_stratixii; -begin - if ((device == "Stratix II") || (device == "STRATIX II") || (device == "stratix ii") || (device == "StratixII") || (device == "STRATIXII") || (device == "stratixii") || (device == "Armstrong") || (device == "ARMSTRONG") || (device == "armstrong")) - is_stratixii = 1; - else - is_stratixii = 0; - - IS_FAMILY_STRATIXII = is_stratixii; -end -endfunction //IS_FAMILY_STRATIXII - -function IS_FAMILY_STRATIXIIGX; - input[8*20:1] device; - reg is_stratixiigx; -begin - if ((device == "Stratix II GX") || (device == "STRATIX II GX") || (device == "stratix ii gx") || (device == "StratixIIGX") || (device == "STRATIXIIGX") || (device == "stratixiigx")) - is_stratixiigx = 1; - else - is_stratixiigx = 0; - - IS_FAMILY_STRATIXIIGX = is_stratixiigx; -end -endfunction //IS_FAMILY_STRATIXIIGX - -function IS_FAMILY_CYCLONEII; - input[8*20:1] device; - reg is_cycloneii; -begin - if ((device == "Cyclone II") || (device == "CYCLONE II") || (device == "cyclone ii") || (device == "Cycloneii") || (device == "CYCLONEII") || (device == "cycloneii") || (device == "Magellan") || (device == "MAGELLAN") || (device == "magellan")) - is_cycloneii = 1; - else - is_cycloneii = 0; - - IS_FAMILY_CYCLONEII = is_cycloneii; -end -endfunction //IS_FAMILY_CYCLONEII - -function IS_FAMILY_HARDCOPYII; - input[8*20:1] device; - reg is_hardcopyii; -begin - if ((device == "HardCopy II") || (device == "HARDCOPY II") || (device == "hardcopy ii") || (device == "HardCopyII") || (device == "HARDCOPYII") || (device == "hardcopyii") || (device == "Fusion") || (device == "FUSION") || (device == "fusion")) - is_hardcopyii = 1; - else - is_hardcopyii = 0; - - IS_FAMILY_HARDCOPYII = is_hardcopyii; -end -endfunction //IS_FAMILY_HARDCOPYII - -function FEATURE_FAMILY_STRATIXGX; - input[8*20:1] device; - reg var_family_stratixgx; -begin - if (IS_FAMILY_STRATIXGX(device) ) - var_family_stratixgx = 1; - else - var_family_stratixgx = 0; - - FEATURE_FAMILY_STRATIXGX = var_family_stratixgx; -end -endfunction //FEATURE_FAMILY_STRATIXGX - -function FEATURE_FAMILY_CYCLONE; - input[8*20:1] device; - reg var_family_cyclone; -begin - if (IS_FAMILY_CYCLONE(device) ) - var_family_cyclone = 1; - else - var_family_cyclone = 0; - - FEATURE_FAMILY_CYCLONE = var_family_cyclone; -end -endfunction //FEATURE_FAMILY_CYCLONE - -function FEATURE_FAMILY_STRATIXII; - input[8*20:1] device; - reg var_family_stratixii; -begin - if (IS_FAMILY_STRATIXII(device) || IS_FAMILY_HARDCOPYII(device) || IS_FAMILY_STRATIXIIGX(device) ) - var_family_stratixii = 1; - else - var_family_stratixii = 0; - - FEATURE_FAMILY_STRATIXII = var_family_stratixii; -end -endfunction //FEATURE_FAMILY_STRATIXII - -function FEATURE_FAMILY_STRATIX_HC; - input[8*20:1] device; - reg var_family_stratix_hc; -begin - if (IS_FAMILY_HARDCOPYSTRATIX(device) ) - var_family_stratix_hc = 1; - else - var_family_stratix_hc = 0; - - FEATURE_FAMILY_STRATIX_HC = var_family_stratix_hc; -end -endfunction //FEATURE_FAMILY_STRATIX_HC - -function FEATURE_FAMILY_STRATIX; - input[8*20:1] device; - reg var_family_stratix; -begin - if (IS_FAMILY_STRATIX(device) || FEATURE_FAMILY_STRATIX_HC(device) || FEATURE_FAMILY_STRATIXGX(device) || FEATURE_FAMILY_CYCLONE(device) || FEATURE_FAMILY_STRATIXII(device) || FEATURE_FAMILY_MAXII(device) || FEATURE_FAMILY_CYCLONEII(device) ) - var_family_stratix = 1; - else - var_family_stratix = 0; - - FEATURE_FAMILY_STRATIX = var_family_stratix; -end -endfunction //FEATURE_FAMILY_STRATIX - -function FEATURE_FAMILY_MAXII; - input[8*20:1] device; - reg var_family_maxii; -begin - if (IS_FAMILY_MAXII(device) ) - var_family_maxii = 1; - else - var_family_maxii = 0; - - FEATURE_FAMILY_MAXII = var_family_maxii; -end -endfunction //FEATURE_FAMILY_MAXII - -function FEATURE_FAMILY_CYCLONEII; - input[8*20:1] device; - reg var_family_cycloneii; -begin - if (IS_FAMILY_CYCLONEII(device) ) - var_family_cycloneii = 1; - else - var_family_cycloneii = 0; - - FEATURE_FAMILY_CYCLONEII = var_family_cycloneii; -end -endfunction //FEATURE_FAMILY_CYCLONEII - -function FEATURE_FAMILY_HAS_MEGARAM; - input[8*20:1] device; - reg var_family_has_megaram; -begin - if (IS_FAMILY_STRATIX(device) || FEATURE_FAMILY_STRATIX_HC(device) || IS_FAMILY_STRATIXGX(device) || FEATURE_FAMILY_STRATIXII(device) ) - var_family_has_megaram = 1; - else - var_family_has_megaram = 0; - - FEATURE_FAMILY_HAS_MEGARAM = var_family_has_megaram; -end -endfunction //FEATURE_FAMILY_HAS_MEGARAM - -function FEATURE_FAMILY_HAS_M512; - input[8*20:1] device; - reg var_family_has_m512; -begin - if (IS_FAMILY_STRATIX(device) || FEATURE_FAMILY_STRATIX_HC(device) || IS_FAMILY_STRATIXGX(device) || IS_FAMILY_STRATIXII(device) || IS_FAMILY_STRATIXIIGX(device) ) - var_family_has_m512 = 1; - else - var_family_has_m512 = 0; - - FEATURE_FAMILY_HAS_M512 = var_family_has_m512; -end -endfunction //FEATURE_FAMILY_HAS_M512 - -function FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM; - input[8*20:1] device; - reg var_family_has_stratixii_style_ram; -begin - if (FEATURE_FAMILY_STRATIXII(device) || FEATURE_FAMILY_CYCLONEII(device) ) - var_family_has_stratixii_style_ram = 1; - else - var_family_has_stratixii_style_ram = 0; - - FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM = var_family_has_stratixii_style_ram; -end -endfunction //FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM - -function FEATURE_FAMILY_HAS_INVERTED_OUTPUT_DDIO; - input[8*20:1] device; - reg var_family_has_inverted_output_ddio; -begin - if (FEATURE_FAMILY_CYCLONEII(device) ) - var_family_has_inverted_output_ddio = 1; - else - var_family_has_inverted_output_ddio = 0; - - FEATURE_FAMILY_HAS_INVERTED_OUTPUT_DDIO = var_family_has_inverted_output_ddio; -end -endfunction //FEATURE_FAMILY_HAS_INVERTED_OUTPUT_DDIO - -function IS_VALID_FAMILY; - input[8*20:1] device; - reg is_valid; -begin - if (((device == "ACEX1K") || (device == "acex1k") || (device == "ACEX 1K") || (device == "acex 1k")) - || ((device == "APEX20K") || (device == "apex20k") || (device == "APEX 20K") || (device == "apex 20k") || (device == "RAPHAEL") || (device == "raphael")) - || ((device == "APEX20KC") || (device == "apex20kc") || (device == "APEX 20KC") || (device == "apex 20kc")) - || ((device == "APEX20KE") || (device == "apex20ke") || (device == "APEX 20KE") || (device == "apex 20ke")) - || ((device == "APEX II") || (device == "apex ii") || (device == "APEXII") || (device == "apexii") || (device == "APEX 20KF") || (device == "apex 20kf") || (device == "APEX20KF") || (device == "apex20kf")) - || ((device == "EXCALIBUR_ARM") || (device == "excalibur_arm") || (device == "Excalibur ARM") || (device == "EXCALIBUR ARM") || (device == "excalibur arm") || (device == "ARM-BASED EXCALIBUR") || (device == "arm-based excalibur") || (device == "ARM_BASED_EXCALIBUR") || (device == "arm_based_excalibur")) - || ((device == "FLEX10KE") || (device == "flex10ke") || (device == "FLEX 10KE") || (device == "flex 10ke")) - || ((device == "FLEX10K") || (device == "flex10k") || (device == "FLEX 10K") || (device == "flex 10k")) - || ((device == "FLEX10KA") || (device == "flex10ka") || (device == "FLEX 10KA") || (device == "flex 10ka")) - || ((device == "FLEX6000") || (device == "flex6000") || (device == "FLEX 6000") || (device == "flex 6000") || (device == "FLEX6K") || (device == "flex6k")) - || ((device == "MAX7000B") || (device == "max7000b") || (device == "MAX 7000B") || (device == "max 7000b")) - || ((device == "MAX7000AE") || (device == "max7000ae") || (device == "MAX 7000AE") || (device == "max 7000ae")) - || ((device == "MAX3000A") || (device == "max3000a") || (device == "MAX 3000A") || (device == "max 3000a")) - || ((device == "MAX7000S") || (device == "max7000s") || (device == "MAX 7000S") || (device == "max 7000s")) - || ((device == "MAX7000A") || (device == "max7000a") || (device == "MAX 7000A") || (device == "max 7000a")) - || ((device == "Mercury") || (device == "MERCURY") || (device == "mercury") || (device == "DALI") || (device == "dali")) - || ((device == "Stratix") || (device == "STRATIX") || (device == "stratix") || (device == "Yeager") || (device == "YEAGER") || (device == "yeager")) - || ((device == "Stratix GX") || (device == "STRATIX GX") || (device == "stratix gx") || (device == "Stratix-GX") || (device == "STRATIX-GX") || (device == "stratix-gx") || (device == "StratixGX") || (device == "STRATIXGX") || (device == "stratixgx") || (device == "Aurora") || (device == "AURORA") || (device == "aurora")) - || ((device == "Cyclone") || (device == "CYCLONE") || (device == "cyclone") || (device == "ACEX2K") || (device == "acex2k") || (device == "ACEX 2K") || (device == "acex 2k") || (device == "Tornado") || (device == "TORNADO") || (device == "tornado")) - || ((device == "MAX II") || (device == "max ii") || (device == "MAXII") || (device == "maxii") || (device == "Tsunami") || (device == "TSUNAMI") || (device == "tsunami")) - || ((device == "HardCopy Stratix") || (device == "HARDCOPY STRATIX") || (device == "hardcopy stratix") || (device == "Stratix HC") || (device == "STRATIX HC") || (device == "stratix hc") || (device == "StratixHC") || (device == "STRATIXHC") || (device == "stratixhc") || (device == "HardcopyStratix") || (device == "HARDCOPYSTRATIX") || (device == "hardcopystratix")) - || ((device == "Stratix II") || (device == "STRATIX II") || (device == "stratix ii") || (device == "StratixII") || (device == "STRATIXII") || (device == "stratixii") || (device == "Armstrong") || (device == "ARMSTRONG") || (device == "armstrong")) - || ((device == "Stratix II GX") || (device == "STRATIX II GX") || (device == "stratix ii gx") || (device == "StratixIIGX") || (device == "STRATIXIIGX") || (device == "stratixiigx")) - || ((device == "Cyclone II") || (device == "CYCLONE II") || (device == "cyclone ii") || (device == "Cycloneii") || (device == "CYCLONEII") || (device == "cycloneii") || (device == "Magellan") || (device == "MAGELLAN") || (device == "magellan")) - || ((device == "HardCopy II") || (device == "HARDCOPY II") || (device == "hardcopy ii") || (device == "HardCopyII") || (device == "HARDCOPYII") || (device == "hardcopyii") || (device == "Fusion") || (device == "FUSION") || (device == "fusion"))) - is_valid = 1; - else - is_valid = 0; - - IS_VALID_FAMILY = is_valid; -end -endfunction // IS_VALID_FAMILY - - -endmodule // ALTERA_DEVICE_FAMILIES - -/////////////////////////////////////////////////////////////////////////////// -// -// STRATIX_PLL and STRATIXII_PLL -// -/////////////////////////////////////////////////////////////////////////////// - -// DFFP -`timescale 1ps / 1ps -module dffp ( Q, CLK, ENA, D, CLRN, PRN ); - input D; - input CLK; - input CLRN; - input PRN; - input ENA; - output Q; - - - tri1 PRN, CLRN, ENA; - reg Q; - - always @ (posedge CLK or negedge CLRN or negedge PRN ) - if (PRN == 1'b0) Q = 1; - else if (CLRN == 1'b0) Q = 0; - else if ((CLK == 1) & (ENA == 1'b1)) Q = D; - endmodule - - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : stx_m_cntr -// -// Description : Simulation model for the M counter. This is the -// loop feedback counter for the Stratix PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module stx_m_cntr (clk, - reset, - cout, - initial_value, - modulus, - time_delay); - - // INPUT PORTS - input clk; - input reset; - input [31:0] initial_value; - input [31:0] modulus; - input [31:0] time_delay; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - integer count; - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg cout_tmp; - - initial - begin - count = 1; - first_rising_edge = 1; - clk_last_value = 0; - end - - always @(reset or clk) - begin - if (reset) - begin - count = 1; - tmp_cout = 0; - first_rising_edge = 1; - end - else begin - if (clk == 1 && clk_last_value !== clk && first_rising_edge) - begin - first_rising_edge = 0; - tmp_cout = clk; - end - else if (first_rising_edge == 0) - begin - if (count < modulus) - count = count + 1; - else - begin - count = 1; - tmp_cout = ~tmp_cout; - end - end - end - clk_last_value = clk; - - cout_tmp <= #(time_delay) tmp_cout; - end - - and (cout, cout_tmp, 1'b1); - -endmodule // stx_m_cntr - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : stx_n_cntr -// -// Description : Simulation model for the N counter. This is the -// input clock divide counter for the Stratix PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module stx_n_cntr (clk, - reset, - cout, - modulus, - time_delay); - - // INPUT PORTS - input clk; - input reset; - input [31:0] modulus; - input [31:0] time_delay; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - integer count; - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg clk_last_valid_value; - reg cout_tmp; - - initial - begin - count = 1; - first_rising_edge = 1; - clk_last_value = 0; - end - - always @(reset or clk) - begin - if (reset) - begin - count = 1; - tmp_cout = 0; - first_rising_edge = 1; - end - else begin - if (clk_last_value !== clk) - begin - if (clk === 1'bx) - begin - $display("Warning : Invalid transition to 'X' detected on Stratix PLL input clk. This edge will be ignored."); - $display("Time: %0t Instance: %m", $time); - end - else if ((clk === 1'b1) && first_rising_edge) - begin - first_rising_edge = 0; - tmp_cout = clk; - end - else if ((first_rising_edge == 0) && (clk_last_valid_value !== clk)) - begin - if (count < modulus) - count = count + 1; - else - begin - count = 1; - tmp_cout = ~tmp_cout; - end - end - end - end - clk_last_value = clk; - if (clk !== 1'bx) - clk_last_valid_value = clk; - - cout_tmp <= #(time_delay) tmp_cout; - end - - and (cout, cout_tmp, 1'b1); - -endmodule // stx_n_cntr - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : stx_scale_cntr -// -// Description : Simulation model for the output scale-down counters. -// This is a common model for the L0, L1, G0, G1, G2, G3, E0, -// E1, E2 and E3 output counters of the Stratix PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module stx_scale_cntr (clk, - reset, - cout, - high, - low, - initial_value, - mode, - time_delay, - ph_tap); - - // INPUT PORTS - input clk; - input reset; - input [31:0] high; - input [31:0] low; - input [31:0] initial_value; - input [8*6:1] mode; - input [31:0] time_delay; - input [31:0] ph_tap; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg init; - integer count; - integer output_shift_count; - reg cout_tmp; - reg [31:0] high_reg; - reg [31:0] low_reg; - reg high_cnt_xfer_done; - - initial - begin - count = 1; - first_rising_edge = 0; - tmp_cout = 0; - output_shift_count = 0; - high_cnt_xfer_done = 0; - end - - always @(clk or reset) - begin - if (init !== 1'b1) - begin - high_reg = high; - low_reg = low; - clk_last_value = 0; - init = 1'b1; - end - if (reset) - begin - count = 1; - output_shift_count = 0; - tmp_cout = 0; - first_rising_edge = 0; - end - else if (clk_last_value !== clk) - begin - if (mode == "off") - tmp_cout = 0; - else if (mode == "bypass") - tmp_cout = clk; - else if (first_rising_edge == 0) - begin - if (clk == 1) - begin - output_shift_count = output_shift_count + 1; - if (output_shift_count == initial_value) - begin - tmp_cout = clk; - first_rising_edge = 1; - end - end - end - else if (output_shift_count < initial_value) - begin - if (clk == 1) - output_shift_count = output_shift_count + 1; - end - else - begin - count = count + 1; - if (mode == "even" && (count == (high_reg*2) + 1)) - begin - tmp_cout = 0; - if (high_cnt_xfer_done === 1'b1) - begin - low_reg = low; - high_cnt_xfer_done = 0; - end - end - else if (mode == "odd" && (count == (high_reg*2))) - begin - tmp_cout = 0; - if (high_cnt_xfer_done === 1'b1) - begin - low_reg = low; - high_cnt_xfer_done = 0; - end - end - else if (count == (high_reg + low_reg)*2 + 1) - begin - tmp_cout = 1; - count = 1; // reset count - if (high_reg != high) - begin - high_reg = high; - high_cnt_xfer_done = 1; - end - end - end - end - clk_last_value = clk; - cout_tmp <= #(time_delay) tmp_cout; - end - - and (cout, cout_tmp, 1'b1); - -endmodule // stx_scale_cntr - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : MF_pll_reg -// -// Description : Simulation model for a simple DFF. -// This is required for the generation of the bit slip-signals. -// No timing, powers upto 0. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1ps / 1ps -module MF_pll_reg (q, - clk, - ena, - d, - clrn, - prn); - - // INPUT PORTS - input d; - input clk; - input clrn; - input prn; - input ena; - - // OUTPUT PORTS - output q; - - // INTERNAL VARIABLES - reg q; - - // DEFAULT VALUES THRO' PULLUPs - tri1 prn, clrn, ena; - - initial q = 0; - - always @ (posedge clk or negedge clrn or negedge prn ) - begin - if (prn == 1'b0) - q <= 1; - else if (clrn == 1'b0) - q <= 0; - else if ((clk == 1) & (ena == 1'b1)) - q <= d; - end - -endmodule // MF_pll_reg - -////////////////////////////////////////////////////////////////////////////// -// -// Module Name : MF_stratix_pll -// -// Description : The behavioral model for Stratix PLL. -// -// Limitations : Applies to the Stratix and Stratix GX device families -// No support for spread spectrum feature in the model -// -// Outputs : Up to 10 output clocks, each defined by its own set of -// parameters. Locked output (active high) indicates when the -// PLL locks. clkbad, clkloss and activeclock are used for -// clock switchover to indicate which input clock has gone -// bad, when the clock switchover initiates and which input -// clock is being used as the reference, respectively. -// scandataout is the data output of the serial scan chain. -// -////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps/1 ps -`define WORD_LENGTH 18 - -module MF_stratix_pll (inclk, - fbin, - ena, - clkswitch, - areset, - pfdena, - clkena, - extclkena, - scanclk, - scanaclr, - scandata, - clk, - extclk, - clkbad, - activeclock, - locked, - clkloss, - scandataout, - // lvds mode specific ports - comparator, - enable0, - enable1); - - parameter operation_mode = "normal"; - parameter qualify_conf_done = "off"; - parameter compensate_clock = "clk0"; - parameter pll_type = "auto"; - parameter scan_chain = "long"; - - parameter clk0_multiply_by = 1; - parameter clk0_divide_by = 1; - parameter clk0_phase_shift = 0; - parameter clk0_time_delay = 0; - parameter clk0_duty_cycle = 50; - - parameter clk1_multiply_by = 1; - parameter clk1_divide_by = 1; - parameter clk1_phase_shift = 0; - parameter clk1_time_delay = 0; - parameter clk1_duty_cycle = 50; - - parameter clk2_multiply_by = 1; - parameter clk2_divide_by = 1; - parameter clk2_phase_shift = 0; - parameter clk2_time_delay = 0; - parameter clk2_duty_cycle = 50; - - parameter clk3_multiply_by = 1; - parameter clk3_divide_by = 1; - parameter clk3_phase_shift = 0; - parameter clk3_time_delay = 0; - parameter clk3_duty_cycle = 50; - - parameter clk4_multiply_by = 1; - parameter clk4_divide_by = 1; - parameter clk4_phase_shift = 0; - parameter clk4_time_delay = 0; - parameter clk4_duty_cycle = 50; - - parameter clk5_multiply_by = 1; - parameter clk5_divide_by = 1; - parameter clk5_phase_shift = 0; - parameter clk5_time_delay = 0; - parameter clk5_duty_cycle = 50; - - parameter extclk0_multiply_by = 1; - parameter extclk0_divide_by = 1; - parameter extclk0_phase_shift = 0; - parameter extclk0_time_delay = 0; - parameter extclk0_duty_cycle = 50; - - parameter extclk1_multiply_by = 1; - parameter extclk1_divide_by = 1; - parameter extclk1_phase_shift = 0; - parameter extclk1_time_delay = 0; - parameter extclk1_duty_cycle = 50; - - parameter extclk2_multiply_by = 1; - parameter extclk2_divide_by = 1; - parameter extclk2_phase_shift = 0; - parameter extclk2_time_delay = 0; - parameter extclk2_duty_cycle = 50; - - parameter extclk3_multiply_by = 1; - parameter extclk3_divide_by = 1; - parameter extclk3_phase_shift = 0; - parameter extclk3_time_delay = 0; - parameter extclk3_duty_cycle = 50; - - parameter primary_clock = "inclk0"; - parameter inclk0_input_frequency = 10000; - parameter inclk1_input_frequency = 10000; - parameter gate_lock_signal = "no"; - parameter gate_lock_counter = 1; - parameter valid_lock_multiplier = 5; - parameter invalid_lock_multiplier = 5; - - parameter switch_over_on_lossclk = "off"; - parameter switch_over_on_gated_lock = "off"; - parameter switch_over_counter = 1; - parameter enable_switch_over_counter = "off"; - parameter feedback_source = "e0"; - parameter bandwidth = 0; - parameter bandwidth_type = "auto"; - parameter down_spread = "0.0"; - parameter spread_frequency = 0; - parameter common_rx_tx = "off"; - parameter rx_outclock_resource = "auto"; - parameter use_vco_bypass = "false"; - parameter use_dc_coupling = "false"; - - parameter pfd_min = 0; - parameter pfd_max = 0; - parameter vco_min = 0; - parameter vco_max = 0; - parameter vco_center = 0; - - // ADVANCED USE PARAMETERS - parameter m_initial = 1; - parameter m = 1; - parameter n = 1; - parameter m2 = 1; - parameter n2 = 1; - parameter ss = 0; - - parameter l0_high = 1; - parameter l0_low = 1; - parameter l0_initial = 1; - parameter l0_mode = "bypass"; - parameter l0_ph = 0; - parameter l0_time_delay = 0; - - parameter l1_high = 1; - parameter l1_low = 1; - parameter l1_initial = 1; - parameter l1_mode = "bypass"; - parameter l1_ph = 0; - parameter l1_time_delay = 0; - - parameter g0_high = 1; - parameter g0_low = 1; - parameter g0_initial = 1; - parameter g0_mode = "bypass"; - parameter g0_ph = 0; - parameter g0_time_delay = 0; - - parameter g1_high = 1; - parameter g1_low = 1; - parameter g1_initial = 1; - parameter g1_mode = "bypass"; - parameter g1_ph = 0; - parameter g1_time_delay = 0; - - parameter g2_high = 1; - parameter g2_low = 1; - parameter g2_initial = 1; - parameter g2_mode = "bypass"; - parameter g2_ph = 0; - parameter g2_time_delay = 0; - - parameter g3_high = 1; - parameter g3_low = 1; - parameter g3_initial = 1; - parameter g3_mode = "bypass"; - parameter g3_ph = 0; - parameter g3_time_delay = 0; - - parameter e0_high = 1; - parameter e0_low = 1; - parameter e0_initial = 1; - parameter e0_mode = "bypass"; - parameter e0_ph = 0; - parameter e0_time_delay = 0; - - parameter e1_high = 1; - parameter e1_low = 1; - parameter e1_initial = 1; - parameter e1_mode = "bypass"; - parameter e1_ph = 0; - parameter e1_time_delay = 0; - - parameter e2_high = 1; - parameter e2_low = 1; - parameter e2_initial = 1; - parameter e2_mode = "bypass"; - parameter e2_ph = 0; - parameter e2_time_delay = 0; - - parameter e3_high = 1; - parameter e3_low = 1; - parameter e3_initial = 1; - parameter e3_mode = "bypass"; - parameter e3_ph = 0; - parameter e3_time_delay = 0; - - parameter m_ph = 0; - parameter m_time_delay = 0; - parameter n_time_delay = 0; - - parameter extclk0_counter = "e0"; - parameter extclk1_counter = "e1"; - parameter extclk2_counter = "e2"; - parameter extclk3_counter = "e3"; - - parameter clk0_counter = "g0"; - parameter clk1_counter = "g1"; - parameter clk2_counter = "g2"; - parameter clk3_counter = "g3"; - parameter clk4_counter = "l0"; - parameter clk5_counter = "l1"; - - // LVDS mode parameters - parameter enable0_counter = "l0"; - parameter enable1_counter = "l0"; - - parameter charge_pump_current = 0; - parameter loop_filter_r = "1.0"; - parameter loop_filter_c = 1; - - parameter pll_compensation_delay = 0; - parameter simulation_type = "timing"; - - //parameter for stratix lvds - parameter clk0_phase_shift_num = 0; - parameter clk1_phase_shift_num = 0; - parameter clk2_phase_shift_num = 0; - - parameter skip_vco = "off"; - - parameter clk0_use_even_counter_mode = "off"; - parameter clk1_use_even_counter_mode = "off"; - parameter clk2_use_even_counter_mode = "off"; - parameter clk3_use_even_counter_mode = "off"; - parameter clk4_use_even_counter_mode = "off"; - parameter clk5_use_even_counter_mode = "off"; - parameter extclk0_use_even_counter_mode = "off"; - parameter extclk1_use_even_counter_mode = "off"; - parameter extclk2_use_even_counter_mode = "off"; - parameter extclk3_use_even_counter_mode = "off"; - - parameter clk0_use_even_counter_value = "off"; - parameter clk1_use_even_counter_value = "off"; - parameter clk2_use_even_counter_value = "off"; - parameter clk3_use_even_counter_value = "off"; - parameter clk4_use_even_counter_value = "off"; - parameter clk5_use_even_counter_value = "off"; - parameter extclk0_use_even_counter_value = "off"; - parameter extclk1_use_even_counter_value = "off"; - parameter extclk2_use_even_counter_value = "off"; - parameter extclk3_use_even_counter_value = "off"; - - // INPUT PORTS - input [1:0] inclk; - input fbin; - input ena; - input clkswitch; - input areset; - input pfdena; - input [5:0] clkena; - input [3:0] extclkena; - input scanclk; - input scanaclr; - input scandata; - // lvds specific input ports - input comparator; - - // OUTPUT PORTS - output [5:0] clk; - output [3:0] extclk; - output [1:0] clkbad; - output activeclock; - output locked; - output clkloss; - output scandataout; - // lvds specific output ports - output enable0; - output enable1; - - // BUFFER INPUTS - wire inclk0_ipd; - wire inclk1_ipd; - wire ena_ipd; - wire fbin_ipd; - wire areset_ipd; - wire pfdena_ipd; - wire clkena0_ipd; - wire clkena1_ipd; - wire clkena2_ipd; - wire clkena3_ipd; - wire clkena4_ipd; - wire clkena5_ipd; - wire extclkena0_ipd; - wire extclkena1_ipd; - wire extclkena2_ipd; - wire extclkena3_ipd; - wire scanclk_ipd; - wire scanaclr_ipd; - wire scandata_ipd; - wire comparator_ipd; - wire clkswitch_ipd; - - buf (inclk0_ipd, inclk[0]); - buf (inclk1_ipd, inclk[1]); - buf (ena_ipd, ena); - buf (fbin_ipd, fbin); - buf (areset_ipd, areset); - buf (pfdena_ipd, pfdena); - buf (clkena0_ipd, clkena[0]); - buf (clkena1_ipd, clkena[1]); - buf (clkena2_ipd, clkena[2]); - buf (clkena3_ipd, clkena[3]); - buf (clkena4_ipd, clkena[4]); - buf (clkena5_ipd, clkena[5]); - buf (extclkena0_ipd, extclkena[0]); - buf (extclkena1_ipd, extclkena[1]); - buf (extclkena2_ipd, extclkena[2]); - buf (extclkena3_ipd, extclkena[3]); - buf (scanclk_ipd, scanclk); - buf (scanaclr_ipd, scanaclr); - buf (scandata_ipd, scandata); - buf (comparator_ipd, comparator); - buf (clkswitch_ipd, clkswitch); - - // INTERNAL VARIABLES AND NETS - integer scan_chain_length; - integer i; - integer j; - integer k; - integer l_index; - integer gate_count; - integer egpp_offset; - integer sched_time; - integer delay_chain; - integer low; - integer high; - integer initial_delay; - integer fbk_phase; - integer fbk_delay; - integer phase_shift[0:7]; - integer last_phase_shift[0:7]; - - integer m_times_vco_period; - integer new_m_times_vco_period; - integer refclk_period; - integer fbclk_period; - integer primary_clock_frequency; - integer high_time; - integer low_time; - integer my_rem; - integer tmp_rem; - integer rem; - integer tmp_vco_per; - integer vco_per; - integer offset; - integer temp_offset; - integer cycles_to_lock; - integer cycles_to_unlock; - integer l0_count; - integer l1_count; - integer loop_xplier; - integer loop_initial; - integer loop_ph; - integer loop_time_delay; - integer cycle_to_adjust; - integer total_pull_back; - integer pull_back_M; - integer pull_back_ext_cntr; - - time fbclk_time; - time first_fbclk_time; - time refclk_time; - time scanaclr_rising_time; - time scanaclr_falling_time; - - reg got_first_refclk; - reg got_second_refclk; - reg got_first_fbclk; - reg refclk_last_value; - reg fbclk_last_value; - reg inclk_last_value; - reg pll_is_locked; - reg pll_about_to_lock; - reg locked_tmp; - reg l0_got_first_rising_edge; - reg l1_got_first_rising_edge; - reg vco_l0_last_value; - reg vco_l1_last_value; - reg areset_ipd_last_value; - reg ena_ipd_last_value; - reg pfdena_ipd_last_value; - reg inclk_out_of_range; - reg schedule_vco_last_value; - - reg gate_out; - reg vco_val; - - reg [31:0] m_initial_val; - reg [31:0] m_val; - reg [31:0] m_val_tmp; - reg [31:0] m2_val; - reg [31:0] n_val; - reg [31:0] n_val_tmp; - reg [31:0] n2_val; - reg [31:0] m_time_delay_val; - reg [31:0] n_time_delay_val; - reg [31:0] m_delay; - reg [8*6:1] m_mode_val; - reg [8*6:1] m2_mode_val; - reg [8*6:1] n_mode_val; - reg [8*6:1] n2_mode_val; - reg [31:0] l0_high_val; - reg [31:0] l0_low_val; - reg [31:0] l0_initial_val; - reg [31:0] l0_time_delay_val; - reg [8*6:1] l0_mode_val; - reg [31:0] l1_high_val; - reg [31:0] l1_low_val; - reg [31:0] l1_initial_val; - reg [31:0] l1_time_delay_val; - reg [8*6:1] l1_mode_val; - - reg [31:0] g0_high_val; - reg [31:0] g0_low_val; - reg [31:0] g0_initial_val; - reg [31:0] g0_time_delay_val; - reg [8*6:1] g0_mode_val; - - reg [31:0] g1_high_val; - reg [31:0] g1_low_val; - reg [31:0] g1_initial_val; - reg [31:0] g1_time_delay_val; - reg [8*6:1] g1_mode_val; - - reg [31:0] g2_high_val; - reg [31:0] g2_low_val; - reg [31:0] g2_initial_val; - reg [31:0] g2_time_delay_val; - reg [8*6:1] g2_mode_val; - - reg [31:0] g3_high_val; - reg [31:0] g3_low_val; - reg [31:0] g3_initial_val; - reg [31:0] g3_time_delay_val; - reg [8*6:1] g3_mode_val; - - reg [31:0] e0_high_val; - reg [31:0] e0_low_val; - reg [31:0] e0_initial_val; - reg [31:0] e0_time_delay_val; - reg [8*6:1] e0_mode_val; - - reg [31:0] e1_high_val; - reg [31:0] e1_low_val; - reg [31:0] e1_initial_val; - reg [31:0] e1_time_delay_val; - reg [8*6:1] e1_mode_val; - - reg [31:0] e2_high_val; - reg [31:0] e2_low_val; - reg [31:0] e2_initial_val; - reg [31:0] e2_time_delay_val; - reg [8*6:1] e2_mode_val; - - reg [31:0] e3_high_val; - reg [31:0] e3_low_val; - reg [31:0] e3_initial_val; - reg [31:0] e3_time_delay_val; - reg [8*6:1] e3_mode_val; - - reg scanclk_last_value; - reg scanaclr_last_value; - reg transfer; - reg transfer_enable; - reg [288:0] scan_data; - reg schedule_vco; - reg schedule_offset; - reg stop_vco; - reg inclk_n; - - reg [7:0] vco_out; - wire inclk_l0; - wire inclk_l1; - wire inclk_m; - wire clk0_tmp; - wire clk1_tmp; - wire clk2_tmp; - wire clk3_tmp; - wire clk4_tmp; - wire clk5_tmp; - wire extclk0_tmp; - wire extclk1_tmp; - wire extclk2_tmp; - wire extclk3_tmp; - wire nce_l0; - wire nce_l1; - wire nce_temp; - - reg vco_l0; - reg vco_l1; - - wire clk0; - wire clk1; - wire clk2; - wire clk3; - wire clk4; - wire clk5; - wire extclk0; - wire extclk1; - wire extclk2; - wire extclk3; - wire ena0; - wire ena1; - wire ena2; - wire ena3; - wire ena4; - wire ena5; - wire extena0; - wire extena1; - wire extena2; - wire extena3; - wire refclk; - wire fbclk; - wire l0_clk; - wire l1_clk; - wire g0_clk; - wire g1_clk; - wire g2_clk; - wire g3_clk; - wire e0_clk; - wire e1_clk; - wire e2_clk; - wire e3_clk; - wire dffa_out; - wire dffb_out; - wire dffc_out; - wire dffd_out; - wire lvds_dffb_clk; - wire lvds_dffc_clk; - wire lvds_dffd_clk; - - reg first_schedule; - - wire enable0_tmp; - wire enable1_tmp; - wire enable_0; - wire enable_1; - reg l0_tmp; - reg l1_tmp; - - reg vco_period_was_phase_adjusted; - reg phase_adjust_was_scheduled; - - // for external feedback mode - - reg [31:0] ext_fbk_cntr_high; - reg [31:0] ext_fbk_cntr_low; - reg [31:0] ext_fbk_cntr_modulus; - reg [31:0] ext_fbk_cntr_delay; - reg [8*2:1] ext_fbk_cntr; - reg [8*6:1] ext_fbk_cntr_mode; - integer ext_fbk_cntr_ph; - integer ext_fbk_cntr_initial; - - wire inclk_e0; - wire inclk_e1; - wire inclk_e2; - wire inclk_e3; - wire [31:0] cntr_e0_initial; - wire [31:0] cntr_e1_initial; - wire [31:0] cntr_e2_initial; - wire [31:0] cntr_e3_initial; - wire [31:0] cntr_e0_delay; - wire [31:0] cntr_e1_delay; - wire [31:0] cntr_e2_delay; - wire [31:0] cntr_e3_delay; - reg [31:0] ext_fbk_delay; - - // variables for clk_switch - reg clk0_is_bad; - reg clk1_is_bad; - reg inclk0_last_value; - reg inclk1_last_value; - reg other_clock_value; - reg other_clock_last_value; - reg primary_clk_is_bad; - reg current_clk_is_bad; - reg external_switch; - reg [8*6:1] current_clock; - reg active_clock; - reg clkloss_tmp; - reg got_curr_clk_falling_edge_after_clkswitch; - reg active_clk_was_switched; - - integer clk0_count; - integer clk1_count; - integer switch_over_count; - - reg scandataout_tmp; - integer quiet_time; - reg pll_in_quiet_period; - time start_quiet_time; - reg quiet_period_violation; - reg reconfig_err; - reg scanclr_violation; - reg scanclr_clk_violation; - reg got_first_scanclk_after_scanclr_inactive_edge; - reg error; - - reg no_warn; - - // internal parameters - parameter EGPP_SCAN_CHAIN = 289; - parameter GPP_SCAN_CHAIN = 193; - parameter TRST = 5000; - parameter TRSTCLK = 5000; - - // internal variables for scaling of multiply_by and divide_by values - integer i_clk0_mult_by; - integer i_clk0_div_by; - integer i_clk1_mult_by; - integer i_clk1_div_by; - integer i_clk2_mult_by; - integer i_clk2_div_by; - integer i_clk3_mult_by; - integer i_clk3_div_by; - integer i_clk4_mult_by; - integer i_clk4_div_by; - integer i_clk5_mult_by; - integer i_clk5_div_by; - integer i_extclk0_mult_by; - integer i_extclk0_div_by; - integer i_extclk1_mult_by; - integer i_extclk1_div_by; - integer i_extclk2_mult_by; - integer i_extclk2_div_by; - integer i_extclk3_mult_by; - integer i_extclk3_div_by; - integer max_d_value; - integer new_multiplier; - - // internal variables for storing the phase shift number.(used in lvds mode only) - integer i_clk0_phase_shift; - integer i_clk1_phase_shift; - integer i_clk2_phase_shift; - - // user to advanced internal signals - - integer i_m_initial; - integer i_m; - integer i_n; - integer i_m2; - integer i_n2; - integer i_ss; - integer i_l0_high; - integer i_l1_high; - integer i_g0_high; - integer i_g1_high; - integer i_g2_high; - integer i_g3_high; - integer i_e0_high; - integer i_e1_high; - integer i_e2_high; - integer i_e3_high; - integer i_l0_low; - integer i_l1_low; - integer i_g0_low; - integer i_g1_low; - integer i_g2_low; - integer i_g3_low; - integer i_e0_low; - integer i_e1_low; - integer i_e2_low; - integer i_e3_low; - integer i_l0_initial; - integer i_l1_initial; - integer i_g0_initial; - integer i_g1_initial; - integer i_g2_initial; - integer i_g3_initial; - integer i_e0_initial; - integer i_e1_initial; - integer i_e2_initial; - integer i_e3_initial; - reg [8*6:1] i_l0_mode; - reg [8*6:1] i_l1_mode; - reg [8*6:1] i_g0_mode; - reg [8*6:1] i_g1_mode; - reg [8*6:1] i_g2_mode; - reg [8*6:1] i_g3_mode; - reg [8*6:1] i_e0_mode; - reg [8*6:1] i_e1_mode; - reg [8*6:1] i_e2_mode; - reg [8*6:1] i_e3_mode; - integer i_vco_min; - integer i_vco_max; - integer i_vco_center; - integer i_pfd_min; - integer i_pfd_max; - integer i_l0_ph; - integer i_l1_ph; - integer i_g0_ph; - integer i_g1_ph; - integer i_g2_ph; - integer i_g3_ph; - integer i_e0_ph; - integer i_e1_ph; - integer i_e2_ph; - integer i_e3_ph; - integer i_m_ph; - integer m_ph_val; - integer i_l0_time_delay; - integer i_l1_time_delay; - integer i_g0_time_delay; - integer i_g1_time_delay; - integer i_g2_time_delay; - integer i_g3_time_delay; - integer i_e0_time_delay; - integer i_e1_time_delay; - integer i_e2_time_delay; - integer i_e3_time_delay; - integer i_m_time_delay; - integer i_n_time_delay; - integer i_extclk3_counter; - integer i_extclk2_counter; - integer i_extclk1_counter; - integer i_extclk0_counter; - integer i_clk5_counter; - integer i_clk4_counter; - integer i_clk3_counter; - integer i_clk2_counter; - integer i_clk1_counter; - integer i_clk0_counter; - integer i_charge_pump_current; - integer i_loop_filter_r; - integer max_neg_abs; - integer output_count; - integer new_divisor; - - // uppercase to lowercase parameter values - reg [8*`WORD_LENGTH:1] l_operation_mode; - reg [8*`WORD_LENGTH:1] l_pll_type; - reg [8*`WORD_LENGTH:1] l_qualify_conf_done; - reg [8*`WORD_LENGTH:1] l_compensate_clock; - reg [8*`WORD_LENGTH:1] l_scan_chain; - reg [8*`WORD_LENGTH:1] l_primary_clock; - reg [8*`WORD_LENGTH:1] l_gate_lock_signal; - reg [8*`WORD_LENGTH:1] l_switch_over_on_lossclk; - reg [8*`WORD_LENGTH:1] l_switch_over_on_gated_lock; - reg [8*`WORD_LENGTH:1] l_enable_switch_over_counter; - reg [8*`WORD_LENGTH:1] l_feedback_source; - reg [8*`WORD_LENGTH:1] l_bandwidth_type; - reg [8*`WORD_LENGTH:1] l_simulation_type; - reg [8*`WORD_LENGTH:1] l_enable0_counter; - reg [8*`WORD_LENGTH:1] l_enable1_counter; - - reg init; - - specify - endspecify - - // finds the closest integer fraction of a given pair of numerator and denominator. - task find_simple_integer_fraction; - input numerator; - input denominator; - input max_denom; - output fraction_num; - output fraction_div; - parameter max_iter = 20; - - integer numerator; - integer denominator; - integer max_denom; - integer fraction_num; - integer fraction_div; - - integer quotient_array[max_iter-1:0]; - integer int_loop_iter; - integer int_quot; - integer m_value; - integer d_value; - integer old_m_value; - integer swap; - - integer loop_iter; - integer num; - integer den; - integer i_max_iter; - - begin - loop_iter = 0; - num = numerator; - den = denominator; - i_max_iter = max_iter; - - while (loop_iter < i_max_iter) - begin - int_quot = num / den; - quotient_array[loop_iter] = int_quot; - num = num - (den*int_quot); - loop_iter=loop_iter+1; - - if ((num == 0) || (max_denom != -1) || (loop_iter == i_max_iter)) - begin - // calculate the numerator and denominator if there is a restriction on the - // max denom value or if the loop is ending - m_value = 0; - d_value = 1; - // get the rounded value at this stage for the remaining fraction - if (den != 0) - begin - m_value = (2*num/den); - end - // calculate the fraction numerator and denominator at this stage - for (int_loop_iter = loop_iter-1; int_loop_iter >= 0; int_loop_iter=int_loop_iter-1) - begin - if (m_value == 0) - begin - m_value = quotient_array[int_loop_iter]; - d_value = 1; - end - else - begin - old_m_value = m_value; - m_value = quotient_array[int_loop_iter]*m_value + d_value; - d_value = old_m_value; - end - end - // if the denominator is less than the maximum denom_value or if there is no restriction save it - if ((d_value <= max_denom) || (max_denom == -1)) - begin - fraction_num = m_value; - fraction_div = d_value; - end - // end the loop if the denomitor has overflown or the numerator is zero (no remainder during this round) - if (((d_value > max_denom) && (max_denom != -1)) || (num == 0)) - begin - i_max_iter = loop_iter; - end - end - // swap the numerator and denominator for the next round - swap = den; - den = num; - num = swap; - end - end - endtask // find_simple_integer_fraction - -// get the absolute value - function integer abs; - input value; - integer value; - begin - if (value < 0) - abs = value * -1; - else abs = value; - end - endfunction - - // find twice the period of the slowest clock - function integer slowest_clk; - input L0, L1, G0, G1, G2, G3, E0, E1, E2, E3, scan_chain, refclk, m_mod; - integer L0, L1, G0, G1, G2, G3, E0, E1, E2, E3; - reg [8*5:1] scan_chain; - integer refclk; - reg [31:0] m_mod; - integer max_modulus; - begin - if (L0 > L1) - max_modulus = L0; - else - max_modulus = L1; - if (G0 > max_modulus) - max_modulus = G0; - if (G1 > max_modulus) - max_modulus = G1; - if (G2 > max_modulus) - max_modulus = G2; - if (G3 > max_modulus) - max_modulus = G3; - if (scan_chain == "long") - begin - if (E0 > max_modulus) - max_modulus = E0; - if (E1 > max_modulus) - max_modulus = E1; - if (E2 > max_modulus) - max_modulus = E2; - if (E3 > max_modulus) - max_modulus = E3; - end - - slowest_clk = ((refclk/m_mod) * max_modulus *2); - end - endfunction - - // count the number of digits in the given integer - function integer count_digit; - input X; - integer X; - integer count, result; - begin - count = 0; - result = X; - while (result != 0) - begin - result = (result / 10); - count = count + 1; - end - - count_digit = count; - end - endfunction - - // reduce the given huge number(X) to Y significant digits - function integer scale_num; - input X, Y; - integer X, Y; - integer count; - integer fac_ten, lc; - begin - fac_ten = 1; - count = count_digit(X); - - for (lc = 0; lc < (count-Y); lc = lc + 1) - fac_ten = fac_ten * 10; - - scale_num = (X / fac_ten); - end - endfunction - - // find the greatest common denominator of X and Y - function integer gcd; - input X,Y; - integer X,Y; - integer L, S, R, G; - begin - if (X < Y) // find which is smaller. - begin - S = X; - L = Y; - end - else - begin - S = Y; - L = X; - end - - R = S; - while ( R > 1) - begin - S = L; - L = R; - R = S % L; // divide bigger number by smaller. - // remainder becomes smaller number. - end - if (R == 0) // if evenly divisible then L is gcd else it is 1. - G = L; - else - G = R; - gcd = G; - end - endfunction - - // find the least common multiple of A1 to A10 - function integer lcm; - input A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, P; - integer A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, P; - integer M1, M2, M3, M4, M5 , M6, M7, M8, M9, R; - begin - M1 = (A1 * A2)/gcd(A1, A2); - M2 = (M1 * A3)/gcd(M1, A3); - M3 = (M2 * A4)/gcd(M2, A4); - M4 = (M3 * A5)/gcd(M3, A5); - M5 = (M4 * A6)/gcd(M4, A6); - M6 = (M5 * A7)/gcd(M5, A7); - M7 = (M6 * A8)/gcd(M6, A8); - M8 = (M7 * A9)/gcd(M7, A9); - M9 = (M8 * A10)/gcd(M8, A10); - if (M9 < 3) - R = 10; - else if ((M9 <= 10) && (M9 >= 3)) - R = 4 * M9; - else if (M9 > 1000) - R = scale_num(M9,3); - else - R = M9; - lcm = R; - end - endfunction - - // find the factor of division of the output clock frequency - // compared to the VCO - function integer output_counter_value; - input clk_divide, clk_mult, M, N; - integer clk_divide, clk_mult, M, N; - integer R; - begin - R = (clk_divide * M)/(clk_mult * N); - output_counter_value = R; - end - endfunction - - // find the mode of each of the PLL counters - bypass, even or odd - function [8*6:1] counter_mode; - input duty_cycle; - input output_counter_value; - integer duty_cycle; - integer output_counter_value; - integer half_cycle_high; - reg [8*6:1] R; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - if (output_counter_value == 1) - R = "bypass"; - else if ((half_cycle_high % 2) == 0) - R = "even"; - else - R = "odd"; - counter_mode = R; - end - endfunction - - // find the number of VCO clock cycles to hold the output clock high - function integer counter_high; - input output_counter_value, duty_cycle; - integer output_counter_value, duty_cycle; - integer half_cycle_high; - integer tmp_counter_high; - integer mode; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - mode = ((half_cycle_high % 2) == 0); - tmp_counter_high = half_cycle_high/2; - counter_high = tmp_counter_high + !mode; - end - endfunction - - // find the number of VCO clock cycles to hold the output clock low - function integer counter_low; - input output_counter_value, duty_cycle; - integer output_counter_value, duty_cycle, counter_h; - integer half_cycle_high; - integer mode; - integer tmp_counter_high; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - mode = ((half_cycle_high % 2) == 0); - tmp_counter_high = half_cycle_high/2; - counter_h = tmp_counter_high + !mode; - counter_low = output_counter_value - counter_h; - end - endfunction - - // find the smallest time delay amongst t1 to t10 - function integer mintimedelay; - input t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer m1,m2,m3,m4,m5,m6,m7,m8,m9; - begin - if (t1 < t2) - m1 = t1; - else - m1 = t2; - if (m1 < t3) - m2 = m1; - else - m2 = t3; - if (m2 < t4) - m3 = m2; - else - m3 = t4; - if (m3 < t5) - m4 = m3; - else - m4 = t5; - if (m4 < t6) - m5 = m4; - else - m5 = t6; - if (m5 < t7) - m6 = m5; - else - m6 = t7; - if (m6 < t8) - m7 = m6; - else - m7 = t8; - if (m7 < t9) - m8 = m7; - else - m8 = t9; - if (m8 < t10) - m9 = m8; - else - m9 = t10; - if (m9 > 0) - mintimedelay = m9; - else - mintimedelay = 0; - end - endfunction - - // find the numerically largest negative number, and return its absolute value - function integer maxnegabs; - input t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer m1,m2,m3,m4,m5,m6,m7,m8,m9; - begin - if (t1 < t2) m1 = t1; else m1 = t2; - if (m1 < t3) m2 = m1; else m2 = t3; - if (m2 < t4) m3 = m2; else m3 = t4; - if (m3 < t5) m4 = m3; else m4 = t5; - if (m4 < t6) m5 = m4; else m5 = t6; - if (m5 < t7) m6 = m5; else m6 = t7; - if (m6 < t8) m7 = m6; else m7 = t8; - if (m7 < t9) m8 = m7; else m8 = t9; - if (m8 < t10) m9 = m8; else m9 = t10; - maxnegabs = (m9 < 0) ? 0 - m9 : 0; - end - endfunction - - // adjust the given tap_phase by adding the largest negative number (ph_base) - function integer ph_adjust; - input tap_phase, ph_base; - integer tap_phase, ph_base; - begin - ph_adjust = tap_phase + ph_base; - end - endfunction - - // find the actual time delay for each PLL counter - function integer counter_time_delay; - input clk_time_delay, m_time_delay, n_time_delay; - integer clk_time_delay, m_time_delay, n_time_delay; - begin - counter_time_delay = clk_time_delay + m_time_delay - n_time_delay; - end - endfunction - - // find the number of VCO clock cycles to wait initially before the first - // rising edge of the output clock - function integer counter_initial; - input tap_phase, m, n; - integer tap_phase, m, n, phase; - begin - if (tap_phase < 0) tap_phase = 0 - tap_phase; - // adding 0.5 for rounding correction (required in order to round - // to the nearest integer instead of truncating) - phase = ((tap_phase * m) / (360 * n)) + 0.5; - counter_initial = phase; - end - endfunction - - // find which VCO phase tap to align the rising edge of the output clock to - function integer counter_ph; - input tap_phase; - input m,n; - integer m,n, phase; - integer tap_phase; - begin - // adding 0.5 for rounding correction - phase = (tap_phase * m / n) + 0.5; - counter_ph = (phase % 360)/45; - end - endfunction - - // convert the given string to length 6 by padding with spaces - function [8*6:1] translate_string; - input mode; - reg [8*6:1] new_mode; - begin - if (mode == "bypass") - new_mode = "bypass"; - else if (mode == "even") - new_mode = " even"; - else if (mode == "odd") - new_mode = " odd"; - - translate_string = new_mode; - end - endfunction - - // convert string to integer with sign - function integer str2int; - input [8*16:1] s; - - reg [8*16:1] reg_s; - reg [8:1] digit; - reg [8:1] tmp; - integer m, magnitude; - integer sign; - - begin - sign = 1; - magnitude = 0; - reg_s = s; - for (m=1; m<=16; m=m+1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - // Accumulate ascii digits 0-9 only. - if ((tmp>=48) && (tmp<=57)) - magnitude = (magnitude * 10) + digit; - if (tmp == 45) - sign = -1; // Found a '-' character, i.e. number is negative. - end - str2int = sign*magnitude; - end - endfunction - - // this is for stratix lvds only - // convert phase delay to integer - function integer get_int_phase_shift; - input [8*16:1] s; - input i_phase_shift; - integer i_phase_shift; - - begin - if (i_phase_shift != 0) - begin - get_int_phase_shift = i_phase_shift; - end - else - begin - get_int_phase_shift = str2int(s); - end - end - endfunction - - // calculate the given phase shift (in ps) in terms of degrees - function integer get_phase_degree; - input phase_shift; - integer phase_shift, result; - begin - result = (phase_shift * 360) / inclk0_input_frequency; - // this is to round up the calculation result - if ( result > 0 ) - result = result + 1; - else if ( result < 0 ) - result = result - 1; - else - result = 0; - - // assign the rounded up result - get_phase_degree = result; - end - endfunction - - // convert uppercase parameter values to lowercase - // assumes that the maximum character length of a parameter is 18 - function [8*`WORD_LENGTH:1] alpha_tolower; - input [8*`WORD_LENGTH:1] given_string; - - reg [8*`WORD_LENGTH:1] return_string; - reg [8*`WORD_LENGTH:1] reg_string; - reg [8:1] tmp; - reg [8:1] conv_char; - integer byte_count; - begin - return_string = " "; // initialise strings to spaces - conv_char = " "; - reg_string = given_string; - for (byte_count = `WORD_LENGTH; byte_count >= 1; byte_count = byte_count - 1) - begin - tmp = reg_string[8*`WORD_LENGTH:(8*(`WORD_LENGTH-1)+1)]; - reg_string = reg_string << 8; - if ((tmp >= 65) && (tmp <= 90)) // ASCII number of 'A' is 65, 'Z' is 90 - begin - conv_char = tmp + 32; // 32 is the difference in the position of 'A' and 'a' in the ASCII char set - return_string = {return_string, conv_char}; - end - else - return_string = {return_string, tmp}; - end - - alpha_tolower = return_string; - end - endfunction - - initial - begin - // convert string parameter values from uppercase to lowercase, - // as expected in this model - l_operation_mode = alpha_tolower(operation_mode); - l_pll_type = alpha_tolower(pll_type); - l_qualify_conf_done = alpha_tolower(qualify_conf_done); - l_compensate_clock = alpha_tolower(compensate_clock); - l_scan_chain = alpha_tolower(scan_chain); - l_primary_clock = alpha_tolower(primary_clock); - l_gate_lock_signal = alpha_tolower(gate_lock_signal); - l_switch_over_on_lossclk = alpha_tolower(switch_over_on_lossclk); - l_switch_over_on_gated_lock = alpha_tolower(switch_over_on_gated_lock); - l_enable_switch_over_counter = alpha_tolower(enable_switch_over_counter); - l_feedback_source = alpha_tolower(feedback_source); - l_bandwidth_type = alpha_tolower(bandwidth_type); - l_simulation_type = alpha_tolower(simulation_type); - l_enable0_counter = alpha_tolower(enable0_counter); - l_enable1_counter = alpha_tolower(enable1_counter); - - if (m == 0) - begin - // set the limit of the divide_by value that can be returned by - // the following function. - max_d_value = 500; - - // scale down the multiply_by and divide_by values provided by the design - // before attempting to use them in the calculations below - find_simple_integer_fraction(clk0_multiply_by, clk0_divide_by, - max_d_value, i_clk0_mult_by, i_clk0_div_by); - find_simple_integer_fraction(clk1_multiply_by, clk1_divide_by, - max_d_value, i_clk1_mult_by, i_clk1_div_by); - find_simple_integer_fraction(clk2_multiply_by, clk2_divide_by, - max_d_value, i_clk2_mult_by, i_clk2_div_by); - find_simple_integer_fraction(clk3_multiply_by, clk3_divide_by, - max_d_value, i_clk3_mult_by, i_clk3_div_by); - find_simple_integer_fraction(clk4_multiply_by, clk4_divide_by, - max_d_value, i_clk4_mult_by, i_clk4_div_by); - find_simple_integer_fraction(clk5_multiply_by, clk5_divide_by, - max_d_value, i_clk5_mult_by, i_clk5_div_by); - find_simple_integer_fraction(extclk0_multiply_by, extclk0_divide_by, - max_d_value, i_extclk0_mult_by, i_extclk0_div_by); - find_simple_integer_fraction(extclk1_multiply_by, extclk1_divide_by, - max_d_value, i_extclk1_mult_by, i_extclk1_div_by); - find_simple_integer_fraction(extclk2_multiply_by, extclk2_divide_by, - max_d_value, i_extclk2_mult_by, i_extclk2_div_by); - find_simple_integer_fraction(extclk3_multiply_by, extclk3_divide_by, - max_d_value, i_extclk3_mult_by, i_extclk3_div_by); - - // convert user parameters to advanced - i_n = 1; - if (l_pll_type == "lvds") - i_m = clk0_multiply_by; - else - i_m = lcm (i_clk0_mult_by, i_clk1_mult_by, - i_clk2_mult_by, i_clk3_mult_by, - i_clk4_mult_by, i_clk5_mult_by, - i_extclk0_mult_by, - i_extclk1_mult_by, i_extclk2_mult_by, - i_extclk3_mult_by, inclk0_input_frequency); - i_m_time_delay = maxnegabs (str2int(clk0_time_delay), - str2int(clk1_time_delay), - str2int(clk2_time_delay), - str2int(clk3_time_delay), - str2int(clk4_time_delay), - str2int(clk5_time_delay), - str2int(extclk0_time_delay), - str2int(extclk1_time_delay), - str2int(extclk2_time_delay), - str2int(extclk3_time_delay)); - i_n_time_delay = mintimedelay(str2int(clk0_time_delay), - str2int(clk1_time_delay), - str2int(clk2_time_delay), - str2int(clk3_time_delay), - str2int(clk4_time_delay), - str2int(clk5_time_delay), - str2int(extclk0_time_delay), - str2int(extclk1_time_delay), - str2int(extclk2_time_delay), - str2int(extclk3_time_delay)); - if (l_pll_type == "lvds") - i_g0_high = counter_high(output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - else - i_g0_high = counter_high(output_counter_value(i_clk0_div_by, - i_clk0_mult_by, i_m, i_n), clk0_duty_cycle); - - - i_g1_high = counter_high(output_counter_value(i_clk1_div_by, - i_clk1_mult_by, i_m, i_n), clk1_duty_cycle); - i_g2_high = counter_high(output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - i_g3_high = counter_high(output_counter_value(i_clk3_div_by, - i_clk3_mult_by, i_m, i_n), clk3_duty_cycle); - if (l_pll_type == "lvds") - begin - i_l0_high = i_g0_high; - i_l1_high = i_g0_high; - end - else - begin - i_l0_high = counter_high(output_counter_value(i_clk4_div_by, - i_clk4_mult_by, i_m, i_n), clk4_duty_cycle); - i_l1_high = counter_high(output_counter_value(i_clk5_div_by, - i_clk5_mult_by, i_m, i_n), clk5_duty_cycle); - end - i_e0_high = counter_high(output_counter_value(i_extclk0_div_by, - i_extclk0_mult_by, i_m, i_n), extclk0_duty_cycle); - i_e1_high = counter_high(output_counter_value(i_extclk1_div_by, - i_extclk1_mult_by, i_m, i_n), extclk1_duty_cycle); - i_e2_high = counter_high(output_counter_value(i_extclk2_div_by, - i_extclk2_mult_by, i_m, i_n), extclk2_duty_cycle); - i_e3_high = counter_high(output_counter_value(i_extclk3_div_by, - i_extclk3_mult_by, i_m, i_n), extclk3_duty_cycle); - if (l_pll_type == "lvds") - i_g0_low = counter_low(output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - else - i_g0_low = counter_low(output_counter_value(i_clk0_div_by, - i_clk0_mult_by, i_m, i_n), clk0_duty_cycle); - i_g1_low = counter_low(output_counter_value(i_clk1_div_by, - i_clk1_mult_by, i_m, i_n), clk1_duty_cycle); - i_g2_low = counter_low(output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - i_g3_low = counter_low(output_counter_value(i_clk3_div_by, - i_clk3_mult_by, i_m, i_n), clk3_duty_cycle); - if (l_pll_type == "lvds") - begin - i_l0_low = i_g0_low; - i_l1_low = i_g0_low; - end - else - begin - i_l0_low = counter_low(output_counter_value(i_clk4_div_by, - i_clk4_mult_by, i_m, i_n), clk4_duty_cycle); - i_l1_low = counter_low(output_counter_value(i_clk5_div_by, - i_clk5_mult_by, i_m, i_n), clk5_duty_cycle); - end - i_e0_low = counter_low(output_counter_value(i_extclk0_div_by, - i_extclk0_mult_by, i_m, i_n), extclk0_duty_cycle); - i_e1_low = counter_low(output_counter_value(i_extclk1_div_by, - i_extclk1_mult_by, i_m, i_n), extclk1_duty_cycle); - i_e2_low = counter_low(output_counter_value(i_extclk2_div_by, - i_extclk2_mult_by, i_m, i_n), extclk2_duty_cycle); - i_e3_low = counter_low(output_counter_value(i_extclk3_div_by, - i_extclk3_mult_by, i_m, i_n), extclk3_duty_cycle); - - if (l_pll_type == "flvds") - begin - // Need to readjust phase shift values when the clock multiply value has been readjusted. - new_multiplier = clk0_multiply_by / i_clk0_mult_by; - i_clk0_phase_shift = (clk0_phase_shift_num * new_multiplier); - i_clk1_phase_shift = (clk1_phase_shift_num * new_multiplier); - i_clk2_phase_shift = (clk2_phase_shift_num * new_multiplier); - end - else - begin - i_clk0_phase_shift = get_int_phase_shift(clk0_phase_shift, clk0_phase_shift_num); - i_clk1_phase_shift = get_int_phase_shift(clk1_phase_shift, clk1_phase_shift_num); - i_clk2_phase_shift = get_int_phase_shift(clk2_phase_shift, clk2_phase_shift_num); - end - - max_neg_abs = maxnegabs(i_clk0_phase_shift, - i_clk1_phase_shift, - i_clk2_phase_shift, - str2int(clk3_phase_shift), - str2int(clk4_phase_shift), - str2int(clk5_phase_shift), - str2int(extclk0_phase_shift), - str2int(extclk1_phase_shift), - str2int(extclk2_phase_shift), - str2int(extclk3_phase_shift)); - if (l_pll_type == "lvds") - i_g0_initial = counter_initial(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - else - i_g0_initial = counter_initial(get_phase_degree(ph_adjust(i_clk0_phase_shift, max_neg_abs)), i_m, i_n); - - i_g1_initial = counter_initial(get_phase_degree(ph_adjust(i_clk1_phase_shift, max_neg_abs)), i_m, i_n); - i_g2_initial = counter_initial(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - i_g3_initial = counter_initial(get_phase_degree(ph_adjust(str2int(clk3_phase_shift), max_neg_abs)), i_m, i_n); - if (l_pll_type == "lvds") - begin - i_l0_initial = i_g0_initial; - i_l1_initial = i_g0_initial; - end - else - begin - i_l0_initial = counter_initial(get_phase_degree(ph_adjust(str2int(clk4_phase_shift), max_neg_abs)), i_m, i_n); - i_l1_initial = counter_initial(get_phase_degree(ph_adjust(str2int(clk5_phase_shift), max_neg_abs)), i_m, i_n); - end - i_e0_initial = counter_initial(get_phase_degree(ph_adjust(str2int(extclk0_phase_shift), max_neg_abs)), i_m, i_n); - i_e1_initial = counter_initial(get_phase_degree(ph_adjust(str2int(extclk1_phase_shift), max_neg_abs)), i_m, i_n); - i_e2_initial = counter_initial(get_phase_degree(ph_adjust(str2int(extclk2_phase_shift), max_neg_abs)), i_m, i_n); - i_e3_initial = counter_initial(get_phase_degree(ph_adjust(str2int(extclk3_phase_shift), max_neg_abs)), i_m, i_n); - if (l_pll_type == "lvds") - i_g0_mode = counter_mode(clk2_duty_cycle, output_counter_value(i_clk2_div_by, i_clk2_mult_by, i_m, i_n)); - else - i_g0_mode = counter_mode(clk0_duty_cycle, output_counter_value(i_clk0_div_by, i_clk0_mult_by, i_m, i_n)); - i_g1_mode = counter_mode(clk1_duty_cycle,output_counter_value(i_clk1_div_by, i_clk1_mult_by, i_m, i_n)); - i_g2_mode = counter_mode(clk2_duty_cycle,output_counter_value(i_clk2_div_by, i_clk2_mult_by, i_m, i_n)); - i_g3_mode = counter_mode(clk3_duty_cycle,output_counter_value(i_clk3_div_by, i_clk3_mult_by, i_m, i_n)); - if (l_pll_type == "lvds") - begin - i_l0_mode = "bypass"; - i_l1_mode = "bypass"; - end - else - begin - i_l0_mode = counter_mode(clk4_duty_cycle,output_counter_value(i_clk4_div_by, i_clk4_mult_by, i_m, i_n)); - i_l1_mode = counter_mode(clk5_duty_cycle,output_counter_value(i_clk5_div_by, i_clk5_mult_by, i_m, i_n)); - end - i_e0_mode = counter_mode(extclk0_duty_cycle,output_counter_value(i_extclk0_div_by, i_extclk0_mult_by, i_m, i_n)); - i_e1_mode = counter_mode(extclk1_duty_cycle,output_counter_value(i_extclk1_div_by, i_extclk1_mult_by, i_m, i_n)); - i_e2_mode = counter_mode(extclk2_duty_cycle,output_counter_value(i_extclk2_div_by, i_extclk2_mult_by, i_m, i_n)); - i_e3_mode = counter_mode(extclk3_duty_cycle,output_counter_value(i_extclk3_div_by, i_extclk3_mult_by, i_m, i_n)); - i_m_ph = counter_ph(get_phase_degree(max_neg_abs), i_m, i_n); - i_m_initial = counter_initial(get_phase_degree(max_neg_abs), i_m, i_n); - if (l_pll_type == "lvds") - i_g0_ph = counter_ph(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - else - i_g0_ph = counter_ph(get_phase_degree(ph_adjust(i_clk0_phase_shift, max_neg_abs)), i_m, i_n); - - i_g1_ph = counter_ph(get_phase_degree(ph_adjust(i_clk1_phase_shift, max_neg_abs)), i_m, i_n); - i_g2_ph = counter_ph(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - i_g3_ph = counter_ph(get_phase_degree(ph_adjust(str2int(clk3_phase_shift),max_neg_abs)), i_m, i_n); - if (l_pll_type == "lvds") - begin - i_l0_ph = i_g0_ph; - i_l1_ph = i_g0_ph; - end - else - begin - i_l0_ph = counter_ph(get_phase_degree(ph_adjust(str2int(clk4_phase_shift),max_neg_abs)), i_m, i_n); - i_l1_ph = counter_ph(get_phase_degree(ph_adjust(str2int(clk5_phase_shift),max_neg_abs)), i_m, i_n); - end - i_e0_ph = counter_ph(get_phase_degree(ph_adjust(str2int(extclk0_phase_shift),max_neg_abs)), i_m, i_n); - i_e1_ph = counter_ph(get_phase_degree(ph_adjust(str2int(extclk1_phase_shift),max_neg_abs)), i_m, i_n); - i_e2_ph = counter_ph(get_phase_degree(ph_adjust(str2int(extclk2_phase_shift),max_neg_abs)), i_m, i_n); - i_e3_ph = counter_ph(get_phase_degree(ph_adjust(str2int(extclk3_phase_shift),max_neg_abs)), i_m, i_n); - - if (l_pll_type == "lvds") - i_g0_time_delay = counter_time_delay ( str2int(clk2_time_delay), - i_m_time_delay, - i_n_time_delay); - else - i_g0_time_delay = counter_time_delay ( str2int(clk0_time_delay), - i_m_time_delay, - i_n_time_delay); - i_g1_time_delay = counter_time_delay ( str2int(clk1_time_delay), - i_m_time_delay, - i_n_time_delay); - i_g2_time_delay = counter_time_delay ( str2int(clk2_time_delay), - i_m_time_delay, - i_n_time_delay); - i_g3_time_delay = counter_time_delay ( str2int(clk3_time_delay), - i_m_time_delay, - i_n_time_delay); - if (l_pll_type == "lvds") - begin - i_l0_time_delay = i_g0_time_delay; - i_l1_time_delay = i_g0_time_delay; - end - else - begin - i_l0_time_delay = counter_time_delay ( str2int(clk4_time_delay), - i_m_time_delay, - i_n_time_delay); - i_l1_time_delay = counter_time_delay ( str2int(clk5_time_delay), - i_m_time_delay, - i_n_time_delay); - end - i_e0_time_delay = counter_time_delay ( str2int( extclk0_time_delay), - i_m_time_delay, - i_n_time_delay); - i_e1_time_delay = counter_time_delay ( str2int( extclk1_time_delay), - i_m_time_delay, - i_n_time_delay); - i_e2_time_delay = counter_time_delay ( str2int( extclk2_time_delay), - i_m_time_delay, - i_n_time_delay); - i_e3_time_delay = counter_time_delay ( str2int( extclk3_time_delay), - i_m_time_delay, - i_n_time_delay); - i_extclk3_counter = "e3" ; - i_extclk2_counter = "e2" ; - i_extclk1_counter = "e1" ; - i_extclk0_counter = "e0" ; - i_clk5_counter = "l1" ; - i_clk4_counter = "l0" ; - i_clk3_counter = "g3" ; - i_clk2_counter = "g2" ; - i_clk1_counter = "g1" ; - - if (l_pll_type == "lvds") - begin - l_enable0_counter = "l0"; - l_enable1_counter = "l1"; - i_clk0_counter = "l0" ; - end - else - i_clk0_counter = "g0" ; - - // in external feedback mode, need to adjust M value to take - // into consideration the external feedback counter value - if (l_operation_mode == "external_feedback") - begin - // if there is a negative phase shift, m_initial can only be 1 - if (max_neg_abs > 0) - i_m_initial = 1; - - if (l_feedback_source == "extclk0") - begin - if (i_e0_mode == "bypass") - output_count = 1; - else - output_count = i_e0_high + i_e0_low; - end - else if (l_feedback_source == "extclk1") - begin - if (i_e1_mode == "bypass") - output_count = 1; - else - output_count = i_e1_high + i_e1_low; - end - else if (l_feedback_source == "extclk2") - begin - if (i_e2_mode == "bypass") - output_count = 1; - else - output_count = i_e2_high + i_e2_low; - end - else if (l_feedback_source == "extclk3") - begin - if (i_e3_mode == "bypass") - output_count = 1; - else - output_count = i_e3_high + i_e3_low; - end - else // default to e0 - begin - if (i_e0_mode == "bypass") - output_count = 1; - else - output_count = i_e0_high + i_e0_low; - end - - if (i_m > output_count) - i_m = i_m / output_count; - else - begin - new_divisor = gcd(i_m, output_count); - i_m = i_m / new_divisor; - i_n = output_count / new_divisor; - end - end - - end - else - begin // m != 0 - - i_n = n; - i_m = m; - i_l0_high = l0_high; - i_l1_high = l1_high; - i_g0_high = g0_high; - i_g1_high = g1_high; - i_g2_high = g2_high; - i_g3_high = g3_high; - i_e0_high = e0_high; - i_e1_high = e1_high; - i_e2_high = e2_high; - i_e3_high = e3_high; - i_l0_low = l0_low; - i_l1_low = l1_low; - i_g0_low = g0_low; - i_g1_low = g1_low; - i_g2_low = g2_low; - i_g3_low = g3_low; - i_e0_low = e0_low; - i_e1_low = e1_low; - i_e2_low = e2_low; - i_e3_low = e3_low; - i_l0_initial = l0_initial; - i_l1_initial = l1_initial; - i_g0_initial = g0_initial; - i_g1_initial = g1_initial; - i_g2_initial = g2_initial; - i_g3_initial = g3_initial; - i_e0_initial = e0_initial; - i_e1_initial = e1_initial; - i_e2_initial = e2_initial; - i_e3_initial = e3_initial; - i_l0_mode = alpha_tolower(l0_mode); - i_l1_mode = alpha_tolower(l1_mode); - i_g0_mode = alpha_tolower(g0_mode); - i_g1_mode = alpha_tolower(g1_mode); - i_g2_mode = alpha_tolower(g2_mode); - i_g3_mode = alpha_tolower(g3_mode); - i_e0_mode = alpha_tolower(e0_mode); - i_e1_mode = alpha_tolower(e1_mode); - i_e2_mode = alpha_tolower(e2_mode); - i_e3_mode = alpha_tolower(e3_mode); - i_l0_ph = l0_ph; - i_l1_ph = l1_ph; - i_g0_ph = g0_ph; - i_g1_ph = g1_ph; - i_g2_ph = g2_ph; - i_g3_ph = g3_ph; - i_e0_ph = e0_ph; - i_e1_ph = e1_ph; - i_e2_ph = e2_ph; - i_e3_ph = e3_ph; - i_m_ph = m_ph; // default - i_m_initial = m_initial; - i_l0_time_delay = l0_time_delay; - i_l1_time_delay = l1_time_delay; - i_g0_time_delay = g0_time_delay; - i_g1_time_delay = g1_time_delay; - i_g2_time_delay = g2_time_delay; - i_g3_time_delay = g3_time_delay; - i_e0_time_delay = e0_time_delay; - i_e1_time_delay = e1_time_delay; - i_e2_time_delay = e2_time_delay; - i_e3_time_delay = e3_time_delay; - i_m_time_delay = m_time_delay; - i_n_time_delay = n_time_delay; - i_extclk3_counter = alpha_tolower(extclk3_counter); - i_extclk2_counter = alpha_tolower(extclk2_counter); - i_extclk1_counter = alpha_tolower(extclk1_counter); - i_extclk0_counter = alpha_tolower(extclk0_counter); - i_clk5_counter = alpha_tolower(clk5_counter); - i_clk4_counter = alpha_tolower(clk4_counter); - i_clk3_counter = alpha_tolower(clk3_counter); - i_clk2_counter = alpha_tolower(clk2_counter); - i_clk1_counter = alpha_tolower(clk1_counter); - i_clk0_counter = alpha_tolower(clk0_counter); - - end // user to advanced conversion - - // set the scan_chain length - if (l_scan_chain == "long") - scan_chain_length = EGPP_SCAN_CHAIN; - else if (l_scan_chain == "short") - scan_chain_length = GPP_SCAN_CHAIN; - - if (l_primary_clock == "inclk0") - begin - refclk_period = inclk0_input_frequency * i_n; - primary_clock_frequency = inclk0_input_frequency; - end - else if (l_primary_clock == "inclk1") - begin - refclk_period = inclk1_input_frequency * i_n; - primary_clock_frequency = inclk1_input_frequency; - end - - m_times_vco_period = refclk_period; - new_m_times_vco_period = refclk_period; - - fbclk_period = 0; - high_time = 0; - low_time = 0; - schedule_vco = 0; - schedule_offset = 1; - vco_out[7:0] = 8'b0; - fbclk_last_value = 0; - offset = 0; - temp_offset = 0; - got_first_refclk = 0; - got_first_fbclk = 0; - fbclk_time = 0; - first_fbclk_time = 0; - refclk_time = 0; - first_schedule = 1; - sched_time = 0; - vco_val = 0; - l0_got_first_rising_edge = 0; - l1_got_first_rising_edge = 0; - vco_l0_last_value = 0; - l0_count = 1; - l1_count = 1; - l0_tmp = 0; - l1_tmp = 0; - gate_count = 0; - gate_out = 0; - initial_delay = 0; - fbk_phase = 0; - for (i = 0; i <= 7; i = i + 1) - begin - phase_shift[i] = 0; - last_phase_shift[i] = 0; - end - fbk_delay = 0; - inclk_n = 0; - cycle_to_adjust = 0; - m_delay = 0; - vco_l0 = 0; - vco_l1 = 0; - total_pull_back = 0; - pull_back_M = 0; - pull_back_ext_cntr = 0; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - ena_ipd_last_value = 0; - inclk_out_of_range = 0; - scandataout_tmp = 0; - schedule_vco_last_value = 0; - - // set initial values for counter parameters - m_initial_val = i_m_initial; - m_val = i_m; - m_time_delay_val = i_m_time_delay; - n_val = i_n; - n_time_delay_val = i_n_time_delay; - m_ph_val = i_m_ph; - - m2_val = m2; - n2_val = n2; - - if (m_val == 1) - m_mode_val = "bypass"; - if (m2_val == 1) - m2_mode_val = "bypass"; - if (n_val == 1) - n_mode_val = "bypass"; - if (n2_val == 1) - n2_mode_val = "bypass"; - - if (skip_vco == "on") - begin - m_val = 1; - m_initial_val = 1; - m_time_delay_val = 0; - m_ph_val = 0; - end - - l0_high_val = i_l0_high; - l0_low_val = i_l0_low; - l0_initial_val = i_l0_initial; - l0_mode_val = i_l0_mode; - l0_time_delay_val = i_l0_time_delay; - - l1_high_val = i_l1_high; - l1_low_val = i_l1_low; - l1_initial_val = i_l1_initial; - l1_mode_val = i_l1_mode; - l1_time_delay_val = i_l1_time_delay; - - g0_high_val = i_g0_high; - g0_low_val = i_g0_low; - g0_initial_val = i_g0_initial; - g0_mode_val = i_g0_mode; - g0_time_delay_val = i_g0_time_delay; - - g1_high_val = i_g1_high; - g1_low_val = i_g1_low; - g1_initial_val = i_g1_initial; - g1_mode_val = i_g1_mode; - g1_time_delay_val = i_g1_time_delay; - - g2_high_val = i_g2_high; - g2_low_val = i_g2_low; - g2_initial_val = i_g2_initial; - g2_mode_val = i_g2_mode; - g2_time_delay_val = i_g2_time_delay; - - g3_high_val = i_g3_high; - g3_low_val = i_g3_low; - g3_initial_val = i_g3_initial; - g3_mode_val = i_g3_mode; - g3_time_delay_val = i_g3_time_delay; - - e0_high_val = i_e0_high; - e0_low_val = i_e0_low; - e0_initial_val = i_e0_initial; - e0_mode_val = i_e0_mode; - e0_time_delay_val = i_e0_time_delay; - - e1_high_val = i_e1_high; - e1_low_val = i_e1_low; - e1_initial_val = i_e1_initial; - e1_mode_val = i_e1_mode; - e1_time_delay_val = i_e1_time_delay; - - e2_high_val = i_e2_high; - e2_low_val = i_e2_low; - e2_initial_val = i_e2_initial; - e2_mode_val = i_e2_mode; - e2_time_delay_val = i_e2_time_delay; - - e3_high_val = i_e3_high; - e3_low_val = i_e3_low; - e3_initial_val = i_e3_initial; - e3_mode_val = i_e3_mode; - e3_time_delay_val = i_e3_time_delay; - - i = 0; - j = 0; - inclk_last_value = 0; - - ext_fbk_cntr_ph = 0; - ext_fbk_cntr_initial = 1; - - // initialize clkswitch variables - - clk0_is_bad = 0; - clk1_is_bad = 0; - inclk0_last_value = 0; - inclk1_last_value = 0; - other_clock_value = 0; - other_clock_last_value = 0; - primary_clk_is_bad = 0; - current_clk_is_bad = 0; - external_switch = 0; - current_clock = l_primary_clock; - if (l_primary_clock == "inclk0") - active_clock = 0; - else - active_clock = 1; - clkloss_tmp = 0; - got_curr_clk_falling_edge_after_clkswitch = 0; - clk0_count = 0; - clk1_count = 0; - switch_over_count = 0; - active_clk_was_switched = 0; - - // initialize quiet_time - quiet_time = slowest_clk ( l0_high_val+l0_low_val, - l1_high_val+l1_low_val, - g0_high_val+g0_low_val, - g1_high_val+g1_low_val, - g2_high_val+g2_low_val, - g3_high_val+g3_low_val, - e0_high_val+e0_low_val, - e1_high_val+e1_low_val, - e2_high_val+e2_low_val, - e3_high_val+e3_low_val, - l_scan_chain, - refclk_period, m_val); - pll_in_quiet_period = 0; - start_quiet_time = 0; - quiet_period_violation = 0; - reconfig_err = 0; - scanclr_violation = 0; - scanclr_clk_violation = 0; - got_first_scanclk_after_scanclr_inactive_edge = 0; - error = 0; - scanaclr_rising_time = 0; - scanaclr_falling_time = 0; - - // VCO feedback loop settings for external feedback mode - // first find which ext counter is used for feedback - - if (l_operation_mode == "external_feedback") - begin - if (l_feedback_source == "extclk0") - begin - if (i_extclk0_counter == "e0") - ext_fbk_cntr = "e0"; - else if (i_extclk0_counter == "e1") - ext_fbk_cntr = "e1"; - else if (i_extclk0_counter == "e2") - ext_fbk_cntr = "e2"; - else if (i_extclk0_counter == "e3") - ext_fbk_cntr = "e3"; - else ext_fbk_cntr = "e0"; - end - else if (l_feedback_source == "extclk1") - begin - if (i_extclk1_counter == "e0") - ext_fbk_cntr = "e0"; - else if (i_extclk1_counter == "e1") - ext_fbk_cntr = "e1"; - else if (i_extclk1_counter == "e2") - ext_fbk_cntr = "e2"; - else if (i_extclk1_counter == "e3") - ext_fbk_cntr = "e3"; - else ext_fbk_cntr = "e0"; - end - else if (l_feedback_source == "extclk2") - begin - if (i_extclk2_counter == "e0") - ext_fbk_cntr = "e0"; - else if (i_extclk2_counter == "e1") - ext_fbk_cntr = "e1"; - else if (i_extclk2_counter == "e2") - ext_fbk_cntr = "e2"; - else if (i_extclk2_counter == "e3") - ext_fbk_cntr = "e3"; - else ext_fbk_cntr = "e0"; - end - else if (l_feedback_source == "extclk3") - begin - if (i_extclk3_counter == "e0") - ext_fbk_cntr = "e0"; - else if (i_extclk3_counter == "e1") - ext_fbk_cntr = "e1"; - else if (i_extclk3_counter == "e2") - ext_fbk_cntr = "e2"; - else if (i_extclk3_counter == "e3") - ext_fbk_cntr = "e3"; - else ext_fbk_cntr = "e0"; - end - - // now save this counter's parameters - if (ext_fbk_cntr == "e0") - begin - ext_fbk_cntr_high = e0_high_val; - ext_fbk_cntr_low = e0_low_val; - ext_fbk_cntr_ph = i_e0_ph; - ext_fbk_cntr_initial = i_e0_initial; - ext_fbk_cntr_delay = e0_time_delay_val; - ext_fbk_cntr_mode = e0_mode_val; - end - else if (ext_fbk_cntr == "e1") - begin - ext_fbk_cntr_high = e1_high_val; - ext_fbk_cntr_low = e1_low_val; - ext_fbk_cntr_ph = i_e1_ph; - ext_fbk_cntr_initial = i_e1_initial; - ext_fbk_cntr_delay = e1_time_delay_val; - ext_fbk_cntr_mode = e1_mode_val; - end - else if (ext_fbk_cntr == "e2") - begin - ext_fbk_cntr_high = e2_high_val; - ext_fbk_cntr_low = e2_low_val; - ext_fbk_cntr_ph = i_e2_ph; - ext_fbk_cntr_initial = i_e2_initial; - ext_fbk_cntr_delay = e2_time_delay_val; - ext_fbk_cntr_mode = e2_mode_val; - end - else if (ext_fbk_cntr == "e3") - begin - ext_fbk_cntr_high = e3_high_val; - ext_fbk_cntr_low = e3_low_val; - ext_fbk_cntr_ph = i_e3_ph; - ext_fbk_cntr_initial = i_e3_initial; - ext_fbk_cntr_delay = e3_time_delay_val; - ext_fbk_cntr_mode = e3_mode_val; - end - - if (ext_fbk_cntr_mode == "bypass") - ext_fbk_cntr_modulus = 1; - else - ext_fbk_cntr_modulus = ext_fbk_cntr_high + ext_fbk_cntr_low; - end - - l_index = 1; - stop_vco = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - else - locked_tmp = 0; - pll_is_locked = 0; - pll_about_to_lock = 0; - - no_warn = 0; - m_val_tmp = m_val; - n_val_tmp = n_val; - end - - assign inclk_m = l_operation_mode == "external_feedback" ? (l_feedback_source == "extclk0" ? extclk0_tmp : - l_feedback_source == "extclk1" ? extclk1_tmp : - l_feedback_source == "extclk2" ? extclk2_tmp : - l_feedback_source == "extclk3" ? extclk3_tmp : 'b0) : - vco_out[m_ph_val]; - - stx_m_cntr m1 (.clk(inclk_m), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(fbclk), - .initial_value(m_initial_val), - .modulus(m_val), - .time_delay(m_delay)); - - always @(clkswitch_ipd) - begin - if (clkswitch_ipd == 1'b1) - external_switch = 1; - clkloss_tmp <= clkswitch_ipd; - end - - always @(inclk0_ipd or inclk1_ipd) - begin - // save the inclk event value - if (inclk0_ipd !== inclk0_last_value) - begin - if (current_clock !== "inclk0") - other_clock_value = inclk0_ipd; - end - if (inclk1_ipd !== inclk1_last_value) - begin - if (current_clock !== "inclk1") - other_clock_value = inclk1_ipd; - end - - // check if either input clk is bad - if (inclk0_ipd === 1'b1 && inclk0_ipd !== inclk0_last_value) - begin - clk0_count = clk0_count + 1; - clk0_is_bad = 0; - if (current_clock == "inclk0") - current_clk_is_bad = 0; - clk1_count = 0; - if (clk0_count > 2) - begin - // no event on other clk for 2 cycles - clk1_is_bad = 1; - if (current_clock == "inclk1") - current_clk_is_bad = 1; - end - end - if (inclk1_ipd === 1'b1 && inclk1_ipd !== inclk1_last_value) - begin - clk1_count = clk1_count + 1; - clk1_is_bad = 0; - if (current_clock == "inclk1") - current_clk_is_bad = 0; - clk0_count = 0; - if (clk1_count > 2) - begin - // no event on other clk for 2 cycles - clk0_is_bad = 1; - if (current_clock == "inclk0") - current_clk_is_bad = 1; - end - end - - // check if the bad clk is the primary clock - if (((l_primary_clock == "inclk0") && (clk0_is_bad == 1'b1)) || ((l_primary_clock == "inclk1") && (clk1_is_bad == 1'b1))) - primary_clk_is_bad = 1; - else - primary_clk_is_bad = 0; - - // actual switching - if ((inclk0_ipd !== inclk0_last_value) && (current_clock == "inclk0")) - begin - if (external_switch == 1'b1) - begin - if (!got_curr_clk_falling_edge_after_clkswitch) - begin - if (inclk0_ipd === 1'b0) - got_curr_clk_falling_edge_after_clkswitch = 1; - inclk_n = inclk0_ipd; - end - end - else inclk_n = inclk0_ipd; - end - if ((inclk1_ipd !== inclk1_last_value) && (current_clock == "inclk1")) - begin - if (external_switch == 1'b1) - begin - if (!got_curr_clk_falling_edge_after_clkswitch) - begin - if (inclk1_ipd === 1'b0) - got_curr_clk_falling_edge_after_clkswitch = 1; - inclk_n = inclk1_ipd; - end - end - else inclk_n = inclk1_ipd; - end - if ((other_clock_value == 1'b1) && (other_clock_value != other_clock_last_value) && (l_switch_over_on_lossclk == "on") && (l_enable_switch_over_counter == "on") && primary_clk_is_bad) - switch_over_count = switch_over_count + 1; - if ((other_clock_value == 1'b0) && (other_clock_value != other_clock_last_value)) - begin - if ((external_switch && (got_curr_clk_falling_edge_after_clkswitch || current_clk_is_bad)) || (l_switch_over_on_lossclk == "on" && primary_clk_is_bad && ((l_enable_switch_over_counter == "off" || switch_over_count == switch_over_counter)))) - begin - got_curr_clk_falling_edge_after_clkswitch = 0; - if (current_clock == "inclk0") - begin - current_clock = "inclk1"; - end - else - begin - current_clock = "inclk0"; - end - active_clock = ~active_clock; - active_clk_was_switched = 1; - switch_over_count = 0; - external_switch = 0; - current_clk_is_bad = 0; - end - end - - if (l_switch_over_on_lossclk == "on" && (clkswitch_ipd != 1'b1)) - begin - if (primary_clk_is_bad) - clkloss_tmp = 1; - else - clkloss_tmp = 0; - end - - inclk0_last_value = inclk0_ipd; - inclk1_last_value = inclk1_ipd; - other_clock_last_value = other_clock_value; - - end - - and (clkbad[0], clk0_is_bad, 1'b1); - and (clkbad[1], clk1_is_bad, 1'b1); - and (activeclock, active_clock, 1'b1); - and (clkloss, clkloss_tmp, 1'b1); - - stx_n_cntr n1 ( .clk(inclk_n), - .reset(areset_ipd), - .cout(refclk), - .modulus(n_val), - .time_delay(n_time_delay_val)); - - stx_scale_cntr l0 ( .clk(vco_out[i_l0_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(l0_clk), - .high(l0_high_val), - .low(l0_low_val), - .initial_value(l0_initial_val), - .mode(l0_mode_val), - .time_delay(l0_time_delay_val), - .ph_tap(i_l0_ph)); - - stx_scale_cntr l1 ( .clk(vco_out[i_l1_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(l1_clk), - .high(l1_high_val), - .low(l1_low_val), - .initial_value(l1_initial_val), - .mode(l1_mode_val), - .time_delay(l1_time_delay_val), - .ph_tap(i_l1_ph)); - - stx_scale_cntr g0 ( .clk(vco_out[i_g0_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(g0_clk), - .high(g0_high_val), - .low(g0_low_val), - .initial_value(g0_initial_val), - .mode(g0_mode_val), - .time_delay(g0_time_delay_val), - .ph_tap(i_g0_ph)); - - MF_pll_reg lvds_dffa ( .d(comparator_ipd), - .clrn(1'b1), - .prn(1'b1), - .ena(1'b1), - .clk(g0_clk), - .q(dffa_out)); - - MF_pll_reg lvds_dffb ( .d(dffa_out), - .clrn(1'b1), - .prn(1'b1), - .ena(1'b1), - .clk(lvds_dffb_clk), - .q(dffb_out)); - - assign lvds_dffb_clk = (l_enable0_counter == "l0") ? l0_clk : (l_enable0_counter == "l1") ? l1_clk : 1'b0; - - MF_pll_reg lvds_dffc ( .d(dffb_out), - .clrn(1'b1), - .prn(1'b1), - .ena(1'b1), - .clk(lvds_dffc_clk), - .q(dffc_out)); - - assign lvds_dffc_clk = (l_enable0_counter == "l0") ? l0_clk : (l_enable0_counter == "l1") ? l1_clk : 1'b0; - - assign nce_temp = ~dffc_out && dffb_out; - - MF_pll_reg lvds_dffd ( .d(nce_temp), - .clrn(1'b1), - .prn(1'b1), - .ena(1'b1), - .clk(~lvds_dffd_clk), - .q(dffd_out)); - - assign lvds_dffd_clk = (l_enable0_counter == "l0") ? l0_clk : (l_enable0_counter == "l1") ? l1_clk : 1'b0; - - assign nce_l0 = (l_enable0_counter == "l0") ? dffd_out : 'b0; - assign nce_l1 = (l_enable0_counter == "l1") ? dffd_out : 'b0; - - stx_scale_cntr g1 ( .clk(vco_out[i_g1_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(g1_clk), - .high(g1_high_val), - .low(g1_low_val), - .initial_value(g1_initial_val), - .mode(g1_mode_val), - .time_delay(g1_time_delay_val), - .ph_tap(i_g1_ph)); - - stx_scale_cntr g2 ( .clk(vco_out[i_g2_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(g2_clk), - .high(g2_high_val), - .low(g2_low_val), - .initial_value(g2_initial_val), - .mode(g2_mode_val), - .time_delay(g2_time_delay_val), - .ph_tap(i_g2_ph)); - - stx_scale_cntr g3 ( .clk(vco_out[i_g3_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(g3_clk), - .high(g3_high_val), - .low(g3_low_val), - .initial_value(g3_initial_val), - .mode(g3_mode_val), - .time_delay(g3_time_delay_val), - .ph_tap(i_g3_ph)); - assign cntr_e0_initial = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e0") ? 1 : e0_initial_val; - assign cntr_e0_delay = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e0") ? ext_fbk_delay : e0_time_delay_val; - - stx_scale_cntr e0 ( .clk(vco_out[i_e0_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(e0_clk), - .high(e0_high_val), - .low(e0_low_val), - .initial_value(cntr_e0_initial), - .mode(e0_mode_val), - .time_delay(cntr_e0_delay), - .ph_tap(i_e0_ph)); - - assign cntr_e1_initial = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e1") ? 1 : e1_initial_val; - assign cntr_e1_delay = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e1") ? ext_fbk_delay : e1_time_delay_val; - stx_scale_cntr e1 ( .clk(vco_out[i_e1_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(e1_clk), - .high(e1_high_val), - .low(e1_low_val), - .initial_value(cntr_e1_initial), - .mode(e1_mode_val), - .time_delay(cntr_e1_delay), - .ph_tap(i_e1_ph)); - - assign cntr_e2_initial = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e2") ? 1 : e2_initial_val; - assign cntr_e2_delay = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e2") ? ext_fbk_delay : e2_time_delay_val; - stx_scale_cntr e2 ( .clk(vco_out[i_e2_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(e2_clk), - .high(e2_high_val), - .low(e2_low_val), - .initial_value(cntr_e2_initial), - .mode(e2_mode_val), - .time_delay(cntr_e2_delay), - .ph_tap(i_e2_ph)); - - assign cntr_e3_initial = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e3") ? 1 : e3_initial_val; - assign cntr_e3_delay = (l_operation_mode == "external_feedback" && ext_fbk_cntr == "e3") ? ext_fbk_delay : e3_time_delay_val; - stx_scale_cntr e3 ( .clk(vco_out[i_e3_ph]), - .reset(areset_ipd || (!ena_ipd) || stop_vco), - .cout(e3_clk), - .high(e3_high_val), - .low(e3_low_val), - .initial_value(cntr_e3_initial), - .mode(e3_mode_val), - .time_delay(cntr_e3_delay), - .ph_tap(i_e3_ph)); - - - always @(vco_out[i_l0_ph] or posedge areset_ipd or negedge ena_ipd or stop_vco) - begin - if ((areset_ipd == 1'b1) || (ena_ipd == 1'b0) || (stop_vco == 1'b1)) - begin - l0_count = 1; - l0_got_first_rising_edge = 0; - end - else begin - if (nce_l0 == 1'b0) - begin - if (l0_got_first_rising_edge == 1'b0) - begin - if (vco_out[i_l0_ph] == 1'b1 && vco_out[i_l0_ph] != vco_l0_last_value) - l0_got_first_rising_edge = 1; - end - else if (vco_out[i_l0_ph] != vco_l0_last_value) - begin - l0_count = l0_count + 1; - if (l0_count == (l0_high_val + l0_low_val) * 2) - l0_count = 1; - end - end - if (vco_out[i_l0_ph] == 1'b0 && vco_out[i_l0_ph] != vco_l0_last_value) - begin - if (l0_count == 1) - begin - l0_tmp = 1; - l0_got_first_rising_edge = 0; - end - else l0_tmp = 0; - end - end - vco_l0_last_value = vco_out[i_l0_ph]; - end - - always @(vco_out[i_l1_ph] or posedge areset_ipd or negedge ena_ipd or stop_vco) - begin - if (areset_ipd == 1'b1 || ena_ipd == 1'b0 || stop_vco == 1'b1) - begin - l1_count = 1; - l1_got_first_rising_edge = 0; - end - else begin - if (nce_l1 == 1'b0) - begin - if (l1_got_first_rising_edge == 1'b0) - begin - if (vco_out[i_l1_ph] == 1'b1 && vco_out[i_l1_ph] != vco_l1_last_value) - l1_got_first_rising_edge = 1; - end - else if (vco_out[i_l1_ph] != vco_l1_last_value) - begin - l1_count = l1_count + 1; - if (l1_count == (l1_high_val + l1_low_val) * 2) - l1_count = 1; - end - end - if (vco_out[i_l1_ph] == 1'b0 && vco_out[i_l1_ph] != vco_l1_last_value) - begin - if (l1_count == 1) - begin - l1_tmp = 1; - l1_got_first_rising_edge = 0; - end - else l1_tmp = 0; - end - end - vco_l1_last_value = vco_out[i_l1_ph]; - end - - assign enable0_tmp = (l_enable0_counter == "l0") ? l0_tmp : l1_tmp; - assign enable1_tmp = (l_enable1_counter == "l0") ? l0_tmp : l1_tmp; - - always @ (inclk_n or ena_ipd or areset_ipd) - begin - if (areset_ipd == 'b1) - begin - gate_count = 0; - gate_out = 0; - end - else if (inclk_n == 'b1 && inclk_last_value != inclk_n) - if (ena_ipd == 'b1) - begin - gate_count = gate_count + 1; - if (gate_count == gate_lock_counter) - gate_out = 1; - end - inclk_last_value = inclk_n; - end - - assign locked = (l_gate_lock_signal == "yes") ? gate_out && locked_tmp : locked_tmp; - - always @ (scanclk_ipd or scanaclr_ipd) - begin - if (scanaclr_ipd === 1'b1 && scanaclr_last_value === 1'b0) - scanaclr_rising_time = $time; - else if (scanaclr_ipd === 1'b0 && scanaclr_last_value === 1'b1) - begin - scanaclr_falling_time = $time; - // check for scanaclr active pulse width - if ($time - scanaclr_rising_time < TRST) - begin - scanclr_violation = 1; - $display ("Warning : Detected SCANACLR ACTIVE pulse width violation. Required is 5000 ps, actual is %0t. Reconfiguration may not work.", $time - scanaclr_rising_time); - $display ("Time: %0t Instance: %m", $time); - end - else begin - scanclr_violation = 0; - for (i = 0; i <= scan_chain_length; i = i + 1) - scan_data[i] = 0; - end - got_first_scanclk_after_scanclr_inactive_edge = 0; - end - else if ((scanclk_ipd === 'b1 && scanclk_last_value !== scanclk_ipd) && (got_first_scanclk_after_scanclr_inactive_edge === 1'b0) && ($time - scanaclr_falling_time < TRSTCLK)) - begin - scanclr_clk_violation = 1; - $display ("Warning : Detected SCANACLR INACTIVE time violation before rising edge of SCANCLK. Required is 5000 ps, actual is %0t. Reconfiguration may not work.", $time - scanaclr_falling_time); - $display ("Time: %0t Instance: %m", $time); - got_first_scanclk_after_scanclr_inactive_edge = 1; - end - else if (scanclk_ipd == 'b1 && scanclk_last_value != scanclk_ipd && scanaclr_ipd === 1'b0) - begin - if (pll_in_quiet_period && ($time - start_quiet_time < quiet_time)) - begin - $display("Time: %0t", $time, " Warning : Detected transition on SCANCLK during quiet time. PLL may not function correctly."); - quiet_period_violation = 1; - end - else begin - pll_in_quiet_period = 0; - for (j = scan_chain_length-1; j >= 1; j = j - 1) - begin - scan_data[j] = scan_data[j - 1]; - end - scan_data[0] = scandata_ipd; - end - if (got_first_scanclk_after_scanclr_inactive_edge === 1'b0) - begin - got_first_scanclk_after_scanclr_inactive_edge = 1; - scanclr_clk_violation = 0; - end - end - else if (scanclk_ipd === 1'b0 && scanclk_last_value !== scanclk_ipd && scanaclr_ipd === 1'b0) - begin - if (pll_in_quiet_period && ($time - start_quiet_time < quiet_time)) - begin - $display("Time: %0t", $time, " Warning : Detected transition on SCANCLK during quiet time. PLL may not function correctly."); - quiet_period_violation = 1; - end - else if (scan_data[scan_chain_length-1] == 1'b1) - begin - pll_in_quiet_period = 1; - quiet_period_violation = 0; - reconfig_err = 0; - start_quiet_time = $time; - // initiate transfer - scandataout_tmp <= 1'b1; - quiet_time = slowest_clk ( l0_high_val+l0_low_val, - l1_high_val+l1_low_val, - g0_high_val+g0_low_val, - g1_high_val+g1_low_val, - g2_high_val+g2_low_val, - g3_high_val+g3_low_val, - e0_high_val+e0_low_val, - e1_high_val+e1_low_val, - e2_high_val+e2_low_val, - e3_high_val+e3_low_val, - l_scan_chain, - refclk_period, m_val); - transfer <= 1; - end - end - scanclk_last_value = scanclk_ipd; - scanaclr_last_value = scanaclr_ipd; - end - - always @(scandataout_tmp) - begin - if (scandataout_tmp == 1'b1) - scandataout_tmp <= #(quiet_time) 1'b0; - end - - always @(posedge transfer) - begin - if (transfer == 1'b1) - begin - $display("NOTE : Reconfiguring PLL"); - $display ("Time: %0t Instance: %m", $time); - if (l_scan_chain == "long") - begin - // cntr e3 - error = 0; - if (scan_data[273] == 1'b1) - begin - e3_mode_val = "bypass"; - if (scan_data[283] == 1'b1) - begin - e3_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the E3 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[283] == 1'b1) - e3_mode_val = "odd"; - else - e3_mode_val = "even"; - // before reading delay bits, clear e3_time_delay_val - e3_time_delay_val = 32'b0; - e3_time_delay_val = scan_data[287:284]; - e3_time_delay_val = e3_time_delay_val * 250; - if (e3_time_delay_val > 3000) - e3_time_delay_val = 3000; - e3_high_val[8:0] <= scan_data[272:264]; - e3_low_val[8:0] <= scan_data[282:274]; - if (scan_data[272:264] == 9'b000000000) - e3_high_val[9:0] <= 10'b1000000000; - if (scan_data[282:274] == 9'b000000000) - e3_low_val[9:0] <= 10'b1000000000; - - if (ext_fbk_cntr == "e3") - begin - ext_fbk_cntr_high = e3_high_val; - ext_fbk_cntr_low = e3_low_val; - ext_fbk_cntr_delay = e3_time_delay_val; - ext_fbk_cntr_mode = e3_mode_val; - end - - // cntr e2 - if (scan_data[249] == 1'b1) - begin - e2_mode_val = "bypass"; - if (scan_data[259] == 1'b1) - begin - e2_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the E2 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[259] == 1'b1) - e2_mode_val = "odd"; - else - e2_mode_val = "even"; - e2_time_delay_val = 32'b0; - e2_time_delay_val = scan_data[263:260]; - e2_time_delay_val = e2_time_delay_val * 250; - if (e2_time_delay_val > 3000) - e2_time_delay_val = 3000; - e2_high_val[8:0] <= scan_data[248:240]; - e2_low_val[8:0] <= scan_data[258:250]; - if (scan_data[248:240] == 9'b000000000) - e2_high_val[9:0] <= 10'b1000000000; - if (scan_data[258:250] == 9'b000000000) - e2_low_val[9:0] <= 10'b1000000000; - - if (ext_fbk_cntr == "e2") - begin - ext_fbk_cntr_high = e2_high_val; - ext_fbk_cntr_low = e2_low_val; - ext_fbk_cntr_delay = e2_time_delay_val; - ext_fbk_cntr_mode = e2_mode_val; - end - - // cntr e1 - if (scan_data[225] == 1'b1) - begin - e1_mode_val = "bypass"; - if (scan_data[235] == 1'b1) - begin - e1_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the E1 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[235] == 1'b1) - e1_mode_val = "odd"; - else - e1_mode_val = "even"; - e1_time_delay_val = 32'b0; - e1_time_delay_val = scan_data[239:236]; - e1_time_delay_val = e1_time_delay_val * 250; - if (e1_time_delay_val > 3000) - e1_time_delay_val = 3000; - e1_high_val[8:0] <= scan_data[224:216]; - e1_low_val[8:0] <= scan_data[234:226]; - if (scan_data[224:216] == 9'b000000000) - e1_high_val[9:0] <= 10'b1000000000; - if (scan_data[234:226] == 9'b000000000) - e1_low_val[9:0] <= 10'b1000000000; - - if (ext_fbk_cntr == "e1") - begin - ext_fbk_cntr_high = e1_high_val; - ext_fbk_cntr_low = e1_low_val; - ext_fbk_cntr_delay = e1_time_delay_val; - ext_fbk_cntr_mode = e1_mode_val; - end - - // cntr e0 - if (scan_data[201] == 1'b1) - begin - e0_mode_val = "bypass"; - if (scan_data[211] == 1'b1) - begin - e0_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the E0 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[211] == 1'b1) - e0_mode_val = "odd"; - else - e0_mode_val = "even"; - e0_time_delay_val = 32'b0; - e0_time_delay_val = scan_data[215:212]; - e0_time_delay_val = e0_time_delay_val * 250; - if (e0_time_delay_val > 3000) - e0_time_delay_val = 3000; - e0_high_val[8:0] <= scan_data[200:192]; - e0_low_val[8:0] <= scan_data[210:202]; - if (scan_data[200:192] == 9'b000000000) - e0_high_val[9:0] <= 10'b1000000000; - if (scan_data[210:202] == 9'b000000000) - e0_low_val[9:0] <= 10'b1000000000; - - if (ext_fbk_cntr == "e0") - begin - ext_fbk_cntr_high = e0_high_val; - ext_fbk_cntr_low = e0_low_val; - ext_fbk_cntr_delay = e0_time_delay_val; - ext_fbk_cntr_mode = e0_mode_val; - end - end - - // cntr l1 - if (scan_data[177] == 1'b1) - begin - l1_mode_val = "bypass"; - if (scan_data[187] == 1'b1) - begin - l1_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the L1 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[187] == 1'b1) - l1_mode_val = "odd"; - else - l1_mode_val = "even"; - l1_time_delay_val = 32'b0; - l1_time_delay_val = scan_data[191:188]; - l1_time_delay_val = l1_time_delay_val * 250; - if (l1_time_delay_val > 3000) - l1_time_delay_val = 3000; - l1_high_val[8:0] <= scan_data[176:168]; - l1_low_val[8:0] <= scan_data[186:178]; - if (scan_data[176:168] == 9'b000000000) - l1_high_val[9:0] <= 10'b1000000000; - if (scan_data[186:178] == 9'b000000000) - l1_low_val[9:0] <= 10'b1000000000; - - // cntr l0 - if (scan_data[153] == 1'b1) - begin - l0_mode_val = "bypass"; - if (scan_data[163] == 1'b1) - begin - l0_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the L0 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[163] == 1'b1) - l0_mode_val = "odd"; - else - l0_mode_val = "even"; - l0_time_delay_val = 32'b0; - l0_time_delay_val = scan_data[167:164]; - l0_time_delay_val = l0_time_delay_val * 250; - if (l0_time_delay_val > 3000) - l0_time_delay_val = 3000; - l0_high_val[8:0] <= scan_data[152:144]; - l0_low_val[8:0] <= scan_data[162:154]; - if (scan_data[152:144] == 9'b000000000) - l0_high_val[9:0] <= 10'b1000000000; - if (scan_data[162:154] == 9'b000000000) - l0_low_val[9:0] <= 10'b1000000000; - - // cntr g3 - if (scan_data[129] == 1'b1) - begin - g3_mode_val = "bypass"; - if (scan_data[139] == 1'b1) - begin - g3_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the G3 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[139] == 1'b1) - g3_mode_val = "odd"; - else - g3_mode_val = "even"; - g3_time_delay_val = 32'b0; - g3_time_delay_val = scan_data[143:140]; - g3_time_delay_val = g3_time_delay_val * 250; - if (g3_time_delay_val > 3000) - g3_time_delay_val = 3000; - g3_high_val[8:0] <= scan_data[128:120]; - g3_low_val[8:0] <= scan_data[138:130]; - if (scan_data[128:120] == 9'b000000000) - g3_high_val[9:0] <= 10'b1000000000; - if (scan_data[138:130] == 9'b000000000) - g3_low_val[9:0] <= 10'b1000000000; - - // cntr g2 - if (scan_data[105] == 1'b1) - begin - g2_mode_val = "bypass"; - if (scan_data[115] == 1'b1) - begin - g2_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the G2 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[115] == 1'b1) - g2_mode_val = "odd"; - else - g2_mode_val = "even"; - g2_time_delay_val = 32'b0; - g2_time_delay_val = scan_data[119:116]; - g2_time_delay_val = g2_time_delay_val * 250; - if (g2_time_delay_val > 3000) - g2_time_delay_val = 3000; - g2_high_val[8:0] <= scan_data[104:96]; - g2_low_val[8:0] <= scan_data[114:106]; - if (scan_data[104:96] == 9'b000000000) - g2_high_val[9:0] <= 10'b1000000000; - if (scan_data[114:106] == 9'b000000000) - g2_low_val[9:0] <= 10'b1000000000; - - // cntr g1 - if (scan_data[81] == 1'b1) - begin - g1_mode_val = "bypass"; - if (scan_data[91] == 1'b1) - begin - g1_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the G1 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[91] == 1'b1) - g1_mode_val = "odd"; - else - g1_mode_val = "even"; - g1_time_delay_val = 32'b0; - g1_time_delay_val = scan_data[95:92]; - g1_time_delay_val = g1_time_delay_val * 250; - if (g1_time_delay_val > 3000) - g1_time_delay_val = 3000; - g1_high_val[8:0] <= scan_data[80:72]; - g1_low_val[8:0] <= scan_data[90:82]; - if (scan_data[80:72] == 9'b000000000) - g1_high_val[9:0] <= 10'b1000000000; - if (scan_data[90:82] == 9'b000000000) - g1_low_val[9:0] <= 10'b1000000000; - - // cntr g0 - if (scan_data[57] == 1'b1) - begin - g0_mode_val = "bypass"; - if (scan_data[67] == 1'b1) - begin - g0_mode_val = "off"; - $display("Warning : The specified bit settings will turn OFF the G0 counter. It cannot be turned on unless the part is re-initialized."); - end - end - else if (scan_data[67] == 1'b1) - g0_mode_val = "odd"; - else - g0_mode_val = "even"; - g0_time_delay_val = 32'b0; - g0_time_delay_val = scan_data[71:68]; - g0_time_delay_val = g0_time_delay_val * 250; - if (g0_time_delay_val > 3000) - g0_time_delay_val = 3000; - g0_high_val[8:0] <= scan_data[56:48]; - g0_low_val[8:0] <= scan_data[66:58]; - if (scan_data[56:48] == 9'b000000000) - g0_high_val[9:0] <= 10'b1000000000; - if (scan_data[66:58] == 9'b000000000) - g0_low_val[9:0] <= 10'b1000000000; - - // cntr M - error = 0; - m_val_tmp[8:0] = scan_data[32:24]; - if (scan_data[33] !== 1'b1) - begin - if (m_val_tmp[8:0] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal 1 value for M counter. Instead, the M counter should be BYPASSED. Reconfiguration may not work."); - end - else if (m_val_tmp[8:0] == 9'b000000000) - m_val_tmp[9:0] = 10'b1000000000; - if (error == 1'b0) - begin - if (m_mode_val === "bypass") - $display ("Warning : M counter switched from BYPASS mode to enabled (M modulus = %d). PLL may lose lock.", m_val_tmp[9:0]); - else - $display("PLL reconfigured with : M modulus = %d ", m_val_tmp[9:0]); - m_mode_val = ""; - end - end - else if (scan_data[33] == 1'b1) - begin - if (scan_data[24] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal value for counter M in BYPASS mode. The LSB of the counter should be set to 0 in order to operate the counter in BYPASS mode. Reconfiguration may not work."); - end - else begin - if (m_mode_val !== "bypass") - $display ("Warning : M counter switched from enabled to BYPASS mode. PLL may lose lock."); - m_val_tmp[9:0] = 10'b0000000001; - m_mode_val = "bypass"; - $display("PLL reconfigured with : M modulus = %d ", m_val_tmp[9:0]); - end - end - - if (skip_vco == "on") - m_val_tmp[9:0] = 10'b0000000001; - - // cntr M2 - if (ss > 0) - begin - error = 0; - m2_val[8:0] = scan_data[42:34]; - if (scan_data[43] !== 1'b1) - begin - if (m2_val[8:0] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal 1 value for M2 counter. Instead, the M2 counter should be BYPASSED. Reconfiguration may not work."); - end - else if (m2_val[8:0] == 9'b000000000) - m2_val[9:0] = 10'b1000000000; - if (error == 1'b0) - begin - if (m2_mode_val === "bypass") - $display ("Warning : M2 counter switched from BYPASS mode to enabled (M2 modulus = %d). Pll may lose lock.", m2_val[9:0]); - else - $display(" M2 modulus = %d ", m2_val[9:0]); - m2_mode_val = ""; - end - end - else if (scan_data[43] == 1'b1) - begin - if (scan_data[34] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal value for counter M2 in BYPASS mode. The LSB of the counter should be set to 0 in order to operate the counter in BYPASS mode. Reconfiguration may not work."); - end - else begin - if (m2_mode_val !== "bypass") - $display ("Warning : M2 counter switched from enabled to BYPASS mode. PLL may lose lock."); - m2_val[9:0] = 10'b0000000001; - m2_mode_val = "bypass"; - $display(" M2 modulus = %d ", m2_val[9:0]); - end - end - if (m_mode_val != m2_mode_val) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Incompatible modes for M1/M2 counters. Either both should be BYASSED or both NON-BYPASSED. Reconfiguration may not work."); - end - end - - m_time_delay_val = 32'b0; - m_time_delay_val = scan_data[47:44]; - m_time_delay_val = m_time_delay_val * 250; - if (m_time_delay_val > 3000) - m_time_delay_val = 3000; - if (skip_vco == "on") - m_time_delay_val = 32'b0; - $display(" M time delay = %0d", m_time_delay_val); - - // cntr N - error = 0; - n_val_tmp[8:0] = scan_data[8:0]; - if (scan_data[9] !== 1'b1) - begin - if (n_val_tmp[8:0] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal 1 value for N counter. Instead, the N counter should be BYPASSED. Reconfiguration may not work."); - end - else if (n_val_tmp[8:0] == 9'b000000000) - n_val_tmp[9:0] = 10'b1000000000; - if (error == 1'b0) - begin - if (n_mode_val === "bypass") - $display ("Warning : N counter switched from BYPASS mode to enabled (N modulus = %d). PLL may lose lock.", n_val_tmp[9:0]); - else - $display(" N modulus = %d ", n_val_tmp[9:0]); - n_mode_val = ""; - end - end - else if (scan_data[9] == 1'b1) // bypass - begin - if (scan_data[0] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal value for counter N in BYPASS mode. The LSB of the counter should be set to 0 in order to operate the counter in BYPASS mode. Reconfiguration may not work."); - end - else begin - if (n_mode_val !== "bypass") - $display ("Warning : N counter switched from enabled to BYPASS mode. PLL may lose lock."); - n_val_tmp[9:0] = 10'b0000000001; - n_mode_val = "bypass"; - $display(" N modulus = %d ", n_val_tmp[9:0]); - end - end - - // cntr N2 - if (ss > 0) - begin - error = 0; - n2_val[8:0] = scan_data[18:10]; - if (scan_data[19] !== 1'b1) - begin - if (n2_val[8:0] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal 1 value for N2 counter. Instead, the N2 counter should be BYPASSED. Reconfiguration may not work."); - end - else if (n2_val[8:0] == 9'b000000000) - n2_val = 10'b1000000000; - if (error == 1'b0) - begin - if (n2_mode_val === "bypass") - $display ("Warning : N2 counter switched from BYPASS mode to enabled (N2 modulus = %d). PLL may lose lock.", n2_val[9:0]); - else - $display(" N2 modulus = %d ", n2_val[9:0]); - n2_mode_val = ""; - end - end - else if (scan_data[19] == 1'b1) // bypass - begin - if (scan_data[10] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Illegal value for counter N2 in BYPASS mode. The LSB of the counter should be set to 0 in order to operate the counter in BYPASS mode. Reconfiguration may not work."); - end - else begin - if (n2_mode_val !== "bypass") - $display ("Warning : N2 counter switched from enabled to BYPASS mode. PLL may lose lock."); - n2_val[9:0] = 10'b0000000001; - n2_mode_val = "bypass"; - $display(" N2 modulus = %d ", n2_val[9:0]); - end - end - if (n_mode_val != n2_mode_val) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Incompatible modes for N1/N2 counters. Either both should be BYASSED or both NON-BYPASSED."); - end - end // ss > 0 - - n_time_delay_val = 32'b0; - n_time_delay_val = scan_data[23:20]; - n_time_delay_val = n_time_delay_val * 250; - if (n_time_delay_val > 3000) - n_time_delay_val = 3000; - $display(" N time delay = %0d", n_time_delay_val); - - transfer <= 0; - // clear the scan_chain - for (i = 0; i <= scan_chain_length; i = i + 1) - scan_data[i] = 0; - end - end - - always @(negedge transfer) - begin - if (l_scan_chain == "long") - begin - $display(" E3 high = %d, E3 low = %d, E3 mode = %s, E3 time delay = %0d", e3_high_val[9:0], e3_low_val[9:0], e3_mode_val, e3_time_delay_val); - $display(" E2 high = %d, E2 low = %d, E2 mode = %s, E2 time delay = %0d", e2_high_val[9:0], e2_low_val[9:0], e2_mode_val, e2_time_delay_val); - $display(" E1 high = %d, E1 low = %d, E1 mode = %s, E1 time delay = %0d", e1_high_val[9:0], e1_low_val[9:0], e1_mode_val, e1_time_delay_val); - $display(" E0 high = %d, E0 low = %d, E0 mode = %s, E0 time delay = %0d", e0_high_val[9:0], e0_low_val[9:0], e0_mode_val, e0_time_delay_val); - end - $display(" L1 high = %d, L1 low = %d, L1 mode = %s, L1 time delay = %0d", l1_high_val[9:0], l1_low_val[9:0], l1_mode_val, l1_time_delay_val); - $display(" L0 high = %d, L0 low = %d, L0 mode = %s, L0 time delay = %0d", l0_high_val[9:0], l0_low_val[9:0], l0_mode_val, l0_time_delay_val); - $display(" G3 high = %d, G3 low = %d, G3 mode = %s, G3 time delay = %0d", g3_high_val[9:0], g3_low_val[9:0], g3_mode_val, g3_time_delay_val); - $display(" G2 high = %d, G2 low = %d, G2 mode = %s, G2 time delay = %0d", g2_high_val[9:0], g2_low_val[9:0], g2_mode_val, g2_time_delay_val); - $display(" G1 high = %d, G1 low = %d, G1 mode = %s, G1 time delay = %0d", g1_high_val[9:0], g1_low_val[9:0], g1_mode_val, g1_time_delay_val); - $display(" G0 high = %d, G0 low = %d, G0 mode = %s, G0 time delay = %0d", g0_high_val[9:0], g0_low_val[9:0], g0_mode_val, g0_time_delay_val); - end - -always @(schedule_vco or areset_ipd or ena_ipd) -begin - sched_time = 0; - - for (i = 0; i <= 7; i=i+1) - last_phase_shift[i] = phase_shift[i]; - - cycle_to_adjust = 0; - l_index = 1; - m_times_vco_period = new_m_times_vco_period; - - // give appropriate messages - // if areset was asserted - if (areset_ipd == 1'b1 && areset_ipd_last_value !== areset_ipd) - begin - $display (" Note : Stratix PLL was reset"); - $display ("Time: %0t Instance: %m", $time); - end - - // if ena was deasserted - if (ena_ipd == 1'b0 && ena_ipd_last_value !== ena_ipd) - begin - $display (" Note : Stratix PLL was disabled"); - $display ("Time: %0t Instance: %m", $time); - end - - // illegal value on areset_ipd - if (areset_ipd === 1'bx && (areset_ipd_last_value === 1'b0 || areset_ipd_last_value === 1'b1)) - begin - $display("Warning : Illegal value 'X' detected on ARESET input"); - $display ("Time: %0t Instance: %m", $time); - end - - if ((schedule_vco !== schedule_vco_last_value) && (areset_ipd == 1'b1 || ena_ipd == 1'b0 || stop_vco == 1'b1)) - begin - - // drop VCO taps to 0 - for (i = 0; i <= 7; i=i+1) - begin - for (j = 0; j <= last_phase_shift[i] + 1; j=j+1) - vco_out[i] <= #(j) 1'b0; - phase_shift[i] = 0; - last_phase_shift[i] = 0; - end - - // reset lock parameters - locked_tmp = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - pll_is_locked = 0; - pll_about_to_lock = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - - got_first_refclk = 0; - got_second_refclk = 0; - refclk_time = 0; - got_first_fbclk = 0; - fbclk_time = 0; - first_fbclk_time = 0; - fbclk_period = 0; - - first_schedule = 1; - schedule_offset = 1; - vco_val = 0; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - - // reset enable0 and enable1 counter parameters -// l0_count = 1; -// l1_count = 1; -// l0_got_first_rising_edge = 0; -// l1_got_first_rising_edge = 0; - - end else if (ena_ipd === 1'b1 && areset_ipd === 1'b0 && stop_vco === 1'b0) - begin - - // else note areset deassert time - // note it as refclk_time to prevent false triggering - // of stop_vco after areset - if (areset_ipd === 1'b0 && areset_ipd_last_value === 1'b1) - begin - refclk_time = $time; - end - - // calculate loop_xplier : this will be different from m_val in ext. fbk mode - loop_xplier = m_val; - loop_initial = i_m_initial - 1; - loop_ph = i_m_ph; - loop_time_delay = m_time_delay_val; - - if (l_operation_mode == "external_feedback") - begin - if (ext_fbk_cntr_mode == "bypass") - ext_fbk_cntr_modulus = 1; - else - ext_fbk_cntr_modulus = ext_fbk_cntr_high + ext_fbk_cntr_low; - - loop_xplier = m_val * (ext_fbk_cntr_modulus); - loop_ph = ext_fbk_cntr_ph; - loop_initial = ext_fbk_cntr_initial - 1 + ((i_m_initial - 1) * (ext_fbk_cntr_modulus)); - loop_time_delay = m_time_delay_val + ext_fbk_cntr_delay; - end - - // convert initial value to delay - initial_delay = (loop_initial * m_times_vco_period)/loop_xplier; - - // convert loop ph_tap to delay - rem = m_times_vco_period % loop_xplier; - vco_per = m_times_vco_period/loop_xplier; - if (rem != 0) - vco_per = vco_per + 1; - fbk_phase = (loop_ph * vco_per)/8; - - if (l_operation_mode == "external_feedback") - begin - pull_back_ext_cntr = ext_fbk_cntr_delay + (ext_fbk_cntr_initial - 1) * (m_times_vco_period/loop_xplier) + fbk_phase; - - while (pull_back_ext_cntr > refclk_period) - pull_back_ext_cntr = pull_back_ext_cntr - refclk_period; - - pull_back_M = m_time_delay_val + (i_m_initial - 1) * (ext_fbk_cntr_modulus) * (m_times_vco_period/loop_xplier); - - while (pull_back_M > refclk_period) - pull_back_M = pull_back_M - refclk_period; - end - else begin - pull_back_ext_cntr = 0; - pull_back_M = initial_delay + m_time_delay_val + fbk_phase; - end - - total_pull_back = pull_back_M + pull_back_ext_cntr; - if (l_simulation_type == "timing") - total_pull_back = total_pull_back + pll_compensation_delay; - - while (total_pull_back > refclk_period) - total_pull_back = total_pull_back - refclk_period; - - if (total_pull_back > 0) - offset = refclk_period - total_pull_back; - - if (l_operation_mode == "external_feedback") - begin - fbk_delay = pull_back_M; - if (l_simulation_type == "timing") - fbk_delay = fbk_delay + pll_compensation_delay; - - ext_fbk_delay = pull_back_ext_cntr - fbk_phase; - end - else begin - fbk_delay = total_pull_back - fbk_phase; - if (fbk_delay < 0) - begin - offset = offset - fbk_phase; - fbk_delay = total_pull_back; - end - end - - // assign m_delay - m_delay = fbk_delay; - - for (i = 1; i <= loop_xplier; i=i+1) - begin - // adjust cycles - tmp_vco_per = m_times_vco_period/loop_xplier; - if (rem != 0 && l_index <= rem) - begin - tmp_rem = (loop_xplier * l_index) % rem; - cycle_to_adjust = (loop_xplier * l_index) / rem; - if (tmp_rem != 0) - cycle_to_adjust = cycle_to_adjust + 1; - end - if (cycle_to_adjust == i) - begin - tmp_vco_per = tmp_vco_per + 1; - l_index = l_index + 1; - end - - // calculate high and low periods - high_time = tmp_vco_per/2; - if (tmp_vco_per % 2 != 0) - high_time = high_time + 1; - low_time = tmp_vco_per - high_time; - - // schedule the rising and falling egdes - for (j=0; j<=1; j=j+1) - begin - vco_val = ~vco_val; - if (vco_val == 1'b0) - sched_time = sched_time + high_time; - else - sched_time = sched_time + low_time; - - // add offset - if (schedule_offset == 1'b1) - begin - sched_time = sched_time + offset; - schedule_offset = 0; - end - - // schedule taps with appropriate phase shifts - for (k = 0; k <= 7; k=k+1) - begin - phase_shift[k] = (k*tmp_vco_per)/8; - if (first_schedule) - vco_out[k] <= #(sched_time + phase_shift[k]) vco_val; - else - vco_out[k] <= #(sched_time + last_phase_shift[k]) vco_val; - end - end - end - if (first_schedule) - begin - vco_val = ~vco_val; - if (vco_val == 1'b0) - sched_time = sched_time + high_time; - else - sched_time = sched_time + low_time; - for (k = 0; k <= 7; k=k+1) - begin - phase_shift[k] = (k*tmp_vco_per)/8; - vco_out[k] <= #(sched_time+phase_shift[k]) vco_val; - end - first_schedule = 0; - end - - // this may no longer be required - - schedule_vco <= #(sched_time) ~schedule_vco; - if (vco_period_was_phase_adjusted) - begin - m_times_vco_period = refclk_period; - new_m_times_vco_period = refclk_period; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 1; - - tmp_vco_per = m_times_vco_period/loop_xplier; - for (k = 0; k <= 7; k=k+1) - phase_shift[k] = (k*tmp_vco_per)/8; - end - end - - areset_ipd_last_value = areset_ipd; - ena_ipd_last_value = ena_ipd; - schedule_vco_last_value = schedule_vco; - -end - -always @(pfdena_ipd) -begin - if (pfdena_ipd === 1'b0) - begin - locked_tmp = 1'bx; - pll_is_locked = 0; - cycles_to_lock = 0; - $display (" Note : PFDENA was deasserted"); - $display ("Time: %0t Instance: %m", $time); - end - else if (pfdena_ipd === 1'b1 && pfdena_ipd_last_value === 1'b0) - begin - // PFD was disabled, now enabled again - got_first_refclk = 0; - got_second_refclk = 0; - refclk_time = $time; - end - pfdena_ipd_last_value = pfdena_ipd; -end - -always @(negedge refclk) -begin - refclk_last_value = refclk; -end - -always @(negedge fbclk) -begin - fbclk_last_value = fbclk; -end - -always @(posedge refclk or posedge fbclk) -begin - if (refclk == 1'b1 && refclk_last_value !== refclk && areset_ipd === 1'b0) - begin - n_val <= n_val_tmp; - if (! got_first_refclk) - begin - got_first_refclk = 1; - end else - begin - got_second_refclk = 1; - refclk_period = $time - refclk_time; - - // check if incoming freq. will cause VCO range to be - // exceeded - if ( (vco_max != 0 && vco_min != 0) && (skip_vco == "off") && (pfdena_ipd === 1'b1) && - ((refclk_period/loop_xplier > vco_max) || - (refclk_period/loop_xplier < vco_min)) ) - begin - if (pll_is_locked == 1'b1) - begin - $display ("Warning : Input clock freq. is not within VCO range. PLL may lose lock"); - $display ("Time: %0t Instance: %m", $time); - if (inclk_out_of_range === 1'b1) - begin - // unlock - pll_is_locked = 0; - locked_tmp = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - pll_about_to_lock = 0; - cycles_to_lock = 0; - $display ("Note : Stratix PLL lost lock"); - $display ("Time: %0t Instance: %m", $time); - first_schedule = 1; - schedule_offset = 1; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - end - end - else begin - if (no_warn == 0) - begin - $display ("Warning : Input clock freq. is not within VCO range. PLL may not lock"); - $display ("Time: %0t Instance: %m", $time); - no_warn = 1; - end - end - inclk_out_of_range = 1; - end - else if ( vco_min == 0 && vco_max == 0 && pll_type == "cdr") - begin - if (refclk_period != primary_clock_frequency) - begin - if (no_warn == 0) - begin - $display("Warning : Incoming clock period %d for Stratix PLL does not match the specified inclock period %d. ALTGXB simulation may not function correctly.", refclk_period, primary_clock_frequency); - $display ("Time: %0t Instance: %m", $time); - no_warn = 1; - end - end - end - else begin - inclk_out_of_range = 0; - end - - end - if (stop_vco == 1'b1) - begin - stop_vco = 0; - schedule_vco = ~schedule_vco; - end - refclk_time = $time; - end - - if (fbclk == 1'b1 && fbclk_last_value !== fbclk) - begin - m_val <= m_val_tmp; - if (!got_first_fbclk) - begin - got_first_fbclk = 1; - first_fbclk_time = $time; - end - else - fbclk_period = $time - fbclk_time; - - // need refclk_period here, so initialized to proper value above - if ( ( ($time - refclk_time > 1.5 * refclk_period) && pfdena_ipd === 1'b1 && pll_is_locked == 1'b1) || ( ($time - refclk_time > 5 * refclk_period) && pfdena_ipd === 1'b1) ) - begin - stop_vco = 1; - // reset - got_first_refclk = 0; - got_first_fbclk = 0; - got_second_refclk = 0; - if (pll_is_locked == 1'b1) - begin - pll_is_locked = 0; - locked_tmp = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - $display ("Note : Stratix PLL lost lock due to loss of input clock"); - $display ("Time: %0t Instance: %m", $time); - end - pll_about_to_lock = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - first_schedule = 1; - end - fbclk_time = $time; - end - - if (got_second_refclk && pfdena_ipd === 1'b1 && (!inclk_out_of_range)) - begin - // now we know actual incoming period -// if (abs(refclk_period - fbclk_period) > 2) -// begin -// new_m_times_vco_period = refclk_period; -// end -// else if (abs(fbclk_time - refclk_time) <= 2 || (refclk_period - abs(fbclk_time - refclk_time) <= 2)) - if (abs(fbclk_time - refclk_time) <= 5 || (got_first_fbclk && abs(refclk_period - abs(fbclk_time - refclk_time)) <= 5)) - begin - // considered in phase - if (cycles_to_lock == valid_lock_multiplier - 1) - pll_about_to_lock <= 1; - if (cycles_to_lock == valid_lock_multiplier) - begin - if (pll_is_locked === 1'b0) - begin - $display (" Note : Stratix PLL locked to incoming clock"); - $display ("Time: %0t Instance: %m", $time); - end - pll_is_locked = 1; - locked_tmp = 1; - if (l_pll_type == "fast") - locked_tmp = 0; - end - // increment lock counter only if the second part of the above - // time check is NOT true - if (!(abs(refclk_period - abs(fbclk_time - refclk_time)) <= 5)) - begin - cycles_to_lock = cycles_to_lock + 1; - end - - // adjust m_times_vco_period - new_m_times_vco_period = refclk_period; - - end else - begin - // if locked, begin unlock - if (pll_is_locked) - begin - cycles_to_unlock = cycles_to_unlock + 1; - if (cycles_to_unlock == invalid_lock_multiplier) - begin - pll_is_locked = 0; - locked_tmp = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - pll_about_to_lock = 0; - cycles_to_lock = 0; - $display ("Note : Stratix PLL lost lock"); - $display ("Time: %0t Instance: %m", $time); - first_schedule = 1; - schedule_offset = 1; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - end - end - if (abs(refclk_period - fbclk_period) <= 2) - begin - // frequency is still good - if ($time == fbclk_time && (!phase_adjust_was_scheduled)) - begin - if (abs(fbclk_time - refclk_time) > refclk_period/2) - begin - if (abs(fbclk_time - refclk_time) > 1.5 * refclk_period) - begin - // input clock may have stopped : do nothing - end - else begin - new_m_times_vco_period = m_times_vco_period + (refclk_period - abs(fbclk_time - refclk_time)); - vco_period_was_phase_adjusted = 1; - end - end else - begin - new_m_times_vco_period = m_times_vco_period - abs(fbclk_time - refclk_time); - vco_period_was_phase_adjusted = 1; - end - end - end else - begin - new_m_times_vco_period = refclk_period; - phase_adjust_was_scheduled = 0; - end - end - end - - if (quiet_period_violation == 1'b1 || reconfig_err == 1'b1 || scanclr_violation == 1'b1 || scanclr_clk_violation == 1'b1) - begin - locked_tmp = 0; - if (l_pll_type == "fast") - locked_tmp = 1; - end - - refclk_last_value = refclk; - fbclk_last_value = fbclk; -end - - assign clk0_tmp = i_clk0_counter == "l0" ? l0_clk : i_clk0_counter == "l1" ? l1_clk : i_clk0_counter == "g0" ? g0_clk : i_clk0_counter == "g1" ? g1_clk : i_clk0_counter == "g2" ? g2_clk : i_clk0_counter == "g3" ? g3_clk : 'b0; - - assign clk0 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk0_tmp : 'bx; - - dffp ena0_reg ( .D(clkena0_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk0_tmp), - .Q(ena0)); - - assign clk1_tmp = i_clk1_counter == "l0" ? l0_clk : i_clk1_counter == "l1" ? l1_clk : i_clk1_counter == "g0" ? g0_clk : i_clk1_counter == "g1" ? g1_clk : i_clk1_counter == "g2" ? g2_clk : i_clk1_counter == "g3" ? g3_clk : 'b0; - - assign clk1 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk1_tmp : 'bx; - - dffp ena1_reg ( .D(clkena1_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk1_tmp), - .Q(ena1)); - - assign clk2_tmp = i_clk2_counter == "l0" ? l0_clk : i_clk2_counter == "l1" ? l1_clk : i_clk2_counter == "g0" ? g0_clk : i_clk2_counter == "g1" ? g1_clk : i_clk2_counter == "g2" ? g2_clk : i_clk2_counter == "g3" ? g3_clk : 'b0; - - assign clk2 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk2_tmp : 'bx; - - dffp ena2_reg ( .D(clkena2_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk2_tmp), - .Q(ena2)); - - assign clk3_tmp = i_clk3_counter == "l0" ? l0_clk : i_clk3_counter == "l1" ? l1_clk : i_clk3_counter == "g0" ? g0_clk : i_clk3_counter == "g1" ? g1_clk : i_clk3_counter == "g2" ? g2_clk : i_clk3_counter == "g3" ? g3_clk : 'b0; - - assign clk3 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk3_tmp : 'bx; - - dffp ena3_reg ( .D(clkena3_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk3_tmp), - .Q(ena3)); - - assign clk4_tmp = i_clk4_counter == "l0" ? l0_clk : i_clk4_counter == "l1" ? l1_clk : i_clk4_counter == "g0" ? g0_clk : i_clk4_counter == "g1" ? g1_clk : i_clk4_counter == "g2" ? g2_clk : i_clk4_counter == "g3" ? g3_clk : 'b0; - - assign clk4 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk4_tmp : 'bx; - - dffp ena4_reg ( .D(clkena4_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk4_tmp), - .Q(ena4)); - - assign clk5_tmp = i_clk5_counter == "l0" ? l0_clk : i_clk5_counter == "l1" ? l1_clk : i_clk5_counter == "g0" ? g0_clk : i_clk5_counter == "g1" ? g1_clk : i_clk5_counter == "g2" ? g2_clk : i_clk5_counter == "g3" ? g3_clk : 'b0; - - assign clk5 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? clk5_tmp : 'bx; - - dffp ena5_reg ( .D(clkena5_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!clk5_tmp), - .Q(ena5)); - - assign extclk0_tmp = i_extclk0_counter == "e0" ? e0_clk : i_extclk0_counter == "e1" ? e1_clk : i_extclk0_counter == "e2" ? e2_clk : i_extclk0_counter == "e3" ? e3_clk : i_extclk0_counter == "g0" ? g0_clk : 'b0; - - assign extclk0 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? extclk0_tmp : 'bx; - - dffp extena0_reg ( .D(extclkena0_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!extclk0_tmp), - .Q(extena0)); - - assign extclk1_tmp = i_extclk1_counter == "e0" ? e0_clk : i_extclk1_counter == "e1" ? e1_clk : i_extclk1_counter == "e2" ? e2_clk : i_extclk1_counter == "e3" ? e3_clk : i_extclk1_counter == "g0" ? g0_clk : 'b0; - - assign extclk1 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? extclk1_tmp : 'bx; - - dffp extena1_reg ( .D(extclkena1_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!extclk1_tmp), - .Q(extena1)); - - assign extclk2_tmp = i_extclk2_counter == "e0" ? e0_clk : i_extclk2_counter == "e1" ? e1_clk : i_extclk2_counter == "e2" ? e2_clk : i_extclk2_counter == "e3" ? e3_clk : i_extclk2_counter == "g0" ? g0_clk : 'b0; - - assign extclk2 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? extclk2_tmp : 'bx; - - dffp extena2_reg ( .D(extclkena2_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!extclk2_tmp), - .Q(extena2)); - - assign extclk3_tmp = i_extclk3_counter == "e0" ? e0_clk : i_extclk3_counter == "e1" ? e1_clk : i_extclk3_counter == "e2" ? e2_clk : i_extclk3_counter == "e3" ? e3_clk : i_extclk3_counter == "g0" ? g0_clk : 'b0; - - assign extclk3 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || (pll_about_to_lock == 1'b1 && !quiet_period_violation && !reconfig_err && !scanclr_violation && !scanclr_clk_violation) ? extclk3_tmp : 'bx; - - dffp extena3_reg ( .D(extclkena3_ipd), - .CLRN(1'b1), - .PRN(1'b1), - .ENA(1'b1), - .CLK(!extclk3_tmp), - .Q(extena3)); - - assign enable_0 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || pll_about_to_lock == 1'b1 ? enable0_tmp : 'bx; - assign enable_1 = (areset_ipd === 1'b1 || ena_ipd === 1'b0) || pll_about_to_lock == 1'b1 ? enable1_tmp : 'bx; - - // ACCELERATE OUTPUTS - and (clk[0], ena0, clk0); - and (clk[1], ena1, clk1); - and (clk[2], ena2, clk2); - and (clk[3], ena3, clk3); - and (clk[4], ena4, clk4); - and (clk[5], ena5, clk5); - - and (extclk[0], extena0, extclk0); - and (extclk[1], extena1, extclk1); - and (extclk[2], extena2, extclk2); - and (extclk[3], extena3, extclk3); - - and (enable0, 1'b1, enable_0); - and (enable1, 1'b1, enable_1); - - and (scandataout, 1'b1, scandataout_tmp); - -endmodule // MF_stratix_pll - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : arm_m_cntr -// -// Description : Simulation model for the M counter. This is the -// loop feedback counter for the StratixII PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module arm_m_cntr ( clk, - reset, - cout, - initial_value, - modulus, - time_delay); - - // INPUT PORTS - input clk; - input reset; - input [31:0] initial_value; - input [31:0] modulus; - input [31:0] time_delay; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - integer count; - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg cout_tmp; - - initial - begin - count = 1; - first_rising_edge = 1; - clk_last_value = 0; - end - - always @(reset or clk) - begin - if (reset) - begin - count = 1; - tmp_cout = 0; - first_rising_edge = 1; - cout_tmp <= tmp_cout; - end - else begin - if (clk == 1 && clk_last_value !== clk && first_rising_edge) - begin - first_rising_edge = 0; - tmp_cout = clk; - cout_tmp <= #(time_delay) tmp_cout; - end - else if (first_rising_edge == 0) - begin - if (count < modulus) - count = count + 1; - else - begin - count = 1; - tmp_cout = ~tmp_cout; - cout_tmp <= #(time_delay) tmp_cout; - end - end - end - clk_last_value = clk; - -// cout_tmp <= #(time_delay) tmp_cout; - end - - and (cout, cout_tmp, 1'b1); - -endmodule // arm_m_cntr - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : arm_n_cntr -// -// Description : Simulation model for the N counter. This is the -// input clock divide counter for the StratixII PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module arm_n_cntr ( clk, - reset, - cout, - modulus); - - // INPUT PORTS - input clk; - input reset; - input [31:0] modulus; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - integer count; - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg cout_tmp; - - initial - begin - count = 1; - first_rising_edge = 1; - clk_last_value = 0; - end - - always @(reset or clk) - begin - if (reset) - begin - count = 1; - tmp_cout = 0; - first_rising_edge = 1; - end - else begin - if (clk == 1 && clk_last_value !== clk && first_rising_edge) - begin - first_rising_edge = 0; - tmp_cout = clk; - end - else if (first_rising_edge == 0) - begin - if (count < modulus) - count = count + 1; - else - begin - count = 1; - tmp_cout = ~tmp_cout; - end - end - end - clk_last_value = clk; - - end - - assign cout = tmp_cout; - -endmodule // arm_n_cntr - -/////////////////////////////////////////////////////////////////////////////// -// -// Module Name : arm_scale_cntr -// -// Description : Simulation model for the output scale-down counters. -// This is a common model for the C0, C1, C2, C3, C4 and -// C5 output counters of the StratixII PLL. -// -/////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps / 1 ps -module arm_scale_cntr ( clk, - reset, - cout, - high, - low, - initial_value, - mode, - ph_tap); - - // INPUT PORTS - input clk; - input reset; - input [31:0] high; - input [31:0] low; - input [31:0] initial_value; - input [8*6:1] mode; - input [31:0] ph_tap; - - // OUTPUT PORTS - output cout; - - // INTERNAL VARIABLES AND NETS - reg tmp_cout; - reg first_rising_edge; - reg clk_last_value; - reg init; - integer count; - integer output_shift_count; - reg cout_tmp; - - initial - begin - count = 1; - first_rising_edge = 0; - tmp_cout = 0; - output_shift_count = 1; - end - - always @(clk or reset) - begin - if (init !== 1'b1) - begin - clk_last_value = 0; - init = 1'b1; - end - if (reset) - begin - count = 1; - output_shift_count = 1; - tmp_cout = 0; - first_rising_edge = 0; - end - else if (clk_last_value !== clk) - begin - if (mode == " off") - tmp_cout = 0; - else if (mode == "bypass") - begin - tmp_cout = clk; - first_rising_edge = 1; - end - else if (first_rising_edge == 0) - begin - if (clk == 1) - begin - if (output_shift_count == initial_value) - begin - tmp_cout = clk; - first_rising_edge = 1; - end - else - output_shift_count = output_shift_count + 1; - end - end - else if (output_shift_count < initial_value) - begin - if (clk == 1) - output_shift_count = output_shift_count + 1; - end - else - begin - count = count + 1; - if (mode == " even" && (count == (high*2) + 1)) - tmp_cout = 0; - else if (mode == " odd" && (count == (high*2))) - tmp_cout = 0; - else if (count == (high + low)*2 + 1) - begin - tmp_cout = 1; - count = 1; // reset count - end - end - end - clk_last_value = clk; - cout_tmp <= tmp_cout; - end - - and (cout, cout_tmp, 1'b1); - -endmodule // arm_scale_cntr - - -////////////////////////////////////////////////////////////////////////////// -// -// Module Name : MF_stratixii_pll -// -// Description : Behavioral model for StratixII pll. -// -// Limitations : Does not support Spread Spectrum and Bandwidth. -// -// Outputs : Up to 6 output clocks, each defined by its own set of -// parameters. Locked output (active high) indicates when the -// PLL locks. clkbad, clkloss and activeclock are used for -// clock switchover to indicate which input clock has gone -// bad, when the clock switchover initiates and which input -// clock is being used as the reference, respectively. -// scandataout is the data output of the serial scan chain. -// -////////////////////////////////////////////////////////////////////////////// - -`timescale 1 ps/1 ps -`define WORD_LENGTH 18 - -module MF_stratixii_pll (inclk, - fbin, - ena, - clkswitch, - areset, - pfdena, - scanclk, - scanread, - scanwrite, - scandata, - testin, - clk, - clkbad, - activeclock, - locked, - clkloss, - scandataout, - scandone, - enable0, - enable1, - testupout, - testdownout, - sclkout - ); - - parameter operation_mode = "normal"; - parameter pll_type = "auto"; - parameter compensate_clock = "clk0"; - parameter feedback_source = "clk0"; - parameter qualify_conf_done = "off"; - - parameter test_input_comp_delay_chain_bits = 0; - parameter test_feedback_comp_delay_chain_bits = 0; - - parameter inclk0_input_frequency = 10000; - parameter inclk1_input_frequency = 10000; - - parameter gate_lock_signal = "no"; - parameter gate_lock_counter = 1; - parameter self_reset_on_gated_loss_lock = "off"; - parameter valid_lock_multiplier = 1; - parameter invalid_lock_multiplier = 5; - - parameter switch_over_type = "auto"; - parameter switch_over_on_lossclk = "off"; - parameter switch_over_on_gated_lock = "off"; - parameter switch_over_counter = 1; - parameter enable_switch_over_counter = "on"; - - parameter bandwidth = 0; - parameter bandwidth_type = "auto"; - parameter down_spread = "0.0"; - parameter spread_frequency = 0; - parameter common_rx_tx = "off"; - parameter rx_outclock_resource = "auto"; - parameter use_dc_coupling = "false"; - - parameter clk0_output_frequency = 0; - parameter clk0_multiply_by = 1; - parameter clk0_divide_by = 1; - parameter clk0_phase_shift = "0"; - parameter clk0_duty_cycle = 50; - - parameter clk1_output_frequency = 0; - parameter clk1_multiply_by = 1; - parameter clk1_divide_by = 1; - parameter clk1_phase_shift = "0"; - parameter clk1_duty_cycle = 50; - - parameter clk2_output_frequency = 0; - parameter clk2_multiply_by = 1; - parameter clk2_divide_by = 1; - parameter clk2_phase_shift = "0"; - parameter clk2_duty_cycle = 50; - - parameter clk3_output_frequency = 0; - parameter clk3_multiply_by = 1; - parameter clk3_divide_by = 1; - parameter clk3_phase_shift = "0"; - parameter clk3_duty_cycle = 50; - - parameter clk4_output_frequency = 0; - parameter clk4_multiply_by = 1; - parameter clk4_divide_by = 1; - parameter clk4_phase_shift = "0"; - parameter clk4_duty_cycle = 50; - - parameter clk5_output_frequency = 0; - parameter clk5_multiply_by = 1; - parameter clk5_divide_by = 1; - parameter clk5_phase_shift = "0"; - parameter clk5_duty_cycle = 50; - - parameter pfd_min = 0; - parameter pfd_max = 0; - parameter vco_min = 0; - parameter vco_max = 0; - parameter vco_center = 0; - - // ADVANCED USE PARAMETERS - parameter m_initial = 1; - parameter m = 1; - parameter n = 1; - parameter m2 = 1; - parameter n2 = 1; - parameter ss = 0; - - parameter c0_high = 1; - parameter c0_low = 1; - parameter c0_initial = 1; - parameter c0_mode = "bypass"; - parameter c0_ph = 0; - - parameter c1_high = 1; - parameter c1_low = 1; - parameter c1_initial = 1; - parameter c1_mode = "bypass"; - parameter c1_ph = 0; - - parameter c2_high = 1; - parameter c2_low = 1; - parameter c2_initial = 1; - parameter c2_mode = "bypass"; - parameter c2_ph = 0; - - parameter c3_high = 1; - parameter c3_low = 1; - parameter c3_initial = 1; - parameter c3_mode = "bypass"; - parameter c3_ph = 0; - - parameter c4_high = 1; - parameter c4_low = 1; - parameter c4_initial = 1; - parameter c4_mode = "bypass"; - parameter c4_ph = 0; - - parameter c5_high = 1; - parameter c5_low = 1; - parameter c5_initial = 1; - parameter c5_mode = "bypass"; - parameter c5_ph = 0; - - parameter m_ph = 0; - - parameter clk0_counter = "c0"; - parameter clk1_counter = "c1"; - parameter clk2_counter = "c2"; - parameter clk3_counter = "c3"; - parameter clk4_counter = "c4"; - parameter clk5_counter = "c5"; - - parameter c1_use_casc_in = "off"; - parameter c2_use_casc_in = "off"; - parameter c3_use_casc_in = "off"; - parameter c4_use_casc_in = "off"; - parameter c5_use_casc_in = "off"; - - parameter m_test_source = 5; - parameter c0_test_source = 5; - parameter c1_test_source = 5; - parameter c2_test_source = 5; - parameter c3_test_source = 5; - parameter c4_test_source = 5; - parameter c5_test_source = 5; - - // LVDS mode parameters - parameter enable0_counter = "c0"; - parameter enable1_counter = "c1"; - parameter sclkout0_phase_shift = "0"; - parameter sclkout1_phase_shift = "0"; - - parameter vco_multiply_by = 0; - parameter vco_divide_by = 0; - parameter vco_post_scale = 1; - - parameter charge_pump_current = 0; - parameter loop_filter_r = "1.0"; - parameter loop_filter_c = 1; - - parameter pll_compensation_delay = 0; - parameter simulation_type = "functional"; - - //parameter for stratixii lvds - parameter clk0_phase_shift_num = 0; - parameter clk1_phase_shift_num = 0; - parameter clk2_phase_shift_num = 0; - - parameter clk0_use_even_counter_mode = "off"; - parameter clk1_use_even_counter_mode = "off"; - parameter clk2_use_even_counter_mode = "off"; - parameter clk3_use_even_counter_mode = "off"; - parameter clk4_use_even_counter_mode = "off"; - parameter clk5_use_even_counter_mode = "off"; - - parameter clk0_use_even_counter_value = "off"; - parameter clk1_use_even_counter_value = "off"; - parameter clk2_use_even_counter_value = "off"; - parameter clk3_use_even_counter_value = "off"; - parameter clk4_use_even_counter_value = "off"; - parameter clk5_use_even_counter_value = "off"; - - // INPUT PORTS - input [1:0] inclk; - input fbin; - input ena; - input clkswitch; - input areset; - input pfdena; - input scanclk; - input scanread; - input scanwrite; - input scandata; - input [3:0] testin; - - // OUTPUT PORTS - output [5:0] clk; - output [1:0] clkbad; - output activeclock; - output locked; - output clkloss; - output scandataout; - output scandone; - // lvds specific output ports - output enable0; - output enable1; - output [1:0] sclkout; - // test ports - output testupout; - output testdownout; - - // BUFFER INPUTS - wire inclk0_ipd; - wire inclk1_ipd; - wire ena_ipd; - wire fbin_ipd; - wire clkswitch_ipd; - wire areset_ipd; - wire pfdena_ipd; - wire scanclk_ipd; - wire scanread_ipd; - wire scanwrite_ipd; - wire scandata_ipd; - buf (inclk0_ipd, inclk[0]); - buf (inclk1_ipd, inclk[1]); - buf (ena_ipd, ena); - buf (fbin_ipd, fbin); - buf (clkswitch_ipd, clkswitch); - buf (areset_ipd, areset); - buf (pfdena_ipd, pfdena); - buf (scanclk_ipd, scanclk); - buf (scanread_ipd, scanread); - buf (scanwrite_ipd, scanwrite); - buf (scandata_ipd, scandata); - - - // INTERNAL VARIABLES AND NETS - integer scan_chain_length; - integer i; - integer j; - integer k; - integer x; - integer y; - integer l_index; - integer gate_count; - integer egpp_offset; - integer sched_time; - integer delay_chain; - integer low; - integer high; - integer initial_delay; - integer fbk_phase; - integer fbk_delay; - integer phase_shift[0:7]; - integer last_phase_shift[0:7]; - - integer m_times_vco_period; - integer new_m_times_vco_period; - integer refclk_period; - integer fbclk_period; - integer high_time; - integer low_time; - integer my_rem; - integer tmp_rem; - integer rem; - integer tmp_vco_per; - integer vco_per; - integer offset; - integer temp_offset; - integer cycles_to_lock; - integer cycles_to_unlock; - integer c0_count; - integer c0_initial_count; - integer c1_count; - integer c1_initial_count; - integer loop_xplier; - integer loop_initial; - integer loop_ph; - integer cycle_to_adjust; - integer total_pull_back; - integer pull_back_M; - - time fbclk_time; - time first_fbclk_time; - time refclk_time; - - reg got_first_refclk; - reg got_second_refclk; - reg got_first_fbclk; - reg refclk_last_value; - reg fbclk_last_value; - reg inclk_last_value; - reg pll_is_locked; - reg pll_about_to_lock; - reg locked_tmp; - reg c0_got_first_rising_edge; - reg c1_got_first_rising_edge; - reg vco_c0_last_value; - reg vco_c1_last_value; - reg areset_ipd_last_value; - reg ena_ipd_last_value; - reg pfdena_ipd_last_value; - reg inclk_out_of_range; - reg schedule_vco_last_value; - - reg gate_out; - reg vco_val; - - reg [31:0] m_initial_val; - reg [31:0] m_val[0:1]; - reg [31:0] n_val[0:1]; - reg [31:0] m_delay; - reg [8*6:1] m_mode_val[0:1]; - reg [8*6:1] n_mode_val[0:1]; - - reg [31:0] c_high_val[0:5]; - reg [31:0] c_low_val[0:5]; - reg [8*6:1] c_mode_val[0:5]; - reg [31:0] c_initial_val[0:5]; - integer c_ph_val[0:5]; - - // temporary registers for reprogramming - integer c_ph_val_tmp[0:5]; - reg [31:0] c_high_val_tmp[0:5]; - reg [31:0] c_low_val_tmp[0:5]; - reg [8*6:1] c_mode_val_tmp[0:5]; - - // hold registers for reprogramming - integer c_ph_val_hold[0:5]; - reg [31:0] c_high_val_hold[0:5]; - reg [31:0] c_low_val_hold[0:5]; - reg [8*6:1] c_mode_val_hold[0:5]; - - // old values - reg [31:0] m_val_old[0:1]; - reg [31:0] m_val_tmp[0:1]; - reg [31:0] n_val_old[0:1]; - reg [8*6:1] m_mode_val_old[0:1]; - reg [8*6:1] n_mode_val_old[0:1]; - reg [31:0] c_high_val_old[0:5]; - reg [31:0] c_low_val_old[0:5]; - reg [8*6:1] c_mode_val_old[0:5]; - integer c_ph_val_old[0:5]; - integer m_ph_val_old; - integer m_ph_val_tmp; - - integer cp_curr_old; - integer cp_curr_val; - integer lfc_old; - integer lfc_val; - reg [9*8:1] lfr_val; - reg [9*8:1] lfr_old; - - reg [31:0] m_hi; - reg [31:0] m_lo; - - // ph tap orig values (POF) - integer c_ph_val_orig[0:5]; - integer m_ph_val_orig; - - reg schedule_vco; - reg stop_vco; - reg inclk_n; - - reg [7:0] vco_out; - reg [7:0] vco_out_last_value; - wire inclk_c0; - wire inclk_c1; - wire inclk_c2; - wire inclk_c3; - wire inclk_c4; - wire inclk_c5; - reg inclk_c0_from_vco; - reg inclk_c1_from_vco; - reg inclk_c2_from_vco; - reg inclk_c3_from_vco; - reg inclk_c4_from_vco; - reg inclk_c5_from_vco; - reg inclk_m_from_vco; - reg inclk_sclkout0_from_vco; - reg inclk_sclkout1_from_vco; - - wire inclk_m; - wire clk0_tmp; - wire clk1_tmp; - wire clk2_tmp; - wire clk3_tmp; - wire clk4_tmp; - wire clk5_tmp; - wire ena_pll; - wire n_cntr_inclk; - reg sclkout0_tmp; - reg sclkout1_tmp; - - reg vco_c0; - reg vco_c1; - - wire clk0; - wire clk1; - wire clk2; - wire clk3; - wire clk4; - wire clk5; - wire sclkout0; - wire sclkout1; - - wire c0_clk; - wire c1_clk; - wire c2_clk; - wire c3_clk; - wire c4_clk; - wire c5_clk; - - reg first_schedule; - - wire enable0_tmp; - wire enable1_tmp; - wire enable_0; - wire enable_1; - reg c0_tmp; - reg c1_tmp; - - reg vco_period_was_phase_adjusted; - reg phase_adjust_was_scheduled; - - wire refclk; - wire fbclk; - - wire pllena_reg; - wire test_mode_inclk; - - // for external feedback mode - - reg [31:0] ext_fbk_cntr_high; - reg [31:0] ext_fbk_cntr_low; - reg [31:0] ext_fbk_cntr_modulus; - reg [8*2:1] ext_fbk_cntr; - reg [8*6:1] ext_fbk_cntr_mode; - integer ext_fbk_cntr_ph; - integer ext_fbk_cntr_initial; - integer ext_fbk_cntr_index; - - // variables for clk_switch - reg clk0_is_bad; - reg clk1_is_bad; - reg inclk0_last_value; - reg inclk1_last_value; - reg other_clock_value; - reg other_clock_last_value; - reg primary_clk_is_bad; - reg current_clk_is_bad; - reg external_switch; - reg [8*6:1] current_clock; - reg active_clock; - reg clkloss_tmp; - reg got_curr_clk_falling_edge_after_clkswitch; - - integer clk0_count; - integer clk1_count; - integer switch_over_count; - - wire scandataout_tmp; - reg scandone_tmp; - reg scandone_tmp_last_value; - integer quiet_time; - integer slowest_clk_old; - integer slowest_clk_new; - - reg reconfig_err; - reg error; - time scanclk_last_rising_edge; - time scanread_active_edge; - reg got_first_scanclk; - reg got_first_gated_scanclk; - reg gated_scanclk; - integer scanclk_period; - reg scanclk_last_value; - reg scanread_reg; - reg scanwrite_reg; - reg scanwrite_enabled; - reg scanwrite_last_value; - reg [173:0] scan_data; - reg [173:0] tmp_scan_data; - reg c0_rising_edge_transfer_done; - reg c1_rising_edge_transfer_done; - reg c2_rising_edge_transfer_done; - reg c3_rising_edge_transfer_done; - reg c4_rising_edge_transfer_done; - reg c5_rising_edge_transfer_done; - reg scanread_setup_violation; - integer index; - integer scanclk_cycles; - reg d_msg; - - integer num_output_cntrs; - reg no_warn; - - // INTERNAL PARAMETERS - parameter GPP_SCAN_CHAIN = 174; - parameter FAST_SCAN_CHAIN = 75; - // primary clk is always inclk0 - parameter primary_clock = "inclk0"; - - // internal variables for scaling of multiply_by and divide_by values - integer i_clk0_mult_by; - integer i_clk0_div_by; - integer i_clk1_mult_by; - integer i_clk1_div_by; - integer i_clk2_mult_by; - integer i_clk2_div_by; - integer i_clk3_mult_by; - integer i_clk3_div_by; - integer i_clk4_mult_by; - integer i_clk4_div_by; - integer i_clk5_mult_by; - integer i_clk5_div_by; - integer max_d_value; - integer new_multiplier; - - // internal variables for storing the phase shift number.(used in lvds mode only) - integer i_clk0_phase_shift; - integer i_clk1_phase_shift; - integer i_clk2_phase_shift; - - // user to advanced internal signals - - integer i_m_initial; - integer i_m; - integer i_n; - integer i_m2; - integer i_n2; - integer i_ss; - integer i_c_high[0:5]; - integer i_c_low[0:5]; - integer i_c_initial[0:5]; - integer i_c_ph[0:5]; - reg [8*6:1] i_c_mode[0:5]; - - integer i_vco_min; - integer i_vco_max; - integer i_vco_center; - integer i_pfd_min; - integer i_pfd_max; - integer i_m_ph; - integer m_ph_val; - reg [8*2:1] i_clk5_counter; - reg [8*2:1] i_clk4_counter; - reg [8*2:1] i_clk3_counter; - reg [8*2:1] i_clk2_counter; - reg [8*2:1] i_clk1_counter; - reg [8*2:1] i_clk0_counter; - integer i_charge_pump_current; - integer i_loop_filter_r; - integer max_neg_abs; - integer output_count; - integer new_divisor; - - integer loop_filter_c_arr[0:3]; - integer fpll_loop_filter_c_arr[0:3]; - integer charge_pump_curr_arr[0:15]; - reg [9*8:1] loop_filter_r_arr[0:39]; - - reg pll_in_test_mode; - reg pll_is_in_reset; - - // uppercase to lowercase parameter values - reg [8*`WORD_LENGTH:1] l_operation_mode; - reg [8*`WORD_LENGTH:1] l_pll_type; - reg [8*`WORD_LENGTH:1] l_qualify_conf_done; - reg [8*`WORD_LENGTH:1] l_compensate_clock; - reg [8*`WORD_LENGTH:1] l_scan_chain; - reg [8*`WORD_LENGTH:1] l_primary_clock; - reg [8*`WORD_LENGTH:1] l_gate_lock_signal; - reg [8*`WORD_LENGTH:1] l_switch_over_on_lossclk; - reg [8*`WORD_LENGTH:1] l_switch_over_type; - reg [8*`WORD_LENGTH:1] l_switch_over_on_gated_lock; - reg [8*`WORD_LENGTH:1] l_enable_switch_over_counter; - reg [8*`WORD_LENGTH:1] l_feedback_source; - reg [8*`WORD_LENGTH:1] l_bandwidth_type; - reg [8*`WORD_LENGTH:1] l_simulation_type; - reg [8*`WORD_LENGTH:1] l_enable0_counter; - reg [8*`WORD_LENGTH:1] l_enable1_counter; - - reg init; - - - // finds the closest integer fraction of a given pair of numerator and denominator. - task find_simple_integer_fraction; - input numerator; - input denominator; - input max_denom; - output fraction_num; - output fraction_div; - parameter max_iter = 20; - - integer numerator; - integer denominator; - integer max_denom; - integer fraction_num; - integer fraction_div; - - integer quotient_array[max_iter-1:0]; - integer int_loop_iter; - integer int_quot; - integer m_value; - integer d_value; - integer old_m_value; - integer swap; - - integer loop_iter; - integer num; - integer den; - integer i_max_iter; - - begin - loop_iter = 0; - num = numerator; - den = denominator; - i_max_iter = max_iter; - - while (loop_iter < i_max_iter) - begin - int_quot = num / den; - quotient_array[loop_iter] = int_quot; - num = num - (den*int_quot); - loop_iter=loop_iter+1; - - if ((num == 0) || (max_denom != -1) || (loop_iter == i_max_iter)) - begin - // calculate the numerator and denominator if there is a restriction on the - // max denom value or if the loop is ending - m_value = 0; - d_value = 1; - // get the rounded value at this stage for the remaining fraction - if (den != 0) - begin - m_value = (2*num/den); - end - // calculate the fraction numerator and denominator at this stage - for (int_loop_iter = loop_iter-1; int_loop_iter >= 0; int_loop_iter=int_loop_iter-1) - begin - if (m_value == 0) - begin - m_value = quotient_array[int_loop_iter]; - d_value = 1; - end - else - begin - old_m_value = m_value; - m_value = quotient_array[int_loop_iter]*m_value + d_value; - d_value = old_m_value; - end - end - // if the denominator is less than the maximum denom_value or if there is no restriction save it - if ((d_value <= max_denom) || (max_denom == -1)) - begin - fraction_num = m_value; - fraction_div = d_value; - end - // end the loop if the denomitor has overflown or the numerator is zero (no remainder during this round) - if (((d_value > max_denom) && (max_denom != -1)) || (num == 0)) - begin - i_max_iter = loop_iter; - end - end - // swap the numerator and denominator for the next round - swap = den; - den = num; - num = swap; - end - end - endtask // find_simple_integer_fraction - - // get the absolute value - function integer abs; - input value; - integer value; - begin - if (value < 0) - abs = value * -1; - else abs = value; - end - endfunction - - // find twice the period of the slowest clock - function integer slowest_clk; - input C0, C0_mode, C1, C1_mode, C2, C2_mode, C3, C3_mode, C4, C4_mode, C5, C5_mode, refclk, m_mod; - integer C0, C1, C2, C3, C4, C5; - reg [8*6:1] C0_mode, C1_mode, C2_mode, C3_mode, C4_mode, C5_mode; - integer refclk; - reg [31:0] m_mod; - integer max_modulus; - begin - max_modulus = 1; - if (C0_mode != "bypass" && C0_mode != " off") - max_modulus = C0; - if (C1 > max_modulus && C1_mode != "bypass" && C1_mode != " off") - max_modulus = C1; - if (C2 > max_modulus && C2_mode != "bypass" && C2_mode != " off") - max_modulus = C2; - if (C3 > max_modulus && C3_mode != "bypass" && C3_mode != " off") - max_modulus = C3; - if (C4 > max_modulus && C4_mode != "bypass" && C4_mode != " off") - max_modulus = C4; - if (C5 > max_modulus && C5_mode != "bypass" && C5_mode != " off") - max_modulus = C5; - - slowest_clk = (refclk * max_modulus *2 / m_mod); - end - endfunction - - // count the number of digits in the given integer - function integer count_digit; - input X; - integer X; - integer count, result; - begin - count = 0; - result = X; - while (result != 0) - begin - result = (result / 10); - count = count + 1; - end - - count_digit = count; - end - endfunction - - // reduce the given huge number(X) to Y significant digits - function integer scale_num; - input X, Y; - integer X, Y; - integer count; - integer fac_ten, lc; - begin - fac_ten = 1; - count = count_digit(X); - - for (lc = 0; lc < (count-Y); lc = lc + 1) - fac_ten = fac_ten * 10; - - scale_num = (X / fac_ten); - end - endfunction - - // find the greatest common denominator of X and Y - function integer gcd; - input X,Y; - integer X,Y; - integer L, S, R, G; - begin - if (X < Y) // find which is smaller. - begin - S = X; - L = Y; - end - else - begin - S = Y; - L = X; - end - - R = S; - while ( R > 1) - begin - S = L; - L = R; - R = S % L; // divide bigger number by smaller. - // remainder becomes smaller number. - end - if (R == 0) // if evenly divisible then L is gcd else it is 1. - G = L; - else - G = R; - gcd = G; - end - endfunction - - // find the least common multiple of A1 to A10 - function integer lcm; - input A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, P; - integer A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, P; - integer M1, M2, M3, M4, M5 , M6, M7, M8, M9, R; - begin - M1 = (A1 * A2)/gcd(A1, A2); - M2 = (M1 * A3)/gcd(M1, A3); - M3 = (M2 * A4)/gcd(M2, A4); - M4 = (M3 * A5)/gcd(M3, A5); - M5 = (M4 * A6)/gcd(M4, A6); - M6 = (M5 * A7)/gcd(M5, A7); - M7 = (M6 * A8)/gcd(M6, A8); - M8 = (M7 * A9)/gcd(M7, A9); - M9 = (M8 * A10)/gcd(M8, A10); - if (M9 < 3) - R = 10; - else if ((M9 <= 10) && (M9 >= 3)) - R = 4 * M9; - else if (M9 > 1000) - R = scale_num(M9, 3); - else - R = M9; - lcm = R; - end - endfunction - - // find the factor of division of the output clock frequency - // compared to the VCO - function integer output_counter_value; - input clk_divide, clk_mult, M, N; - integer clk_divide, clk_mult, M, N; - integer R; - begin - R = (clk_divide * M)/(clk_mult * N); - output_counter_value = R; - end - endfunction - - // find the mode of each of the PLL counters - bypass, even or odd - function [8*6:1] counter_mode; - input duty_cycle; - input output_counter_value; - integer duty_cycle; - integer output_counter_value; - integer half_cycle_high; - reg [8*6:1] R; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - if (output_counter_value == 1) - R = "bypass"; - else if ((half_cycle_high % 2) == 0) - R = " even"; - else - R = " odd"; - counter_mode = R; - end - endfunction - - // find the number of VCO clock cycles to hold the output clock high - function integer counter_high; - input output_counter_value, duty_cycle; - integer output_counter_value, duty_cycle; - integer half_cycle_high; - integer tmp_counter_high; - integer mode; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - mode = ((half_cycle_high % 2) == 0); - tmp_counter_high = half_cycle_high/2; - counter_high = tmp_counter_high + !mode; - end - endfunction - - // find the number of VCO clock cycles to hold the output clock low - function integer counter_low; - input output_counter_value, duty_cycle; - integer output_counter_value, duty_cycle, counter_h; - integer half_cycle_high; - integer mode; - integer tmp_counter_high; - begin - half_cycle_high = (2*duty_cycle*output_counter_value)/100; - mode = ((half_cycle_high % 2) == 0); - tmp_counter_high = half_cycle_high/2; - counter_h = tmp_counter_high + !mode; - counter_low = output_counter_value - counter_h; - end - endfunction - - // find the smallest time delay amongst t1 to t10 - function integer mintimedelay; - input t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer m1,m2,m3,m4,m5,m6,m7,m8,m9; - begin - if (t1 < t2) - m1 = t1; - else - m1 = t2; - if (m1 < t3) - m2 = m1; - else - m2 = t3; - if (m2 < t4) - m3 = m2; - else - m3 = t4; - if (m3 < t5) - m4 = m3; - else - m4 = t5; - if (m4 < t6) - m5 = m4; - else - m5 = t6; - if (m5 < t7) - m6 = m5; - else - m6 = t7; - if (m6 < t8) - m7 = m6; - else - m7 = t8; - if (m7 < t9) - m8 = m7; - else - m8 = t9; - if (m8 < t10) - m9 = m8; - else - m9 = t10; - if (m9 > 0) - mintimedelay = m9; - else - mintimedelay = 0; - end - endfunction - - // find the numerically largest negative number, and return its absolute value - function integer maxnegabs; - input t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer t1, t2, t3, t4, t5, t6, t7, t8, t9, t10; - integer m1,m2,m3,m4,m5,m6,m7,m8,m9; - begin - if (t1 < t2) m1 = t1; else m1 = t2; - if (m1 < t3) m2 = m1; else m2 = t3; - if (m2 < t4) m3 = m2; else m3 = t4; - if (m3 < t5) m4 = m3; else m4 = t5; - if (m4 < t6) m5 = m4; else m5 = t6; - if (m5 < t7) m6 = m5; else m6 = t7; - if (m6 < t8) m7 = m6; else m7 = t8; - if (m7 < t9) m8 = m7; else m8 = t9; - if (m8 < t10) m9 = m8; else m9 = t10; - maxnegabs = (m9 < 0) ? 0 - m9 : 0; - end - endfunction - - // adjust the given tap_phase by adding the largest negative number (ph_base) - function integer ph_adjust; - input tap_phase, ph_base; - integer tap_phase, ph_base; - begin - ph_adjust = tap_phase + ph_base; - end - endfunction - - // find the number of VCO clock cycles to wait initially before the first - // rising edge of the output clock - function integer counter_initial; - input tap_phase, m, n; - integer tap_phase, m, n, phase; - begin - if (tap_phase < 0) tap_phase = 0 - tap_phase; - // adding 0.5 for rounding correction (required in order to round - // to the nearest integer instead of truncating) - phase = ((tap_phase * m) / (360 * n)) + 0.5; - counter_initial = phase; - end - endfunction - - // find which VCO phase tap to align the rising edge of the output clock to - function integer counter_ph; - input tap_phase; - input m,n; - integer m,n, phase; - integer tap_phase; - begin - // adding 0.5 for rounding correction - phase = (tap_phase * m / n) + 0.5; - counter_ph = (phase % 360)/45; - end - endfunction - - // convert the given string to length 6 by padding with spaces - function [8*6:1] translate_string; - input [8*6:1] mode; - reg [8*6:1] new_mode; - begin - if (mode == "bypass") - new_mode = "bypass"; - else if (mode == "even") - new_mode = " even"; - else if (mode == "odd") - new_mode = " odd"; - - translate_string = new_mode; - end - endfunction - - // convert string to integer with sign - function integer str2int; - input [8*16:1] s; - - reg [8*16:1] reg_s; - reg [8:1] digit; - reg [8:1] tmp; - integer m, magnitude; - integer sign; - - begin - sign = 1; - magnitude = 0; - reg_s = s; - for (m=1; m<=16; m=m+1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - // Accumulate ascii digits 0-9 only. - if ((tmp>=48) && (tmp<=57)) - magnitude = (magnitude * 10) + digit; - if (tmp == 45) - sign = -1; // Found a '-' character, i.e. number is negative. - end - str2int = sign*magnitude; - end - endfunction - - // this is for stratixii lvds only - // convert phase delay to integer - function integer get_int_phase_shift; - input [8*16:1] s; - input i_phase_shift; - integer i_phase_shift; - - begin - if (i_phase_shift != 0) - begin - get_int_phase_shift = i_phase_shift; - end - else - begin - get_int_phase_shift = str2int(s); - end - end - endfunction - - // calculate the given phase shift (in ps) in terms of degrees - function integer get_phase_degree; - input phase_shift; - integer phase_shift, result; - begin - result = (phase_shift * 360) / inclk0_input_frequency; - // this is to round up the calculation result - if ( result > 0 ) - result = result + 1; - else if ( result < 0 ) - result = result - 1; - else - result = 0; - - // assign the rounded up result - get_phase_degree = result; - end - endfunction - - // convert uppercase parameter values to lowercase - // assumes that the maximum character length of a parameter is 18 - function [8*`WORD_LENGTH:1] alpha_tolower; - input [8*`WORD_LENGTH:1] given_string; - - reg [8*`WORD_LENGTH:1] return_string; - reg [8*`WORD_LENGTH:1] reg_string; - reg [8:1] tmp; - reg [8:1] conv_char; - integer byte_count; - begin - return_string = " "; // initialise strings to spaces - conv_char = " "; - reg_string = given_string; - for (byte_count = `WORD_LENGTH; byte_count >= 1; byte_count = byte_count - 1) - begin - tmp = reg_string[8*`WORD_LENGTH:(8*(`WORD_LENGTH-1)+1)]; - reg_string = reg_string << 8; - if ((tmp >= 65) && (tmp <= 90)) // ASCII number of 'A' is 65, 'Z' is 90 - begin - conv_char = tmp + 32; // 32 is the difference in the position of 'A' and 'a' in the ASCII char set - return_string = {return_string, conv_char}; - end - else - return_string = {return_string, tmp}; - end - - alpha_tolower = return_string; - end - endfunction - - function integer display_msg; - input [8*2:1] cntr_name; - input msg_code; - integer msg_code; - begin - if (msg_code == 1) - $display ("Warning : %s counter switched from BYPASS mode to enabled. PLL may lose lock.", cntr_name); - else if (msg_code == 2) - $display ("Warning : Illegal 1 value for %s counter. Instead, the %s counter should be BYPASSED. Reconfiguration may not work.", cntr_name, cntr_name); - else if (msg_code == 3) - $display ("Warning : Illegal value for counter %s in BYPASS mode. The LSB of the counter should be set to 0 in order to operate the counter in BYPASS mode. Reconfiguration may not work.", cntr_name); - else if (msg_code == 4) - $display ("Warning : %s counter switched from enabled to BYPASS mode. PLL may lose lock.", cntr_name); - - display_msg = 1; - end - endfunction - - initial - begin - - // convert string parameter values from uppercase to lowercase, - // as expected in this model - l_operation_mode = alpha_tolower(operation_mode); - l_pll_type = alpha_tolower(pll_type); - l_qualify_conf_done = alpha_tolower(qualify_conf_done); - l_compensate_clock = alpha_tolower(compensate_clock); - l_primary_clock = alpha_tolower(primary_clock); - l_gate_lock_signal = alpha_tolower(gate_lock_signal); - l_switch_over_on_lossclk = alpha_tolower(switch_over_on_lossclk); - l_switch_over_on_gated_lock = alpha_tolower(switch_over_on_gated_lock); - l_enable_switch_over_counter = alpha_tolower(enable_switch_over_counter); - l_switch_over_type = alpha_tolower(switch_over_type); - l_feedback_source = alpha_tolower(feedback_source); - l_bandwidth_type = alpha_tolower(bandwidth_type); - l_simulation_type = alpha_tolower(simulation_type); - l_enable0_counter = alpha_tolower(enable0_counter); - l_enable1_counter = alpha_tolower(enable1_counter); - - // initialize charge_pump_current, and loop_filter tables - loop_filter_c_arr[0] = 57; - loop_filter_c_arr[1] = 16; - loop_filter_c_arr[2] = 36; - loop_filter_c_arr[3] = 5; - - fpll_loop_filter_c_arr[0] = 18; - fpll_loop_filter_c_arr[1] = 13; - fpll_loop_filter_c_arr[2] = 8; - fpll_loop_filter_c_arr[3] = 2; - - charge_pump_curr_arr[0] = 6; - charge_pump_curr_arr[1] = 12; - charge_pump_curr_arr[2] = 30; - charge_pump_curr_arr[3] = 36; - charge_pump_curr_arr[4] = 52; - charge_pump_curr_arr[5] = 57; - charge_pump_curr_arr[6] = 72; - charge_pump_curr_arr[7] = 77; - charge_pump_curr_arr[8] = 92; - charge_pump_curr_arr[9] = 96; - charge_pump_curr_arr[10] = 110; - charge_pump_curr_arr[11] = 114; - charge_pump_curr_arr[12] = 127; - charge_pump_curr_arr[13] = 131; - charge_pump_curr_arr[14] = 144; - charge_pump_curr_arr[15] = 148; - - loop_filter_r_arr[0] = " 1.000000"; - loop_filter_r_arr[1] = " 1.500000"; - loop_filter_r_arr[2] = " 2.000000"; - loop_filter_r_arr[3] = " 2.500000"; - loop_filter_r_arr[4] = " 3.000000"; - loop_filter_r_arr[5] = " 3.500000"; - loop_filter_r_arr[6] = " 4.000000"; - loop_filter_r_arr[7] = " 4.500000"; - loop_filter_r_arr[8] = " 5.000000"; - loop_filter_r_arr[9] = " 5.500000"; - loop_filter_r_arr[10] = " 6.000000"; - loop_filter_r_arr[11] = " 6.500000"; - loop_filter_r_arr[12] = " 7.000000"; - loop_filter_r_arr[13] = " 7.500000"; - loop_filter_r_arr[14] = " 8.000000"; - loop_filter_r_arr[15] = " 8.500000"; - loop_filter_r_arr[16] = " 9.000000"; - loop_filter_r_arr[17] = " 9.500000"; - loop_filter_r_arr[18] = "10.000000"; - loop_filter_r_arr[19] = "10.500000"; - loop_filter_r_arr[20] = "11.000000"; - loop_filter_r_arr[21] = "11.500000"; - loop_filter_r_arr[22] = "12.000000"; - loop_filter_r_arr[23] = "12.500000"; - loop_filter_r_arr[24] = "13.000000"; - loop_filter_r_arr[25] = "13.500000"; - loop_filter_r_arr[26] = "14.000000"; - loop_filter_r_arr[27] = "14.500000"; - loop_filter_r_arr[28] = "15.000000"; - loop_filter_r_arr[29] = "15.500000"; - loop_filter_r_arr[30] = "16.000000"; - loop_filter_r_arr[31] = "16.500000"; - loop_filter_r_arr[32] = "17.000000"; - loop_filter_r_arr[33] = "17.500000"; - loop_filter_r_arr[34] = "18.000000"; - loop_filter_r_arr[35] = "18.500000"; - loop_filter_r_arr[36] = "19.000000"; - loop_filter_r_arr[37] = "19.500000"; - loop_filter_r_arr[38] = "20.000000"; - loop_filter_r_arr[39] = "20.500000"; - - if (m == 0) - begin - i_clk5_counter = "c5" ; - i_clk4_counter = "c4" ; - i_clk3_counter = "c3" ; - i_clk2_counter = "c2" ; - i_clk1_counter = "c1" ; - i_clk0_counter = "c0" ; - end - else begin - i_clk5_counter = alpha_tolower(clk5_counter); - i_clk4_counter = alpha_tolower(clk4_counter); - i_clk3_counter = alpha_tolower(clk3_counter); - i_clk2_counter = alpha_tolower(clk2_counter); - i_clk1_counter = alpha_tolower(clk1_counter); - i_clk0_counter = alpha_tolower(clk0_counter); - end - - // VCO feedback loop settings for external feedback mode - // first find which counter is used for feedback - if (l_operation_mode == "external_feedback") - begin - if (l_feedback_source == "clk0") - ext_fbk_cntr = i_clk0_counter; - else if (l_feedback_source == "clk1") - ext_fbk_cntr = i_clk1_counter; - else if (l_feedback_source == "clk2") - ext_fbk_cntr = i_clk2_counter; - else if (l_feedback_source == "clk3") - ext_fbk_cntr = i_clk3_counter; - else if (l_feedback_source == "clk4") - ext_fbk_cntr = i_clk4_counter; - else if (l_feedback_source == "clk5") - ext_fbk_cntr = i_clk5_counter; - else ext_fbk_cntr = "c0"; - - if (ext_fbk_cntr == "c0") - ext_fbk_cntr_index = 0; - else if (ext_fbk_cntr == "c1") - ext_fbk_cntr_index = 1; - else if (ext_fbk_cntr == "c2") - ext_fbk_cntr_index = 2; - else if (ext_fbk_cntr == "c3") - ext_fbk_cntr_index = 3; - else if (ext_fbk_cntr == "c4") - ext_fbk_cntr_index = 4; - else if (ext_fbk_cntr == "c5") - ext_fbk_cntr_index = 5; - end - - if (m == 0) - begin - - // set the limit of the divide_by value that can be returned by - // the following function. - max_d_value = 500; - - // scale down the multiply_by and divide_by values provided by the design - // before attempting to use them in the calculations below - find_simple_integer_fraction(clk0_multiply_by, clk0_divide_by, - max_d_value, i_clk0_mult_by, i_clk0_div_by); - find_simple_integer_fraction(clk1_multiply_by, clk1_divide_by, - max_d_value, i_clk1_mult_by, i_clk1_div_by); - find_simple_integer_fraction(clk2_multiply_by, clk2_divide_by, - max_d_value, i_clk2_mult_by, i_clk2_div_by); - find_simple_integer_fraction(clk3_multiply_by, clk3_divide_by, - max_d_value, i_clk3_mult_by, i_clk3_div_by); - find_simple_integer_fraction(clk4_multiply_by, clk4_divide_by, - max_d_value, i_clk4_mult_by, i_clk4_div_by); - find_simple_integer_fraction(clk5_multiply_by, clk5_divide_by, - max_d_value, i_clk5_mult_by, i_clk5_div_by); - - // convert user parameters to advanced - if (((l_pll_type == "fast") || (l_pll_type == "lvds")) && (vco_multiply_by != 0) && (vco_divide_by != 0)) - begin - i_n = vco_divide_by; - i_m = vco_multiply_by; - end - else begin - i_n = 1; - i_m = lcm (i_clk0_mult_by, i_clk1_mult_by, - i_clk2_mult_by, i_clk3_mult_by, - i_clk4_mult_by, i_clk5_mult_by, - 1, 1, 1, 1, inclk0_input_frequency); - end - - i_c_high[0] = counter_high (output_counter_value(i_clk0_div_by, - i_clk0_mult_by, i_m, i_n), clk0_duty_cycle); - i_c_high[1] = counter_high (output_counter_value(i_clk1_div_by, - i_clk1_mult_by, i_m, i_n), clk1_duty_cycle); - i_c_high[2] = counter_high (output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - i_c_high[3] = counter_high (output_counter_value(i_clk3_div_by, - i_clk3_mult_by, i_m, i_n), clk3_duty_cycle); - i_c_high[4] = counter_high (output_counter_value(i_clk4_div_by, - i_clk4_mult_by, i_m, i_n), clk4_duty_cycle); - i_c_high[5] = counter_high (output_counter_value(i_clk5_div_by, - i_clk5_mult_by, i_m, i_n), clk5_duty_cycle); - - i_c_low[0] = counter_low (output_counter_value(i_clk0_div_by, - i_clk0_mult_by, i_m, i_n), clk0_duty_cycle); - i_c_low[1] = counter_low (output_counter_value(i_clk1_div_by, - i_clk1_mult_by, i_m, i_n), clk1_duty_cycle); - i_c_low[2] = counter_low (output_counter_value(i_clk2_div_by, - i_clk2_mult_by, i_m, i_n), clk2_duty_cycle); - i_c_low[3] = counter_low (output_counter_value(i_clk3_div_by, - i_clk3_mult_by, i_m, i_n), clk3_duty_cycle); - i_c_low[4] = counter_low (output_counter_value(i_clk4_div_by, - i_clk4_mult_by, i_m, i_n), clk4_duty_cycle); - i_c_low[5] = counter_low (output_counter_value(i_clk5_div_by, - i_clk5_mult_by, i_m, i_n), clk5_duty_cycle); - - if (l_pll_type == "flvds") - begin - // Need to readjust phase shift values when the clock multiply value has been readjusted. - new_multiplier = clk0_multiply_by / i_clk0_mult_by; - i_clk0_phase_shift = (clk0_phase_shift_num * new_multiplier); - i_clk1_phase_shift = (clk1_phase_shift_num * new_multiplier); - i_clk2_phase_shift = (clk2_phase_shift_num * new_multiplier); - end - else - begin - i_clk0_phase_shift = get_int_phase_shift(clk0_phase_shift, clk0_phase_shift_num); - i_clk1_phase_shift = get_int_phase_shift(clk1_phase_shift, clk1_phase_shift_num); - i_clk2_phase_shift = get_int_phase_shift(clk2_phase_shift, clk2_phase_shift_num); - end - - max_neg_abs = maxnegabs ( i_clk0_phase_shift, - i_clk1_phase_shift, - i_clk2_phase_shift, - str2int(clk3_phase_shift), - str2int(clk4_phase_shift), - str2int(clk5_phase_shift), - 0, 0, 0, 0); - - i_c_initial[0] = counter_initial(get_phase_degree(ph_adjust(i_clk0_phase_shift, max_neg_abs)), i_m, i_n); - i_c_initial[1] = counter_initial(get_phase_degree(ph_adjust(i_clk1_phase_shift, max_neg_abs)), i_m, i_n); - i_c_initial[2] = counter_initial(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - i_c_initial[3] = counter_initial(get_phase_degree(ph_adjust(str2int(clk3_phase_shift), max_neg_abs)), i_m, i_n); - i_c_initial[4] = counter_initial(get_phase_degree(ph_adjust(str2int(clk4_phase_shift), max_neg_abs)), i_m, i_n); - i_c_initial[5] = counter_initial(get_phase_degree(ph_adjust(str2int(clk5_phase_shift), max_neg_abs)), i_m, i_n); - - i_c_mode[0] = counter_mode(clk0_duty_cycle, output_counter_value(i_clk0_div_by, i_clk0_mult_by, i_m, i_n)); - i_c_mode[1] = counter_mode(clk1_duty_cycle,output_counter_value(i_clk1_div_by, i_clk1_mult_by, i_m, i_n)); - i_c_mode[2] = counter_mode(clk2_duty_cycle,output_counter_value(i_clk2_div_by, i_clk2_mult_by, i_m, i_n)); - i_c_mode[3] = counter_mode(clk3_duty_cycle,output_counter_value(i_clk3_div_by, i_clk3_mult_by, i_m, i_n)); - i_c_mode[4] = counter_mode(clk4_duty_cycle,output_counter_value(i_clk4_div_by, i_clk4_mult_by, i_m, i_n)); - i_c_mode[5] = counter_mode(clk5_duty_cycle,output_counter_value(i_clk5_div_by, i_clk5_mult_by, i_m, i_n)); - - i_m_ph = counter_ph(get_phase_degree(max_neg_abs), i_m, i_n); - i_m_initial = counter_initial(get_phase_degree(max_neg_abs), i_m, i_n); - - i_c_ph[0] = counter_ph(get_phase_degree(ph_adjust(i_clk0_phase_shift, max_neg_abs)), i_m, i_n); - i_c_ph[1] = counter_ph(get_phase_degree(ph_adjust(i_clk1_phase_shift, max_neg_abs)), i_m, i_n); - i_c_ph[2] = counter_ph(get_phase_degree(ph_adjust(i_clk2_phase_shift, max_neg_abs)), i_m, i_n); - i_c_ph[3] = counter_ph(get_phase_degree(ph_adjust(str2int(clk3_phase_shift),max_neg_abs)), i_m, i_n); - i_c_ph[4] = counter_ph(get_phase_degree(ph_adjust(str2int(clk4_phase_shift),max_neg_abs)), i_m, i_n); - i_c_ph[5] = counter_ph(get_phase_degree(ph_adjust(str2int(clk5_phase_shift),max_neg_abs)), i_m, i_n); - - // in external feedback mode, need to adjust M value to take - // into consideration the external feedback counter value - if (l_operation_mode == "external_feedback") - begin - // if there is a negative phase shift, m_initial can only be 1 - if (max_neg_abs > 0) - i_m_initial = 1; - - if (i_c_mode[ext_fbk_cntr_index] == "bypass") - output_count = 1; - else - output_count = i_c_high[ext_fbk_cntr_index] + i_c_low[ext_fbk_cntr_index]; - - if (i_m > output_count) - i_m = i_m / output_count; - else - begin - new_divisor = gcd(i_m, output_count); - i_m = i_m / new_divisor; - i_n = output_count / new_divisor; - end - end - - end - else - begin // m != 0 - - i_n = n; - i_m = m; - i_c_high[0] = c0_high; - i_c_high[1] = c1_high; - i_c_high[2] = c2_high; - i_c_high[3] = c3_high; - i_c_high[4] = c4_high; - i_c_high[5] = c5_high; - i_c_low[0] = c0_low; - i_c_low[1] = c1_low; - i_c_low[2] = c2_low; - i_c_low[3] = c3_low; - i_c_low[4] = c4_low; - i_c_low[5] = c5_low; - i_c_initial[0] = c0_initial; - i_c_initial[1] = c1_initial; - i_c_initial[2] = c2_initial; - i_c_initial[3] = c3_initial; - i_c_initial[4] = c4_initial; - i_c_initial[5] = c5_initial; - i_c_mode[0] = translate_string(alpha_tolower(c0_mode)); - i_c_mode[1] = translate_string(alpha_tolower(c1_mode)); - i_c_mode[2] = translate_string(alpha_tolower(c2_mode)); - i_c_mode[3] = translate_string(alpha_tolower(c3_mode)); - i_c_mode[4] = translate_string(alpha_tolower(c4_mode)); - i_c_mode[5] = translate_string(alpha_tolower(c5_mode)); - i_c_ph[0] = c0_ph; - i_c_ph[1] = c1_ph; - i_c_ph[2] = c2_ph; - i_c_ph[3] = c3_ph; - i_c_ph[4] = c4_ph; - i_c_ph[5] = c5_ph; - i_m_ph = m_ph; // default - i_m_initial = m_initial; - - end // user to advanced conversion - - refclk_period = inclk0_input_frequency * i_n; - - m_times_vco_period = refclk_period; - new_m_times_vco_period = refclk_period; - - fbclk_period = 0; - high_time = 0; - low_time = 0; - schedule_vco = 0; - vco_out[7:0] = 8'b0; - fbclk_last_value = 0; - offset = 0; - temp_offset = 0; - got_first_refclk = 0; - got_first_fbclk = 0; - fbclk_time = 0; - first_fbclk_time = 0; - refclk_time = 0; - first_schedule = 1; - sched_time = 0; - vco_val = 0; - c0_got_first_rising_edge = 0; - c1_got_first_rising_edge = 0; - vco_c0_last_value = 0; - c0_count = 2; - c0_initial_count = 1; - c1_count = 2; - c1_initial_count = 1; - c0_tmp = 0; - c1_tmp = 0; - gate_count = 0; - gate_out = 0; - initial_delay = 0; - fbk_phase = 0; - for (i = 0; i <= 7; i = i + 1) - begin - phase_shift[i] = 0; - last_phase_shift[i] = 0; - end - fbk_delay = 0; - inclk_n = 0; - cycle_to_adjust = 0; - m_delay = 0; - vco_c0 = 0; - vco_c1 = 0; - total_pull_back = 0; - pull_back_M = 0; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - ena_ipd_last_value = 0; - inclk_out_of_range = 0; - scandone_tmp = 0; - schedule_vco_last_value = 0; - - // set initial values for counter parameters - m_initial_val = i_m_initial; - m_val[0] = i_m; - n_val[0] = i_n; - m_ph_val = i_m_ph; - m_ph_val_orig = i_m_ph; - m_ph_val_tmp = i_m_ph; - m_val_tmp[0] = i_m; - - m_val[1] = m2; - n_val[1] = n2; - - if (m_val[0] == 1) - m_mode_val[0] = "bypass"; - else m_mode_val[0] = ""; - if (m_val[1] == 1) - m_mode_val[1] = "bypass"; - if (n_val[0] == 1) - n_mode_val[0] = "bypass"; - if (n_val[1] == 1) - n_mode_val[1] = "bypass"; - - for (i = 0; i < 6; i=i+1) - begin - c_high_val[i] = i_c_high[i]; - c_low_val[i] = i_c_low[i]; - c_initial_val[i] = i_c_initial[i]; - c_mode_val[i] = i_c_mode[i]; - c_ph_val[i] = i_c_ph[i]; - c_high_val_tmp[i] = i_c_high[i]; - c_low_val_tmp[i] = i_c_low[i]; - if (c_mode_val[i] == "bypass") - begin - if (l_pll_type == "fast" || l_pll_type == "lvds") - begin - c_high_val[i] = 5'b10000; - c_low_val[i] = 5'b10000; - c_high_val_tmp[i] = 5'b10000; - c_low_val_tmp[i] = 5'b10000; - end - else begin - c_high_val[i] = 9'b100000000; - c_low_val[i] = 9'b100000000; - c_high_val_tmp[i] = 9'b100000000; - c_low_val_tmp[i] = 9'b100000000; - end - end - - c_mode_val_tmp[i] = i_c_mode[i]; - c_ph_val_tmp[i] = i_c_ph[i]; - - c_ph_val_orig[i] = i_c_ph[i]; - c_high_val_hold[i] = i_c_high[i]; - c_low_val_hold[i] = i_c_low[i]; - c_mode_val_hold[i] = i_c_mode[i]; - end - - lfc_val = loop_filter_c; - lfr_val = loop_filter_r; - cp_curr_val = charge_pump_current; - - i = 0; - j = 0; - inclk_last_value = 0; - - ext_fbk_cntr_ph = 0; - ext_fbk_cntr_initial = 1; - - // initialize clkswitch variables - - clk0_is_bad = 0; - clk1_is_bad = 0; - inclk0_last_value = 0; - inclk1_last_value = 0; - other_clock_value = 0; - other_clock_last_value = 0; - primary_clk_is_bad = 0; - current_clk_is_bad = 0; - external_switch = 0; - current_clock = l_primary_clock; - active_clock = 0; // primary_clk is always inclk0 - if (l_pll_type == "fast") - l_switch_over_type = "manual"; - - if (l_switch_over_type == "manual" && clkswitch_ipd === 1'b1) - begin - current_clock = "inclk1"; - active_clock = 1; - end - clkloss_tmp = 0; - got_curr_clk_falling_edge_after_clkswitch = 0; - clk0_count = 0; - clk1_count = 0; - switch_over_count = 0; - - // initialize reconfiguration variables - // quiet_time - quiet_time = slowest_clk ( c_high_val[0]+c_low_val[0], c_mode_val[0], - c_high_val[1]+c_low_val[1], c_mode_val[1], - c_high_val[2]+c_low_val[2], c_mode_val[2], - c_high_val[3]+c_low_val[3], c_mode_val[3], - c_high_val[4]+c_low_val[4], c_mode_val[4], - c_high_val[5]+c_low_val[5], c_mode_val[5], - refclk_period, m_val[0]); - reconfig_err = 0; - error = 0; - scanread_active_edge = 0; - if ((l_pll_type == "fast") || (l_pll_type == "lvds")) - begin - scan_chain_length = FAST_SCAN_CHAIN; - num_output_cntrs = 4; - end - else - begin - scan_chain_length = GPP_SCAN_CHAIN; - num_output_cntrs = 6; - end - scanread_reg = 0; - scanwrite_reg = 0; - scanwrite_enabled = 0; - c0_rising_edge_transfer_done = 0; - c1_rising_edge_transfer_done = 0; - c2_rising_edge_transfer_done = 0; - c3_rising_edge_transfer_done = 0; - c4_rising_edge_transfer_done = 0; - c5_rising_edge_transfer_done = 0; - got_first_scanclk = 0; - got_first_gated_scanclk = 0; - gated_scanclk = 1; - scanread_setup_violation = 0; - index = 0; - - // initialize the scan_chain contents - // CP/LF bits - scan_data[11:0] = 12'b0; - for (i = 0; i <= 3; i = i + 1) - begin - if ((l_pll_type == "fast") || (l_pll_type == "lvds")) - begin - if (fpll_loop_filter_c_arr[i] == loop_filter_c) - scan_data[11:10] = i; - end - else begin - if (loop_filter_c_arr[i] == loop_filter_c) - scan_data[11:10] = i; - end - end - for (i = 0; i <= 15; i = i + 1) - begin - if (charge_pump_curr_arr[i] == charge_pump_current) - scan_data[3:0] = i; - end - for (i = 0; i <= 39; i = i + 1) - begin - if (loop_filter_r_arr[i] == loop_filter_r) - begin - if ((i >= 16) && (i <= 23)) - scan_data[9:4] = i+8; - else if ((i >= 24) && (i <= 31)) - scan_data[9:4] = i+16; - else if (i >= 32) - scan_data[9:4] = i+24; - else - scan_data[9:4] = i; - end - end - - if (l_pll_type == "fast" || l_pll_type == "lvds") - begin - scan_data[21:12] = 10'b0; // M, C3-C0 ph - // C0-C3 high - scan_data[25:22] = c_high_val[0]; - scan_data[35:32] = c_high_val[1]; - scan_data[45:42] = c_high_val[2]; - scan_data[55:52] = c_high_val[3]; - // C0-C3 low - scan_data[30:27] = c_low_val[0]; - scan_data[40:37] = c_low_val[1]; - scan_data[50:47] = c_low_val[2]; - scan_data[60:57] = c_low_val[3]; - // C0-C3 mode - for (i = 0; i < 4; i = i + 1) - begin - if (c_mode_val[i] == " off" || c_mode_val[i] == "bypass") - begin - scan_data[26 + (10*i)] = 1; - if (c_mode_val[i] == " off") - scan_data[31 + (10*i)] = 1; - else - scan_data[31 + (10*i)] = 0; - end - else begin - scan_data[26 + (10*i)] = 0; - if (c_mode_val[i] == " odd") - scan_data[31 + (10*i)] = 1; - else - scan_data[31 + (10*i)] = 0; - end - end - // M - if (m_mode_val[0] == "bypass") - begin - scan_data[66] = 1; - scan_data[71] = 0; - scan_data[65:62] = 4'b0; - scan_data[70:67] = 4'b0; - end - else begin - scan_data[66] = 0; // set BYPASS bit to 0 - scan_data[70:67] = m_val[0]/2; // set M low - if (m_val[0] % 2 == 0) - begin - // M is an even no. : set M high = low, - // set odd/even bit to 0 - scan_data[65:62] = scan_data[70:67]; - scan_data[71] = 0; - end - else begin // M is odd : M high = low + 1 - scan_data[65:62] = (m_val[0]/2) + 1; - scan_data[71] = 1; - end - end - // N - scan_data[73:72] = n_val[0]; - if (n_mode_val[0] == "bypass") - begin - scan_data[74] = 1; - scan_data[73:72] = 2'b0; - end - end - else begin // PLL type is enhanced/auto - scan_data[25:12] = 14'b0; - - // C5-C0 high - scan_data[33:26] = c_high_val[5]; - scan_data[51:44] = c_high_val[4]; - scan_data[69:62] = c_high_val[3]; - scan_data[87:80] = c_high_val[2]; - scan_data[105:98] = c_high_val[1]; - scan_data[123:116] = c_high_val[0]; - // C5-C0 low - scan_data[42:35] = c_low_val[5]; - scan_data[60:53] = c_low_val[4]; - scan_data[78:71] = c_low_val[3]; - scan_data[96:89] = c_low_val[2]; - scan_data[114:107] = c_low_val[1]; - scan_data[132:125] = c_low_val[0]; - - for (i = 5; i >= 0; i = i - 1) - begin - if (c_mode_val[i] == " off" || c_mode_val[i] == "bypass") - begin - scan_data[124 - (18*i)] = 1; - if (c_mode_val[i] == " off") - scan_data[133 - (18*i)] = 1; - else - scan_data[133 - (18*i)] = 0; - end - else begin - scan_data[124 - (18*i)] = 0; - if (c_mode_val[i] == " odd") - scan_data[133 - (18*i)] = 1; - else - scan_data[133 - (18*i)] = 0; - end - end - - scan_data[142:134] = m_val[0]; - scan_data[143] = 0; - scan_data[152:144] = m_val[1]; - scan_data[153] = 0; - if (m_mode_val[0] == "bypass") - begin - scan_data[143] = 1; - scan_data[142:134] = 9'b0; - end - if (m_mode_val[1] == "bypass") - begin - scan_data[153] = 1; - scan_data[152:144] = 9'b0; - end - - scan_data[162:154] = n_val[0]; - scan_data[172:164] = n_val[1]; - if (n_mode_val[0] == "bypass") - begin - scan_data[163] = 1; - scan_data[162:154] = 9'b0; - end - if (n_mode_val[1] == "bypass") - begin - scan_data[173] = 1; - scan_data[172:164] = 9'b0; - end - end - - // now save this counter's parameters - ext_fbk_cntr_high = c_high_val[ext_fbk_cntr_index]; - ext_fbk_cntr_low = c_low_val[ext_fbk_cntr_index]; - ext_fbk_cntr_ph = c_ph_val[ext_fbk_cntr_index]; - ext_fbk_cntr_initial = c_initial_val[ext_fbk_cntr_index]; - ext_fbk_cntr_mode = c_mode_val[ext_fbk_cntr_index]; - - if (ext_fbk_cntr_mode == "bypass") - ext_fbk_cntr_modulus = 1; - else - ext_fbk_cntr_modulus = ext_fbk_cntr_high + ext_fbk_cntr_low; - - l_index = 1; - stop_vco = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - locked_tmp = 0; - pll_is_locked = 0; - pll_about_to_lock = 0; - no_warn = 1'b0; - - // check if pll is in test mode - if (m_test_source != 5 || c0_test_source != 5 || c1_test_source != 5 || c2_test_source != 5 || c3_test_source != 5 || c4_test_source != 5 || c5_test_source != 5) - pll_in_test_mode = 1'b1; - else - pll_in_test_mode = 1'b0; - - - pll_is_in_reset = 0; - end - - always @(clkswitch_ipd) - begin - if (clkswitch_ipd === 1'b1 && l_switch_over_type == "auto") - external_switch = 1; - else if (l_switch_over_type == "manual") - begin - if (clkswitch_ipd === 1'b1) - begin - current_clock = "inclk1"; - active_clock = 1; - inclk_n = inclk1_ipd; - end - else if (clkswitch_ipd === 1'b0) - begin - current_clock = "inclk0"; - active_clock = 0; - inclk_n = inclk0_ipd; - end - end - end - - always @(inclk0_ipd or inclk1_ipd) - begin - // save the inclk event value - if (inclk0_ipd !== inclk0_last_value) - begin - if (current_clock !== "inclk0") - other_clock_value = inclk0_ipd; - end - if (inclk1_ipd !== inclk1_last_value) - begin - if (current_clock !== "inclk1") - other_clock_value = inclk1_ipd; - end - - // check if either input clk is bad - if (inclk0_ipd === 1'b1 && inclk0_ipd !== inclk0_last_value) - begin - clk0_count = clk0_count + 1; - clk0_is_bad = 0; - clk1_count = 0; - if (clk0_count > 2) - begin - // no event on other clk for 2 cycles - clk1_is_bad = 1; - if (current_clock == "inclk1") - current_clk_is_bad = 1; - end - end - if (inclk1_ipd === 1'b1 && inclk1_ipd !== inclk1_last_value) - begin - clk1_count = clk1_count + 1; - clk1_is_bad = 0; - clk0_count = 0; - if (clk1_count > 2) - begin - // no event on other clk for 2 cycles - clk0_is_bad = 1; - if (current_clock == "inclk0") - current_clk_is_bad = 1; - end - end - - // check if the bad clk is the primary clock, which is always clk0 - if (clk0_is_bad == 1'b1) - primary_clk_is_bad = 1; - else - primary_clk_is_bad = 0; - - // actual switching -- manual switch - if ((inclk0_ipd !== inclk0_last_value) && current_clock == "inclk0") - begin - if (external_switch == 1'b1) - begin - if (!got_curr_clk_falling_edge_after_clkswitch) - begin - if (inclk0_ipd === 1'b0) - got_curr_clk_falling_edge_after_clkswitch = 1; - inclk_n = inclk0_ipd; - end - end - else inclk_n = inclk0_ipd; - end - if ((inclk1_ipd !== inclk1_last_value) && current_clock == "inclk1") - begin - if (external_switch == 1'b1) - begin - if (!got_curr_clk_falling_edge_after_clkswitch) - begin - if (inclk1_ipd === 1'b0) - got_curr_clk_falling_edge_after_clkswitch = 1; - inclk_n = inclk1_ipd; - end - end - else inclk_n = inclk1_ipd; - end - - // actual switching -- automatic switch - if ((other_clock_value == 1'b1) && (other_clock_value != other_clock_last_value) && (l_switch_over_on_lossclk == "on") && l_enable_switch_over_counter == "on" && primary_clk_is_bad) - switch_over_count = switch_over_count + 1; - - if ((other_clock_value == 1'b0) && (other_clock_value != other_clock_last_value)) - begin - if ((external_switch && (got_curr_clk_falling_edge_after_clkswitch || current_clk_is_bad)) || (l_switch_over_on_lossclk == "on" && primary_clk_is_bad && l_pll_type !== "fast" && l_pll_type !== "lvds" && ((l_enable_switch_over_counter == "off" || switch_over_count == switch_over_counter)))) - begin - got_curr_clk_falling_edge_after_clkswitch = 0; - if (current_clock == "inclk0") - current_clock = "inclk1"; - else - current_clock = "inclk0"; - active_clock = ~active_clock; - switch_over_count = 0; - external_switch = 0; - current_clk_is_bad = 0; - end - end - - if (l_switch_over_on_lossclk == "on" && (clkswitch_ipd != 1'b1)) - begin - if (primary_clk_is_bad) - clkloss_tmp = 1; - else - clkloss_tmp = 0; - end - else clkloss_tmp = clkswitch_ipd; - - inclk0_last_value = inclk0_ipd; - inclk1_last_value = inclk1_ipd; - other_clock_last_value = other_clock_value; - - end - - and (clkbad[0], clk0_is_bad, 1'b1); - and (clkbad[1], clk1_is_bad, 1'b1); - and (activeclock, active_clock, 1'b1); - and (clkloss, clkloss_tmp, 1'b1); - - MF_pll_reg ena_reg ( .clk(!inclk_n), - .ena(1'b1), - .d(ena_ipd), - .clrn(1'b1), - .prn(1'b1), - .q(pllena_reg)); - - and (test_mode_inclk, inclk_n, pllena_reg); - assign n_cntr_inclk = (pll_in_test_mode === 1'b1) ? test_mode_inclk : inclk_n; - assign ena_pll = (pll_in_test_mode === 1'b1) ? pllena_reg : ena_ipd; - - assign inclk_m = (m_test_source == 0) ? n_cntr_inclk : l_operation_mode == "external_feedback" ? (l_feedback_source == "clk0" ? clk0_tmp : - l_feedback_source == "clk1" ? clk1_tmp : - l_feedback_source == "clk2" ? clk2_tmp : - l_feedback_source == "clk3" ? clk3_tmp : - l_feedback_source == "clk4" ? clk4_tmp : - l_feedback_source == "clk5" ? clk5_tmp : 'b0) : - inclk_m_from_vco; - - - arm_m_cntr m1 (.clk(inclk_m), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(fbclk), - .initial_value(m_initial_val), - .modulus(m_val[0]), - .time_delay(m_delay)); - - arm_n_cntr n1 (.clk(n_cntr_inclk), - .reset(areset_ipd), - .cout(refclk), - .modulus(n_val[0])); - - - - always @(vco_out) - begin - // check which VCO TAP has event - for (x = 0; x <= 7; x = x + 1) - begin - if (vco_out[x] !== vco_out_last_value[x]) - begin - if (c_ph_val[0] == x) - begin - inclk_c0_from_vco <= vco_out[x]; - if (enable0_counter == "c0") - inclk_sclkout0_from_vco <= vco_out[x]; - if (enable1_counter == "c0") - inclk_sclkout1_from_vco <= vco_out[x]; - end - if (c_ph_val[1] == x) - begin - inclk_c1_from_vco <= vco_out[x]; - if (enable0_counter == "c1") - inclk_sclkout0_from_vco <= vco_out[x]; - if (enable1_counter == "c1") - inclk_sclkout1_from_vco <= vco_out[x]; - end - if (c_ph_val[2] == x) - inclk_c2_from_vco <= vco_out[x]; - if (c_ph_val[3] == x) - inclk_c3_from_vco <= vco_out[x]; - if (c_ph_val[4] == x) - inclk_c4_from_vco <= vco_out[x]; - if (c_ph_val[5] == x) - inclk_c5_from_vco <= vco_out[x]; - if (m_ph_val == x) - inclk_m_from_vco <= vco_out[x]; - end - end - if (scanwrite_enabled === 1'b1) - begin - for (x = 0; x <= 7; x = x + 1) - begin - if ((vco_out[x] === 1'b0) && (vco_out[x] !== vco_out_last_value[x])) - begin - for (y = 0; y <= 5; y = y + 1) - begin - if (c_ph_val[y] == x) - c_ph_val[y] <= c_ph_val_tmp[y]; - end - if (m_ph_val == x) - m_ph_val <= m_ph_val_tmp; - end - end - end - - // reset all counter phase tap values to POF programmed values - if (areset_ipd === 1'b1) - begin - m_ph_val <= m_ph_val_orig; - m_ph_val_tmp <= m_ph_val_orig; - for (i=0; i<= 5; i=i+1) - begin - c_ph_val[i] <= c_ph_val_orig[i]; - c_ph_val_tmp[i] <= c_ph_val_orig[i]; - end - end - - vco_out_last_value = vco_out; - end - - always @(inclk_sclkout0_from_vco) - begin - sclkout0_tmp <= inclk_sclkout0_from_vco; - end - always @(inclk_sclkout1_from_vco) - begin - sclkout1_tmp <= inclk_sclkout1_from_vco; - end - - assign inclk_c0 = (c0_test_source == 0) ? n_cntr_inclk : (c0_test_source == 1) ? refclk : inclk_c0_from_vco; - - arm_scale_cntr c0 (.clk(inclk_c0), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c0_clk), - .high(c_high_val[0]), - .low(c_low_val[0]), - .initial_value(c_initial_val[0]), - .mode(c_mode_val[0]), - .ph_tap(c_ph_val[0])); - - always @(posedge c0_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[0] <= c_high_val_tmp[0]; - c_mode_val_hold[0] <= c_mode_val_tmp[0]; - c_high_val[0] <= c_high_val_hold[0]; - c_mode_val[0] <= c_mode_val_hold[0]; - c0_rising_edge_transfer_done = 1; - end - end - always @(negedge c0_clk) - begin - if (c0_rising_edge_transfer_done) - begin - c_low_val_hold[0] <= c_low_val_tmp[0]; - c_low_val[0] <= c_low_val_hold[0]; - end - end - - assign inclk_c1 = (c1_test_source == 0) ? n_cntr_inclk : (c1_test_source == 2) ? fbclk : (c1_use_casc_in == "on") ? c0_clk : inclk_c1_from_vco; - - arm_scale_cntr c1 (.clk(inclk_c1), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c1_clk), - .high(c_high_val[1]), - .low(c_low_val[1]), - .initial_value(c_initial_val[1]), - .mode(c_mode_val[1]), - .ph_tap(c_ph_val[1])); - - always @(posedge c1_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[1] <= c_high_val_tmp[1]; - c_mode_val_hold[1] <= c_mode_val_tmp[1]; - c_high_val[1] <= c_high_val_hold[1]; - c_mode_val[1] <= c_mode_val_hold[1]; - c1_rising_edge_transfer_done = 1; - end - end - always @(negedge c1_clk) - begin - if (c1_rising_edge_transfer_done) - begin - c_low_val_hold[1] <= c_low_val_tmp[1]; - c_low_val[1] <= c_low_val_hold[1]; - end - end - - assign inclk_c2 = (c2_test_source == 0) ? n_cntr_inclk : (c2_use_casc_in == "on") ? c1_clk : inclk_c2_from_vco; - - arm_scale_cntr c2 (.clk(inclk_c2), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c2_clk), - .high(c_high_val[2]), - .low(c_low_val[2]), - .initial_value(c_initial_val[2]), - .mode(c_mode_val[2]), - .ph_tap(c_ph_val[2])); - - always @(posedge c2_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[2] <= c_high_val_tmp[2]; - c_mode_val_hold[2] <= c_mode_val_tmp[2]; - c_high_val[2] <= c_high_val_hold[2]; - c_mode_val[2] <= c_mode_val_hold[2]; - c2_rising_edge_transfer_done = 1; - end - end - always @(negedge c2_clk) - begin - if (c2_rising_edge_transfer_done) - begin - c_low_val_hold[2] <= c_low_val_tmp[2]; - c_low_val[2] <= c_low_val_hold[2]; - end - end - - assign inclk_c3 = (c3_test_source == 0) ? n_cntr_inclk : (c3_use_casc_in == "on") ? c2_clk : inclk_c3_from_vco; - arm_scale_cntr c3 (.clk(inclk_c3), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c3_clk), - .high(c_high_val[3]), - .low(c_low_val[3]), - .initial_value(c_initial_val[3]), - .mode(c_mode_val[3]), - .ph_tap(c_ph_val[3])); - - always @(posedge c3_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[3] <= c_high_val_tmp[3]; - c_mode_val_hold[3] <= c_mode_val_tmp[3]; - c_high_val[3] <= c_high_val_hold[3]; - c_mode_val[3] <= c_mode_val_hold[3]; - c3_rising_edge_transfer_done = 1; - end - end - always @(negedge c3_clk) - begin - if (c3_rising_edge_transfer_done) - begin - c_low_val_hold[3] <= c_low_val_tmp[3]; - c_low_val[3] <= c_low_val_hold[3]; - end - end - - assign inclk_c4 = (c4_test_source == 0) ? n_cntr_inclk : (c4_use_casc_in == "on") ? c3_clk : inclk_c4_from_vco; - arm_scale_cntr c4 (.clk(inclk_c4), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c4_clk), - .high(c_high_val[4]), - .low(c_low_val[4]), - .initial_value(c_initial_val[4]), - .mode(c_mode_val[4]), - .ph_tap(c_ph_val[4])); - - always @(posedge c4_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[4] <= c_high_val_tmp[4]; - c_mode_val_hold[4] <= c_mode_val_tmp[4]; - c_high_val[4] <= c_high_val_hold[4]; - c_mode_val[4] <= c_mode_val_hold[4]; - c4_rising_edge_transfer_done = 1; - end - end - always @(negedge c4_clk) - begin - if (c4_rising_edge_transfer_done) - begin - c_low_val_hold[4] <= c_low_val_tmp[4]; - c_low_val[4] <= c_low_val_hold[4]; - end - end - - assign inclk_c5 = (c5_test_source == 0) ? n_cntr_inclk : (c5_use_casc_in == "on") ? c4_clk : inclk_c5_from_vco; - arm_scale_cntr c5 (.clk(inclk_c5), - .reset(areset_ipd || (!ena_pll) || stop_vco), - .cout(c5_clk), - .high(c_high_val[5]), - .low(c_low_val[5]), - .initial_value(c_initial_val[5]), - .mode(c_mode_val[5]), - .ph_tap(c_ph_val[5])); - - always @(posedge c5_clk) - begin - if (scanwrite_enabled == 1'b1) - begin - c_high_val_hold[5] <= c_high_val_tmp[5]; - c_mode_val_hold[5] <= c_mode_val_tmp[5]; - c_high_val[5] <= c_high_val_hold[5]; - c_mode_val[5] <= c_mode_val_hold[5]; - c5_rising_edge_transfer_done = 1; - end - end - always @(negedge c5_clk) - begin - if (c5_rising_edge_transfer_done) - begin - c_low_val_hold[5] <= c_low_val_tmp[5]; - c_low_val[5] <= c_low_val_hold[5]; - end - end - - always @(vco_out[c_ph_val[0]] or posedge areset_ipd or negedge ena_pll or stop_vco) - begin - if (areset_ipd == 1'b1 || ena_pll == 1'b0 || stop_vco == 1'b1) - begin - c0_count = 2; - c0_initial_count = 1; - c0_got_first_rising_edge = 0; - - end - else begin - if (c0_got_first_rising_edge == 1'b0) - begin - if (vco_out[c_ph_val[0]] == 1'b1 && vco_out[c_ph_val[0]] != vco_c0_last_value) - begin - if (c0_initial_count == c_initial_val[0]) - c0_got_first_rising_edge = 1; - else - c0_initial_count = c0_initial_count + 1; - end - end - else if (vco_out[c_ph_val[0]] != vco_c0_last_value) - begin - c0_count = c0_count + 1; - if (c0_count == (c_high_val[0] + c_low_val[0]) * 2) - c0_count = 1; - end - if (vco_out[c_ph_val[0]] == 1'b0 && vco_out[c_ph_val[0]] != vco_c0_last_value) - begin - if (c0_count == 1) - begin - c0_tmp = 1; - c0_got_first_rising_edge = 0; - end - else c0_tmp = 0; - end - end - vco_c0_last_value = vco_out[c_ph_val[0]]; - end - - always @(vco_out[c_ph_val[1]] or posedge areset_ipd or negedge ena_pll or stop_vco) - begin - if (areset_ipd == 1'b1 || ena_pll == 1'b0 || stop_vco == 1'b1) - begin - c1_count = 2; - c1_initial_count = 1; - c1_got_first_rising_edge = 0; - end - else begin - if (c1_got_first_rising_edge == 1'b0) - begin - if (vco_out[c_ph_val[1]] == 1'b1 && vco_out[c_ph_val[1]] != vco_c1_last_value) - begin - if (c1_initial_count == c_initial_val[1]) - c1_got_first_rising_edge = 1; - else - c1_initial_count = c1_initial_count + 1; - end - end - else if (vco_out[c_ph_val[1]] != vco_c1_last_value) - begin - c1_count = c1_count + 1; - if (c1_count == (c_high_val[1] + c_low_val[1]) * 2) - c1_count = 1; - end - if (vco_out[c_ph_val[1]] == 1'b0 && vco_out[c_ph_val[1]] != vco_c1_last_value) - begin - if (c1_count == 1) - begin - c1_tmp = 1; - c1_got_first_rising_edge = 0; - end - else c1_tmp = 0; - end - end - vco_c1_last_value = vco_out[c_ph_val[1]]; - end - - assign enable0_tmp = (l_enable0_counter == "c0") ? c0_tmp : c1_tmp; - assign enable1_tmp = (l_enable1_counter == "c0") ? c0_tmp : c1_tmp; - - always @ (inclk_n or ena_pll or areset_ipd) - begin - if (areset_ipd == 1'b1 || ena_pll == 1'b0) - begin - gate_count = 0; - gate_out = 0; - end - else if (inclk_n == 'b1 && inclk_last_value != inclk_n) - begin - gate_count = gate_count + 1; - if (gate_count == gate_lock_counter) - gate_out = 1; - end - inclk_last_value = inclk_n; - end - - assign locked = (l_gate_lock_signal == "yes") ? gate_out && locked_tmp : locked_tmp; - - always @(posedge scanread_ipd) - begin - scanread_active_edge = $time; - end - - always @ (scanclk_ipd) - begin - if (scanclk_ipd === 1'b0 && scanclk_last_value === 1'b1) - begin - // enable scanwrite on falling edge - scanwrite_enabled <= scanwrite_reg; - end - if (scanread_reg === 1'b1) - gated_scanclk <= scanclk_ipd && scanread_reg; - else - gated_scanclk <= 1'b1; - if (scanclk_ipd === 1'b1 && scanclk_last_value === 1'b0) - begin - // register scanread and scanwrite - scanread_reg <= scanread_ipd; - scanwrite_reg <= scanwrite_ipd; - - if (got_first_scanclk) - scanclk_period = $time - scanclk_last_rising_edge; - else begin - got_first_scanclk = 1; - end - // reset got_first_scanclk on falling edge of scanread_reg - if (scanread_ipd == 1'b0 && scanread_reg == 1'b1) - begin - got_first_scanclk = 0; - got_first_gated_scanclk = 0; - end - - scanclk_last_rising_edge = $time; - end - scanclk_last_value = scanclk_ipd; - end - - always @(posedge gated_scanclk) - begin - if ($time > 0) - begin - if (!got_first_gated_scanclk) - begin - got_first_gated_scanclk = 1; -// if ($time - scanread_active_edge < scanclk_period) -// begin -// scanread_setup_violation = 1; -// $display("Warning : SCANREAD must go high at least one cycle before SCANDATA is read in."); -// $display ("Time: %0t Instance: %m", $time); -// end - end - for (j = scan_chain_length-1; j >= 1; j = j - 1) - begin - scan_data[j] = scan_data[j - 1]; - end - scan_data[0] <= scandata_ipd; - end - end - - assign scandataout_tmp = (l_pll_type == "fast" || l_pll_type == "lvds") ? scan_data[FAST_SCAN_CHAIN-1] : scan_data[GPP_SCAN_CHAIN-1]; - - always @(posedge scandone_tmp) - begin - if (reconfig_err == 1'b0) - begin - $display("NOTE : PLL Reprogramming completed with the following values (Values in parantheses are original values) : "); - $display ("Time: %0t Instance: %m", $time); - - $display(" N modulus = %0d (%0d) ", n_val[0], n_val_old[0]); - $display(" M modulus = %0d (%0d) ", m_val[0], m_val_old[0]); - $display(" M ph_tap = %0d (%0d) ", m_ph_val, m_ph_val_old); - if (ss > 0) - begin - $display(" M2 modulus = %0d (%0d) ", m_val[1], m_val_old[1]); - $display(" N2 modulus = %0d (%0d) ", n_val[1], n_val_old[1]); - end - - for (i = 0; i < num_output_cntrs; i=i+1) - begin - $display(" C%0d high = %0d (%0d), C%0d low = %0d (%0d), C%0d mode = %s (%s), C%0d phase tap = %0d (%0d)", i, c_high_val[i], c_high_val_old[i], i, c_low_val_tmp[i], c_low_val_old[i], i, c_mode_val[i], c_mode_val_old[i], i, c_ph_val[i], c_ph_val_old[i]); - end - - // display Charge pump and loop filter values - $display (" Charge Pump Current (uA) = %0d (%0d) ", cp_curr_val, cp_curr_old); - $display (" Loop Filter Capacitor (pF) = %0d (%0d) ", lfc_val, lfc_old); - $display (" Loop Filter Resistor (Kohm) = %s (%s) ", lfr_val, lfr_old); - end - else begin - $display("Warning : Errors were encountered during PLL reprogramming. Please refer to error/warning messages above."); - $display ("Time: %0t Instance: %m", $time); - end - end - - always @(scanwrite_enabled) - begin - if (scanwrite_enabled === 1'b0 && scanwrite_last_value === 1'b1) - begin - // falling edge : deassert scandone - scandone_tmp <= #(1.5*scanclk_period) 1'b0; - // reset counter transfer flags - c0_rising_edge_transfer_done = 0; - c1_rising_edge_transfer_done = 0; - c2_rising_edge_transfer_done = 0; - c3_rising_edge_transfer_done = 0; - c4_rising_edge_transfer_done = 0; - c5_rising_edge_transfer_done = 0; - end - if (scanwrite_enabled === 1'b1 && scanwrite_last_value !== scanwrite_enabled) - begin - - $display ("NOTE : PLL Reprogramming initiated ...."); - $display ("Time: %0t Instance: %m", $time); - - error = 0; - reconfig_err = 0; - scanread_setup_violation = 0; - - // make temp. copy of scan_data for processing - tmp_scan_data = scan_data; - - // save old values - cp_curr_old = cp_curr_val; - lfc_old = lfc_val; - lfr_old = lfr_val; - - // CP - // Bits 0-3 : all values are legal - cp_curr_val = charge_pump_curr_arr[scan_data[3:0]]; - - // LF Resistance : bits 4-9 - // values from 010000 - 010111, 100000 - 100111, - // 110000- 110111 are illegal - if (((tmp_scan_data[9:4] >= 6'b010000) && (tmp_scan_data[9:4] <= 6'b010111)) || - ((tmp_scan_data[9:4] >= 6'b100000) && (tmp_scan_data[9:4] <= 6'b100111)) || - ((tmp_scan_data[9:4] >= 6'b110000) && (tmp_scan_data[9:4] <= 6'b110111))) - begin - $display ("Illegal bit settings for Loop Filter Resistance. Legal bit values range from 000000 to 001111, 011000 to 011111, 101000 to 101111 and 111000 to 111111. Reconfiguration may not work."); - reconfig_err = 1; - end - else begin - i = scan_data[9:4]; - if (i >= 56 ) - i = i - 24; - else if ((i >= 40) && (i <= 47)) - i = i - 16; - else if ((i >= 24) && (i <= 31)) - i = i - 8; - lfr_val = loop_filter_r_arr[i]; - end - - // LF Capacitance : bits 10,11 : all values are legal - if ((l_pll_type == "fast") || (l_pll_type == "lvds")) - lfc_val = fpll_loop_filter_c_arr[scan_data[11:10]]; - else - lfc_val = loop_filter_c_arr[scan_data[11:10]]; - - // save old values for display info. - for (i=0; i<=1; i=i+1) - begin - m_val_old[i] = m_val[i]; - n_val_old[i] = n_val[i]; - m_mode_val_old[i] = m_mode_val[i]; - n_mode_val_old[i] = n_mode_val[i]; - end - m_ph_val_old = m_ph_val; - for (i=0; i<=5; i=i+1) - begin - c_high_val_old[i] = c_high_val[i]; - c_low_val_old[i] = c_low_val[i]; - c_ph_val_old[i] = c_ph_val[i]; - c_mode_val_old[i] = c_mode_val[i]; - end - - // first the M counter phase : bit order same for fast and GPP - if (scan_data[12] == 1'b0) - begin - // do nothing - end - else if (scan_data[12] === 1'b1 && scan_data[13] === 1'b1) - begin - m_ph_val_tmp = m_ph_val_tmp + 1; - if (m_ph_val_tmp > 7) - m_ph_val_tmp = 0; - end - else if (scan_data[12] === 1'b1 && scan_data[13] === 1'b0) - begin - m_ph_val_tmp = m_ph_val_tmp - 1; - if (m_ph_val_tmp < 0) - m_ph_val_tmp = 7; - end - else begin - $display ("Warning : Illegal bit settings for M counter phase tap. Reconfiguration may not work."); - reconfig_err = 1; - end - - // read the fast PLL bits. - if (l_pll_type == "fast" || l_pll_type == "lvds") - begin - // C3-C0 phase bits - for (i = 3; i >= 0; i=i-1) - begin - if (tmp_scan_data[14] == 1'b0) - begin - // do nothing - end - else if (tmp_scan_data[14] === 1'b1) - begin - if (tmp_scan_data[15] === 1'b1) - begin - c_ph_val_tmp[i] = c_ph_val_tmp[i] + 1; - if (c_ph_val_tmp[i] > 7) - c_ph_val_tmp[i] = 0; - end - else if (tmp_scan_data[15] === 1'b0) - begin - c_ph_val_tmp[i] = c_ph_val_tmp[i] - 1; - if (c_ph_val_tmp[i] < 0) - c_ph_val_tmp[i] = 7; - end - end - tmp_scan_data = tmp_scan_data >> 2; - end - // C0-C3 counter moduli - tmp_scan_data = scan_data; - for (i = 0; i < 4; i=i+1) - begin - if (tmp_scan_data[26] == 1'b1) - begin - c_mode_val_tmp[i] = "bypass"; - if (tmp_scan_data[31] === 1'b1) - begin - c_mode_val_tmp[i] = " off"; - $display("Warning : The specified bit settings will turn OFF the C%0d counter. It cannot be turned on unless the part is re-initialized.", i); - end - end - else if (tmp_scan_data[31] == 1'b1) - c_mode_val_tmp[i] = " odd"; - else - c_mode_val_tmp[i] = " even"; - if (tmp_scan_data[25:22] === 4'b0000) - c_high_val_tmp[i] = 5'b10000; - else - c_high_val_tmp[i] = tmp_scan_data[25:22]; - if (tmp_scan_data[30:27] === 4'b0000) - c_low_val_tmp[i] = 5'b10000; - else - c_low_val_tmp[i] = tmp_scan_data[30:27]; - - tmp_scan_data = tmp_scan_data >> 10; - end - // M - error = 0; - // some temporary storage - if (scan_data[65:62] == 4'b0000) - m_hi = 5'b10000; - else - m_hi = scan_data[65:62]; - - if (scan_data[70:67] == 4'b0000) - m_lo = 5'b10000; - else - m_lo = scan_data[70:67]; - - m_val_tmp[0] = m_hi + m_lo; - if (scan_data[66] === 1'b1) - begin - if (scan_data[71] === 1'b1) - begin - // this will turn off the M counter : error - reconfig_err = 1; - error = 1; - $display ("The specified bit settings will turn OFF the M counter. This is illegal. Reconfiguration may not work."); - end - else begin - // M counter is being bypassed - if (m_mode_val[0] !== "bypass") - begin - // Mode is switched : give warning - d_msg = display_msg(" M", 4); - end - m_val_tmp[0] = 32'b1; - m_mode_val[0] = "bypass"; - end - end - else begin - if (m_mode_val[0] === "bypass") - begin - // Mode is switched : give warning - d_msg = display_msg(" M", 1); - end - m_mode_val[0] = ""; - if (scan_data[71] === 1'b1) - begin - // odd : check for duty cycle, if not 50% -- error - if (m_hi - m_lo !== 1) - begin - reconfig_err = 1; - $display ("Warning : The M counter of the StratixII Fast PLL should be configured for 50%% duty cycle only. In this case the HIGH and LOW moduli programmed will result in a duty cycle other than 50%%, which is illegal. Reconfiguration may not work"); - end - end - else begin // even mode - if (m_hi !== m_lo) - begin - reconfig_err = 1; - $display ("Warning : The M counter of the StratixII Fast PLL should be configured for 50%% duty cycle only. In this case the HIGH and LOW moduli programmed will result in a duty cycle other than 50%%, which is illegal. Reconfiguration may not work"); - end - end - end - - // N - error = 0; - n_val[0] = scan_data[73:72]; - if (scan_data[74] !== 1'b1) - begin - if (scan_data[73:72] == 2'b01) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - d_msg = display_msg(" N", 2); - end - else if (scan_data[73:72] == 2'b00) - n_val[0] = 3'b100; - if (error == 1'b0) - begin - if (n_mode_val[0] === "bypass") - begin - // Mode is switched : give warning - d_msg = display_msg(" N", 1); - end - n_mode_val[0] = ""; - end - end - else if (scan_data[74] == 1'b1) // bypass - begin - if (scan_data[72] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - d_msg = display_msg(" N", 3); - end - else begin - if (n_mode_val[0] != "bypass") - begin - // Mode is switched : give warning - d_msg = display_msg(" N", 4); - end - n_val[0] = 2'b01; - n_mode_val[0] = "bypass"; - end - end - end - else begin // pll type is auto or enhanced - for (i = 0; i < 6; i=i+1) - begin - if (tmp_scan_data[124] == 1'b1) - begin - c_mode_val_tmp[i] = "bypass"; - if (tmp_scan_data[133] === 1'b1) - begin - c_mode_val_tmp[i] = " off"; - $display("Warning : The specified bit settings will turn OFF the C%0d counter. It cannot be turned on unless the part is re-initialized.", i); - end - end - else if (tmp_scan_data[133] == 1'b1) - c_mode_val_tmp[i] = " odd"; - else - c_mode_val_tmp[i] = " even"; - if (tmp_scan_data[123:116] === 8'b00000000) - c_high_val_tmp[i] = 9'b100000000; - else - c_high_val_tmp[i] = tmp_scan_data[123:116]; - if (tmp_scan_data[132:125] === 8'b00000000) - c_low_val_tmp[i] = 9'b100000000; - else - c_low_val_tmp[i] = tmp_scan_data[132:125]; - - tmp_scan_data = tmp_scan_data << 18; - end - - // the phase_taps - tmp_scan_data = scan_data; - for (i = 0; i < 6; i=i+1) - begin - if (tmp_scan_data[14] == 1'b0) - begin - // do nothing - end - else if (tmp_scan_data[14] === 1'b1) - begin - if (tmp_scan_data[15] === 1'b1) - begin - c_ph_val_tmp[i] = c_ph_val_tmp[i] + 1; - if (c_ph_val_tmp[i] > 7) - c_ph_val_tmp[i] = 0; - end - else if (tmp_scan_data[15] === 1'b0) - begin - c_ph_val_tmp[i] = c_ph_val_tmp[i] - 1; - if (c_ph_val_tmp[i] < 0) - c_ph_val_tmp[i] = 7; - end - end - tmp_scan_data = tmp_scan_data >> 2; - end - ext_fbk_cntr_high = c_high_val[ext_fbk_cntr_index]; - ext_fbk_cntr_low = c_low_val[ext_fbk_cntr_index]; - ext_fbk_cntr_ph = c_ph_val[ext_fbk_cntr_index]; - ext_fbk_cntr_mode = c_mode_val[ext_fbk_cntr_index]; - - // cntrs M/M2 - tmp_scan_data = scan_data; - for (i=0; i<2; i=i+1) - begin - if (i == 0 || (i == 1 && ss > 0)) - begin - error = 0; - m_val_tmp[i] = tmp_scan_data[142:134]; - if (tmp_scan_data[143] !== 1'b1) - begin - if (tmp_scan_data[142:134] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - if (i == 0) - d_msg = display_msg(" M", 2); - else - d_msg = display_msg("M2", 2); - end - else if (tmp_scan_data[142:134] == 9'b000000000) - m_val_tmp[i] = 10'b1000000000; - if (error == 1'b0) - begin - if (m_mode_val[i] === "bypass") - begin - // Mode is switched : give warning - if (i == 0) - d_msg = display_msg(" M", 1); - else - d_msg = display_msg("M2", 1); - end - m_mode_val[i] = ""; - end - end - else if (tmp_scan_data[143] == 1'b1) - begin - if (tmp_scan_data[134] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - if (i == 0) - d_msg = display_msg(" M", 3); - else - d_msg = display_msg("M2", 3); - end - else begin - if (m_mode_val[i] !== "bypass") - begin - // Mode is switched: give warning - if (i == 0) - d_msg = display_msg(" M", 4); - else - d_msg = display_msg("M2", 4); - end - m_val_tmp[i] = 10'b0000000001; - m_mode_val[i] = "bypass"; - end - end - end - tmp_scan_data = tmp_scan_data >> 10; - end - if (ss > 0) - begin - if (m_mode_val[0] != m_mode_val[1]) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Incompatible modes for M/M2 counters. Either both should be BYASSED or both NON-BYPASSED. Reconfiguration may not work."); - end - end - - // cntrs N/N2 - tmp_scan_data = scan_data; - for (i=0; i<2; i=i+1) - begin - if (i == 0 || (i == 1 && ss > 0)) - begin - error = 0; - n_val[i] = tmp_scan_data[162:154]; - if (tmp_scan_data[163] !== 1'b1) - begin - if (tmp_scan_data[162:154] == 9'b000000001) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - if (i == 0) - d_msg = display_msg(" N", 2); - else - d_msg = display_msg("N2", 2); - end - else if (tmp_scan_data[162:154] == 9'b000000000) - n_val[i] = 10'b1000000000; - if (error == 1'b0) - begin - if (n_mode_val[i] === "bypass") - begin - // Mode is switched : give warning - if (i == 0) - d_msg = display_msg(" N", 1); - else - d_msg = display_msg("N2", 1); - end - n_mode_val[i] = ""; - end - end - else if (tmp_scan_data[163] == 1'b1) // bypass - begin - if (tmp_scan_data[154] !== 1'b0) - begin - reconfig_err = 1; - error = 1; - // Cntr value is illegal : give warning - if (i == 0) - d_msg = display_msg(" N", 3); - else - d_msg = display_msg("N2", 3); - end - else begin - if (n_mode_val[i] != "bypass") - begin - // Mode is switched : give warning - if (i == 0) - d_msg = display_msg(" N", 4); - else - d_msg = display_msg("N2", 4); - end - n_val[i] = 10'b0000000001; - n_mode_val[i] = "bypass"; - end - end - end - tmp_scan_data = tmp_scan_data >> 10; - end - if (ss > 0) - begin - if (n_mode_val[0] != n_mode_val[1]) - begin - reconfig_err = 1; - error = 1; - $display ("Warning : Incompatible modes for N/N2 counters. Either both should be BYASSED or both NON-BYPASSED. Reconfiguration may not work."); - end - end - end - - slowest_clk_old = slowest_clk ( c_high_val[0]+c_low_val[0], c_mode_val[0], - c_high_val[1]+c_low_val[1], c_mode_val[1], - c_high_val[2]+c_low_val[2], c_mode_val[2], - c_high_val[3]+c_low_val[3], c_mode_val[3], - c_high_val[4]+c_low_val[4], c_mode_val[4], - c_high_val[5]+c_low_val[5], c_mode_val[5], - refclk_period, m_val[0]); - - slowest_clk_new = slowest_clk ( c_high_val_tmp[0]+c_low_val[0], c_mode_val_tmp[0], - c_high_val_tmp[1]+c_low_val[1], c_mode_val_tmp[1], - c_high_val_tmp[2]+c_low_val[2], c_mode_val_tmp[2], - c_high_val_tmp[3]+c_low_val[3], c_mode_val_tmp[3], - c_high_val_tmp[4]+c_low_val[4], c_mode_val_tmp[4], - c_high_val_tmp[5]+c_low_val[5], c_mode_val_tmp[5], - refclk_period, m_val[0]); - - quiet_time = (slowest_clk_new > slowest_clk_old) ? slowest_clk_new : slowest_clk_old; - - // get quiet time in terms of scanclk cycles - my_rem = quiet_time % scanclk_period; - scanclk_cycles = quiet_time/scanclk_period; - if (my_rem != 0) - scanclk_cycles = scanclk_cycles + 1; - - scandone_tmp <= #((scanclk_cycles+0.5) * scanclk_period) 1'b1; - end - - scanwrite_last_value = scanwrite_enabled; - end - - always @(schedule_vco or areset_ipd or ena_pll) - begin - sched_time = 0; - - for (i = 0; i <= 7; i=i+1) - last_phase_shift[i] = phase_shift[i]; - - cycle_to_adjust = 0; - l_index = 1; - m_times_vco_period = new_m_times_vco_period; - - // give appropriate messages - // if areset was asserted - if (areset_ipd === 1'b1 && areset_ipd_last_value !== areset_ipd) - begin - $display (" Note : PLL was reset"); - $display ("Time: %0t Instance: %m", $time); - // reset lock parameters - locked_tmp = 0; - pll_is_locked = 0; - pll_about_to_lock = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - end - - // if ena was deasserted - if (ena_pll == 1'b0 && ena_ipd_last_value !== ena_pll) - begin - $display (" Note : PLL was disabled"); - $display ("Time: %0t Instance: %m", $time); - end - - // illegal value on areset_ipd - if (areset_ipd === 1'bx && (areset_ipd_last_value === 1'b0 || areset_ipd_last_value === 1'b1)) - begin - $display("Warning : Illegal value 'X' detected on ARESET input"); - $display ("Time: %0t Instance: %m", $time); - end - - if ((schedule_vco !== schedule_vco_last_value) && (areset_ipd == 1'b1 || ena_pll == 1'b0 || stop_vco == 1'b1)) - begin - - if (areset_ipd === 1'b1) - pll_is_in_reset = 1; - - // drop VCO taps to 0 - for (i = 0; i <= 7; i=i+1) - begin - for (j = 0; j <= last_phase_shift[i] + 1; j=j+1) - vco_out[i] <= #(j) 1'b0; - phase_shift[i] = 0; - last_phase_shift[i] = 0; - end - - // reset lock parameters - locked_tmp = 0; - pll_is_locked = 0; - pll_about_to_lock = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - - got_first_refclk = 0; - got_second_refclk = 0; - refclk_time = 0; - got_first_fbclk = 0; - fbclk_time = 0; - first_fbclk_time = 0; - fbclk_period = 0; - - first_schedule = 1; - vco_val = 0; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - - // reset all counter phase tap values to POF programmed values - m_ph_val = m_ph_val_orig; - for (i=0; i<= 5; i=i+1) - c_ph_val[i] = c_ph_val_orig[i]; - - end else if (ena_pll === 1'b1 && areset_ipd === 1'b0 && stop_vco === 1'b0) - begin - // else note areset deassert time - // note it as refclk_time to prevent false triggering - // of stop_vco after areset - if (areset_ipd === 1'b0 && areset_ipd_last_value === 1'b1 && pll_is_in_reset === 1'b1) - begin - refclk_time = $time; - pll_is_in_reset = 0; - end - - // calculate loop_xplier : this will be different from m_val in ext. fbk mode - loop_xplier = m_val[0]; - loop_initial = i_m_initial - 1; - loop_ph = m_ph_val; - - if (l_operation_mode == "external_feedback") - begin - if (ext_fbk_cntr_mode == "bypass") - ext_fbk_cntr_modulus = 1; - else - ext_fbk_cntr_modulus = ext_fbk_cntr_high + ext_fbk_cntr_low; - - loop_xplier = m_val[0] * (ext_fbk_cntr_modulus); - loop_ph = ext_fbk_cntr_ph; - loop_initial = ext_fbk_cntr_initial - 1 + ((i_m_initial - 1) * ext_fbk_cntr_modulus); - end - - // convert initial value to delay - initial_delay = (loop_initial * m_times_vco_period)/loop_xplier; - - // convert loop ph_tap to delay - rem = m_times_vco_period % loop_xplier; - vco_per = m_times_vco_period/loop_xplier; - if (rem != 0) - vco_per = vco_per + 1; - fbk_phase = (loop_ph * vco_per)/8; - - if (l_operation_mode == "external_feedback") - begin - pull_back_M = (i_m_initial - 1) * (ext_fbk_cntr_modulus) * (m_times_vco_period/loop_xplier); - - while (pull_back_M > refclk_period) - pull_back_M = pull_back_M - refclk_period; - end - else begin - pull_back_M = initial_delay + fbk_phase; - end - - total_pull_back = pull_back_M; - if (l_simulation_type == "timing") - total_pull_back = total_pull_back + pll_compensation_delay; - - while (total_pull_back > refclk_period) - total_pull_back = total_pull_back - refclk_period; - - if (total_pull_back > 0) - offset = refclk_period - total_pull_back; - else - offset = 0; - - if (l_operation_mode == "external_feedback") - begin - fbk_delay = pull_back_M; - if (l_simulation_type == "timing") - fbk_delay = fbk_delay + pll_compensation_delay; - end - else begin - fbk_delay = total_pull_back - fbk_phase; - if (fbk_delay < 0) - begin - offset = offset - fbk_phase; - fbk_delay = total_pull_back; - end - end - - // assign m_delay - m_delay = fbk_delay; - - for (i = 1; i <= loop_xplier; i=i+1) - begin - // adjust cycles - tmp_vco_per = m_times_vco_period/loop_xplier; - if (rem != 0 && l_index <= rem) - begin - tmp_rem = (loop_xplier * l_index) % rem; - cycle_to_adjust = (loop_xplier * l_index) / rem; - if (tmp_rem != 0) - cycle_to_adjust = cycle_to_adjust + 1; - end - if (cycle_to_adjust == i) - begin - tmp_vco_per = tmp_vco_per + 1; - l_index = l_index + 1; - end - - // calculate high and low periods - high_time = tmp_vco_per/2; - if (tmp_vco_per % 2 != 0) - high_time = high_time + 1; - low_time = tmp_vco_per - high_time; - - // schedule the rising and falling egdes - for (j=0; j<=1; j=j+1) - begin - vco_val = ~vco_val; - if (vco_val == 1'b0) - sched_time = sched_time + high_time; - else - sched_time = sched_time + low_time; - - // schedule taps with appropriate phase shifts - for (k = 0; k <= 7; k=k+1) - begin - phase_shift[k] = (k*tmp_vco_per)/8; - if (first_schedule) - vco_out[k] <= #(sched_time + phase_shift[k]) vco_val; - else - vco_out[k] <= #(sched_time + last_phase_shift[k]) vco_val; - end - end - end - if (first_schedule) - begin - vco_val = ~vco_val; - if (vco_val == 1'b0) - sched_time = sched_time + high_time; - else - sched_time = sched_time + low_time; - for (k = 0; k <= 7; k=k+1) - begin - phase_shift[k] = (k*tmp_vco_per)/8; - vco_out[k] <= #(sched_time+phase_shift[k]) vco_val; - end - first_schedule = 0; - end - - schedule_vco <= #(sched_time) ~schedule_vco; - if (vco_period_was_phase_adjusted) - begin - m_times_vco_period = refclk_period; - new_m_times_vco_period = refclk_period; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 1; - - tmp_vco_per = m_times_vco_period/loop_xplier; - for (k = 0; k <= 7; k=k+1) - phase_shift[k] = (k*tmp_vco_per)/8; - end - end - - areset_ipd_last_value = areset_ipd; - ena_ipd_last_value = ena_pll; - schedule_vco_last_value = schedule_vco; - - end - - always @(pfdena_ipd) - begin - if (pfdena_ipd === 1'b0) - begin - if (pll_is_locked) - locked_tmp = 1'bx; - pll_is_locked = 0; - cycles_to_lock = 0; - $display (" Note : PFDENA was deasserted"); - $display ("Time: %0t Instance: %m", $time); - end - else if (pfdena_ipd === 1'b1 && pfdena_ipd_last_value === 1'b0) - begin - // PFD was disabled, now enabled again - got_first_refclk = 0; - got_second_refclk = 0; - refclk_time = $time; - end - pfdena_ipd_last_value = pfdena_ipd; - end - - always @(negedge refclk or negedge fbclk) - begin - refclk_last_value = refclk; - fbclk_last_value = fbclk; - end - - always @(posedge refclk or posedge fbclk) - begin - if (refclk == 1'b1 && refclk_last_value !== refclk && areset_ipd === 1'b0) - begin - if (! got_first_refclk) - begin - got_first_refclk = 1; - end else - begin - got_second_refclk = 1; - refclk_period = $time - refclk_time; - - // check if incoming freq. will cause VCO range to be - // exceeded - if ((vco_max != 0 && vco_min != 0) && (pfdena_ipd === 1'b1) && - ((refclk_period/loop_xplier > vco_max) || - (refclk_period/loop_xplier < vco_min)) ) - begin - if (pll_is_locked == 1'b1) - begin - $display ("Warning : Input clock freq. is not within VCO range. PLL may lose lock"); - $display ("Time: %0t Instance: %m", $time); - if (inclk_out_of_range === 1'b1) - begin - // unlock - pll_is_locked = 0; - locked_tmp = 0; - pll_about_to_lock = 0; - cycles_to_lock = 0; - $display ("Note : PLL lost lock"); - $display ("Time: %0t Instance: %m", $time); - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - end - end - else begin - if (no_warn == 1'b0) - begin - $display ("Warning : Input clock freq. is not within VCO range. PLL may not lock"); - $display ("Time: %0t Instance: %m", $time); - no_warn = 1'b1; - end - end - inclk_out_of_range = 1; - end - else begin - inclk_out_of_range = 0; - end - - end - if (stop_vco == 1'b1) - begin - stop_vco = 0; - schedule_vco = ~schedule_vco; - end - refclk_time = $time; - end - - if (fbclk == 1'b1 && fbclk_last_value !== fbclk) - begin - if (scanwrite_enabled === 1'b1) - begin - m_val[0] <= m_val_tmp[0]; - m_val[1] <= m_val_tmp[1]; - end - if (!got_first_fbclk) - begin - got_first_fbclk = 1; - first_fbclk_time = $time; - end - else - fbclk_period = $time - fbclk_time; - - // need refclk_period here, so initialized to proper value above - if ( ( ($time - refclk_time > 1.5 * refclk_period) && pfdena_ipd === 1'b1 && pll_is_locked === 1'b1) || ( ($time - refclk_time > 5 * refclk_period) && pfdena_ipd === 1'b1) ) - begin - stop_vco = 1; - // reset - got_first_refclk = 0; - got_first_fbclk = 0; - got_second_refclk = 0; - if (pll_is_locked == 1'b1) - begin - pll_is_locked = 0; - locked_tmp = 0; - $display ("Note : PLL lost lock due to loss of input clock"); - $display ("Time: %0t Instance: %m", $time); - end - pll_about_to_lock = 0; - cycles_to_lock = 0; - cycles_to_unlock = 0; - first_schedule = 1; - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - end - fbclk_time = $time; - end - - if (got_second_refclk && pfdena_ipd === 1'b1 && (!inclk_out_of_range)) - begin - // now we know actual incoming period - if (abs(fbclk_time - refclk_time) <= 5 || (got_first_fbclk && abs(refclk_period - abs(fbclk_time - refclk_time)) <= 5)) - begin - // considered in phase - if (cycles_to_lock == valid_lock_multiplier - 1) - pll_about_to_lock <= 1; - if (cycles_to_lock == valid_lock_multiplier) - begin - if (pll_is_locked === 1'b0) - begin - $display (" Note : PLL locked to incoming clock"); - $display ("Time: %0t Instance: %m", $time); - end - pll_is_locked = 1; - locked_tmp = 1; - cycles_to_unlock = 0; - end - // increment lock counter only if the second part of the above - // time check is not true - if (!(abs(refclk_period - abs(fbclk_time - refclk_time)) <= 5)) - begin - cycles_to_lock = cycles_to_lock + 1; - end - - // adjust m_times_vco_period - new_m_times_vco_period = refclk_period; - - end else - begin - // if locked, begin unlock - if (pll_is_locked) - begin - cycles_to_unlock = cycles_to_unlock + 1; - if (cycles_to_unlock == invalid_lock_multiplier) - begin - pll_is_locked = 0; - locked_tmp = 0; - pll_about_to_lock = 0; - cycles_to_lock = 0; - $display ("Note : PLL lost lock"); - $display ("Time: %0t Instance: %m", $time); - vco_period_was_phase_adjusted = 0; - phase_adjust_was_scheduled = 0; - end - end - if (abs(refclk_period - fbclk_period) <= 2) - begin - // frequency is still good - if ($time == fbclk_time && (!phase_adjust_was_scheduled)) - begin - if (abs(fbclk_time - refclk_time) > refclk_period/2) - begin - new_m_times_vco_period = m_times_vco_period + (refclk_period - abs(fbclk_time - refclk_time)); - vco_period_was_phase_adjusted = 1; - end else - begin - new_m_times_vco_period = m_times_vco_period - abs(fbclk_time - refclk_time); - vco_period_was_phase_adjusted = 1; - end - end - end else - begin - new_m_times_vco_period = refclk_period; - phase_adjust_was_scheduled = 0; - end - end - end - - if (reconfig_err == 1'b1) - begin - locked_tmp = 0; - end - - refclk_last_value = refclk; - fbclk_last_value = fbclk; - end - - assign clk0_tmp = i_clk0_counter == "c0" ? c0_clk : i_clk0_counter == "c1" ? c1_clk : i_clk0_counter == "c2" ? c2_clk : i_clk0_counter == "c3" ? c3_clk : i_clk0_counter == "c4" ? c4_clk : i_clk0_counter == "c5" ? c5_clk : 'b0; - - assign clk0 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk0_tmp : 'bx; - - - assign clk1_tmp = i_clk1_counter == "c0" ? c0_clk : i_clk1_counter == "c1" ? c1_clk : i_clk1_counter == "c2" ? c2_clk : i_clk1_counter == "c3" ? c3_clk : i_clk1_counter == "c4" ? c4_clk : i_clk1_counter == "c5" ? c5_clk : 'b0; - - assign clk1 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk1_tmp : 'bx; - - - assign clk2_tmp = i_clk2_counter == "c0" ? c0_clk : i_clk2_counter == "c1" ? c1_clk : i_clk2_counter == "c2" ? c2_clk : i_clk2_counter == "c3" ? c3_clk : i_clk2_counter == "c4" ? c4_clk : i_clk2_counter == "c5" ? c5_clk : 'b0; - - assign clk2 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk2_tmp : 'bx; - - - assign clk3_tmp = i_clk3_counter == "c0" ? c0_clk : i_clk3_counter == "c1" ? c1_clk : i_clk3_counter == "c2" ? c2_clk : i_clk3_counter == "c3" ? c3_clk : i_clk3_counter == "c4" ? c4_clk : i_clk3_counter == "c5" ? c5_clk : 'b0; - - assign clk3 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk3_tmp : 'bx; - - - assign clk4_tmp = i_clk4_counter == "c0" ? c0_clk : i_clk4_counter == "c1" ? c1_clk : i_clk4_counter == "c2" ? c2_clk : i_clk4_counter == "c3" ? c3_clk : i_clk4_counter == "c4" ? c4_clk : i_clk4_counter == "c5" ? c5_clk : 'b0; - - assign clk4 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk4_tmp : 'bx; - - - assign clk5_tmp = i_clk5_counter == "c0" ? c0_clk : i_clk5_counter == "c1" ? c1_clk : i_clk5_counter == "c2" ? c2_clk : i_clk5_counter == "c3" ? c3_clk : i_clk5_counter == "c4" ? c4_clk : i_clk5_counter == "c5" ? c5_clk : 'b0; - - assign clk5 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode === 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? clk5_tmp : 'bx; - - assign sclkout0 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode == 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? sclkout0_tmp : 1'bx; - - assign sclkout1 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode == 1'b1) || (pll_about_to_lock == 1'b1 && !reconfig_err) ? sclkout1_tmp : 1'bx; - - assign enable_0 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode == 1'b1) || pll_about_to_lock == 1'b1 ? enable0_tmp : 'bx; - assign enable_1 = (areset_ipd === 1'b1 || ena_pll === 1'b0 || pll_in_test_mode == 1'b1) || pll_about_to_lock == 1'b1 ? enable1_tmp : 'bx; - - - // ACCELERATE OUTPUTS - and (clk[0], 1'b1, clk0); - and (clk[1], 1'b1, clk1); - and (clk[2], 1'b1, clk2); - and (clk[3], 1'b1, clk3); - and (clk[4], 1'b1, clk4); - and (clk[5], 1'b1, clk5); - - and (sclkout[0], 1'b1, sclkout0); - and (sclkout[1], 1'b1, sclkout1); - - and (enable0, 1'b1, enable_0); - and (enable1, 1'b1, enable_1); - - and (scandataout, 1'b1, scandataout_tmp); - and (scandone, 1'b1, scandone_tmp); - -endmodule // MF_stratixii_pll - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTPLL -// -// Description : Phase-Locked Loop (PLL) behavioral model. Model supports basic -// PLL features such as clock division and multiplication, -// programmable duty cycle and phase shifts, various feedback modes -// and clock delays. Also supports real-time reconfiguration of -// PLL "parameters" and clock switchover between the 2 input -// reference clocks. Up to 10 clock outputs may be used. -// -// Limitations : Applicable to Stratix, Stratix-GX, Stratix II and Cyclone II device families only -// There is no support in the model for spread-spectrum feature -// -// Expected results : Up to 10 output clocks, each defined by its own set of -// parameters. Locked output (active high) indicates when the -// PLL locks. clkbad, clkloss and activeclock are used for -// clock switchover to inidicate which input clock has gone -// bad, when the clock switchover initiates and which input -// clock is being used as the reference, respectively. -// scandataout is the data output of the serial scan chain. - -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1ps - -// MODULE DECLARATION -module altpll ( - inclk, // input reference clock - up to 2 can be used - fbin, // external feedback input port - pllena, // PLL enable signal - clkswitch, // switch between inclk0 and inclk1 - areset, // asynchronous reset - pfdena, // enable the Phase Frequency Detector (PFD) - clkena, // enable clk0 to clk5 clock outputs - extclkena, // enable extclk0 to extclk3 clock outputs - scanclk, // clock for the serial scan chain - scanaclr, // asynchronous clear the serial scan chain - scanread, // determines when the scan chain can read in data from the scandata port - scanwrite, // determines when the scan chain can write out data into pll - scandata, // data for the scan chain - clk, // internal clock outputs (feeds the core) - extclk, // external clock outputs (feeds pins) - clkbad, // indicates if inclk0/inclk1 has gone bad - enable0, // load enable pulse 0 for lvds - enable1, // load enable pulse l for lvds - activeclock, // indicates which input clock is being used - clkloss, // indicates when clock switchover initiates - locked, // indicates when the PLL locks onto the input clock - scandataout, // data output of the serial scan chain - scandone, // indicates when pll reconfiguration is complete - sclkout0, // serial clock output 0 for lvds - sclkout1 // serial clock output 1 for lvds -); - -// GLOBAL PARAMETER DECLARATION -parameter intended_device_family = "Stratix" ; -parameter operation_mode = "NORMAL" ; -parameter pll_type = "AUTO" ; -parameter qualify_conf_done = "OFF" ; -parameter compensate_clock = "CLK0" ; -parameter scan_chain = "LONG"; -parameter primary_clock = "inclk0"; -parameter inclk0_input_frequency = 1000; -parameter inclk1_input_frequency = 0; -parameter gate_lock_signal = "NO"; -parameter gate_lock_counter = 0; -parameter lock_high = 1; -parameter lock_low = 5; -parameter valid_lock_multiplier = 1; -parameter invalid_lock_multiplier = 5; -parameter switch_over_type = "AUTO"; -parameter switch_over_on_lossclk = "OFF" ; -parameter switch_over_on_gated_lock = "OFF" ; -parameter enable_switch_over_counter = "OFF"; -parameter switch_over_counter = 0; -parameter feedback_source = "EXTCLK0" ; -parameter bandwidth = 0; -parameter bandwidth_type = "UNUSED"; -parameter lpm_hint = "UNUSED"; -parameter spread_frequency = 0; -parameter down_spread = "0.0"; -parameter self_reset_on_gated_loss_lock = "OFF"; - -// simulation-only parameters -parameter simulation_type = "functional"; -parameter source_is_pll = "off"; - -parameter skip_vco = "off"; - -// internal clock specifications -parameter clk5_multiply_by = 1; -parameter clk4_multiply_by = 1; -parameter clk3_multiply_by = 1; -parameter clk2_multiply_by = 1; -parameter clk1_multiply_by = 1; -parameter clk0_multiply_by = 1; -parameter clk5_divide_by = 1; -parameter clk4_divide_by = 1; -parameter clk3_divide_by = 1; -parameter clk2_divide_by = 1; -parameter clk1_divide_by = 1; -parameter clk0_divide_by = 1; -parameter clk5_phase_shift = "0"; -parameter clk4_phase_shift = "0"; -parameter clk3_phase_shift = "0"; -parameter clk2_phase_shift = "0"; -parameter clk1_phase_shift = "0"; -parameter clk0_phase_shift = "0"; - -parameter clk5_time_delay = "0"; // For stratix pll use only -parameter clk4_time_delay = "0"; // For stratix pll use only -parameter clk3_time_delay = "0"; // For stratix pll use only -parameter clk2_time_delay = "0"; // For stratix pll use only -parameter clk1_time_delay = "0"; // For stratix pll use only -parameter clk0_time_delay = "0"; // For stratix pll use only -parameter clk5_duty_cycle = 50; -parameter clk4_duty_cycle = 50; -parameter clk3_duty_cycle = 50; -parameter clk2_duty_cycle = 50; -parameter clk1_duty_cycle = 50; -parameter clk0_duty_cycle = 50; - -parameter clk2_output_frequency = 0; -parameter clk1_output_frequency = 0; -parameter clk0_output_frequency = 0; - -// external clock specifications (for stratix pll use only) -parameter extclk3_multiply_by = 1; -parameter extclk2_multiply_by = 1; -parameter extclk1_multiply_by = 1; -parameter extclk0_multiply_by = 1; -parameter extclk3_divide_by = 1; -parameter extclk2_divide_by = 1; -parameter extclk1_divide_by = 1; -parameter extclk0_divide_by = 1; -parameter extclk3_phase_shift = "0"; -parameter extclk2_phase_shift = "0"; -parameter extclk1_phase_shift = "0"; -parameter extclk0_phase_shift = "0"; -parameter extclk3_time_delay = "0"; -parameter extclk2_time_delay = "0"; -parameter extclk1_time_delay = "0"; -parameter extclk0_time_delay = "0"; -parameter extclk3_duty_cycle = 50; -parameter extclk2_duty_cycle = 50; -parameter extclk1_duty_cycle = 50; -parameter extclk0_duty_cycle = 50; - -// The following 4 parameters are for Stratix II pll in lvds mode only -parameter vco_multiply_by = 0; -parameter vco_divide_by = 0; -parameter sclkout0_phase_shift = "0"; -parameter sclkout1_phase_shift = "0"; - -// advanced user parameters -parameter vco_min = 0; -parameter vco_max = 0; -parameter vco_center = 0; -parameter pfd_min = 0; -parameter pfd_max = 0; -parameter m_initial = 1; -parameter m = 0; // m must default to 0 in order for altpll to calculate advanced parameters for itself -parameter n = 1; -parameter m2 = 1; -parameter n2 = 1; -parameter ss = 0; -parameter l0_high = 1; -parameter l1_high = 1; -parameter g0_high = 1; -parameter g1_high = 1; -parameter g2_high = 1; -parameter g3_high = 1; -parameter e0_high = 1; -parameter e1_high = 1; -parameter e2_high = 1; -parameter e3_high = 1; -parameter l0_low = 1; -parameter l1_low = 1; -parameter g0_low = 1; -parameter g1_low = 1; -parameter g2_low = 1; -parameter g3_low = 1; -parameter e0_low = 1; -parameter e1_low = 1; -parameter e2_low = 1; -parameter e3_low = 1; -parameter l0_initial = 1; -parameter l1_initial = 1; -parameter g0_initial = 1; -parameter g1_initial = 1; -parameter g2_initial = 1; -parameter g3_initial = 1; -parameter e0_initial = 1; -parameter e1_initial = 1; -parameter e2_initial = 1; -parameter e3_initial = 1; -parameter l0_mode = "bypass"; -parameter l1_mode = "bypass"; -parameter g0_mode = "bypass"; -parameter g1_mode = "bypass"; -parameter g2_mode = "bypass"; -parameter g3_mode = "bypass"; -parameter e0_mode = "bypass"; -parameter e1_mode = "bypass"; -parameter e2_mode = "bypass"; -parameter e3_mode = "bypass"; -parameter l0_ph = 0; -parameter l1_ph = 0; -parameter g0_ph = 0; -parameter g1_ph = 0; -parameter g2_ph = 0; -parameter g3_ph = 0; -parameter e0_ph = 0; -parameter e1_ph = 0; -parameter e2_ph = 0; -parameter e3_ph = 0; -parameter m_ph = 0; -parameter l0_time_delay = 0; -parameter l1_time_delay = 0; -parameter g0_time_delay = 0; -parameter g1_time_delay = 0; -parameter g2_time_delay = 0; -parameter g3_time_delay = 0; -parameter e0_time_delay = 0; -parameter e1_time_delay = 0; -parameter e2_time_delay = 0; -parameter e3_time_delay = 0; -parameter m_time_delay = 0; -parameter n_time_delay = 0; -parameter extclk3_counter = "e3" ; -parameter extclk2_counter = "e2" ; -parameter extclk1_counter = "e1" ; -parameter extclk0_counter = "e0" ; -parameter clk5_counter = "l1" ; -parameter clk4_counter = "l0" ; -parameter clk3_counter = "g3" ; -parameter clk2_counter = "g2" ; -parameter clk1_counter = "g1" ; -parameter clk0_counter = "g0" ; -parameter enable0_counter = "l0"; -parameter enable1_counter = "l0"; -parameter charge_pump_current = 2; -parameter loop_filter_r = "1.0"; -parameter loop_filter_c = 5; -parameter vco_post_scale = 0; -parameter lpm_type = "altpll"; - -// The following parameter are used to define the connectivity for some of the input -// and output ports. -parameter port_clkena0 = "PORT_CONNECTIVITY"; -parameter port_clkena1 = "PORT_CONNECTIVITY"; -parameter port_clkena2 = "PORT_CONNECTIVITY"; -parameter port_clkena3 = "PORT_CONNECTIVITY"; -parameter port_clkena4 = "PORT_CONNECTIVITY"; -parameter port_clkena5 = "PORT_CONNECTIVITY"; -parameter port_extclkena0 = "PORT_CONNECTIVITY"; -parameter port_extclkena1 = "PORT_CONNECTIVITY"; -parameter port_extclkena2 = "PORT_CONNECTIVITY"; -parameter port_extclkena3 = "PORT_CONNECTIVITY"; -parameter port_extclk0 = "PORT_CONNECTIVITY"; -parameter port_extclk1 = "PORT_CONNECTIVITY"; -parameter port_extclk2 = "PORT_CONNECTIVITY"; -parameter port_extclk3 = "PORT_CONNECTIVITY"; -parameter port_clk0 = "PORT_CONNECTIVITY"; -parameter port_clk1 = "PORT_CONNECTIVITY"; -parameter port_clk2 = "PORT_CONNECTIVITY"; -parameter port_clk3 = "PORT_CONNECTIVITY"; -parameter port_clk4 = "PORT_CONNECTIVITY"; -parameter port_clk5 = "PORT_CONNECTIVITY"; -parameter port_scandata = "PORT_CONNECTIVITY"; -parameter port_scandataout = "PORT_CONNECTIVITY"; -parameter port_scandone = "PORT_CONNECTIVITY"; -parameter port_sclkout1 = "PORT_CONNECTIVITY"; -parameter port_sclkout0 = "PORT_CONNECTIVITY"; -parameter port_clkbad0 = "PORT_CONNECTIVITY"; -parameter port_clkbad1 = "PORT_CONNECTIVITY"; -parameter port_activeclock = "PORT_CONNECTIVITY"; -parameter port_clkloss = "PORT_CONNECTIVITY"; -parameter port_inclk1 = "PORT_CONNECTIVITY"; -parameter port_inclk0 = "PORT_CONNECTIVITY"; -parameter port_fbin = "PORT_CONNECTIVITY"; -parameter port_pllena = "PORT_CONNECTIVITY"; -parameter port_clkswitch = "PORT_CONNECTIVITY"; -parameter port_areset = "PORT_CONNECTIVITY"; -parameter port_pfdena = "PORT_CONNECTIVITY"; -parameter port_scanclk = "PORT_CONNECTIVITY"; -parameter port_scanaclr = "PORT_CONNECTIVITY"; -parameter port_scanread = "PORT_CONNECTIVITY"; -parameter port_scanwrite = "PORT_CONNECTIVITY"; -parameter port_enable0 = "PORT_CONNECTIVITY"; -parameter port_enable1 = "PORT_CONNECTIVITY"; - -//For Stratixii pll use only -parameter c0_high = 1; -parameter c1_high = 1; -parameter c2_high = 1; -parameter c3_high = 1; -parameter c4_high = 1; -parameter c5_high = 1; -parameter c0_low = 1; -parameter c1_low = 1; -parameter c2_low = 1; -parameter c3_low = 1; -parameter c4_low = 1; -parameter c5_low = 1; -parameter c0_initial = 1; -parameter c1_initial = 1; -parameter c2_initial = 1; -parameter c3_initial = 1; -parameter c4_initial = 1; -parameter c5_initial = 1; -parameter c0_mode = "bypass"; -parameter c1_mode = "bypass"; -parameter c2_mode = "bypass"; -parameter c3_mode = "bypass"; -parameter c4_mode = "bypass"; -parameter c5_mode = "bypass"; -parameter c0_ph = 0; -parameter c1_ph = 0; -parameter c2_ph = 0; -parameter c3_ph = 0; -parameter c4_ph = 0; -parameter c5_ph = 0; -parameter c1_use_casc_in = "off"; -parameter c2_use_casc_in = "off"; -parameter c3_use_casc_in = "off"; -parameter c4_use_casc_in = "off"; -parameter c5_use_casc_in = "off"; -parameter m_test_source = 5; -parameter c0_test_source = 5; -parameter c1_test_source = 5; -parameter c2_test_source = 5; -parameter c3_test_source = 5; -parameter c4_test_source = 5; -parameter c5_test_source = 5; - -// INPUT PORT DECLARATION -input [1:0] inclk; -input fbin; -input pllena; -input clkswitch; -input areset; -input pfdena; -input [5:0] clkena; -input [3:0] extclkena; -input scanclk; -input scanaclr; -input scanread; -input scanwrite; -input scandata; - -// OUTPUT PORT DECLARATION -output [5:0] clk; -output [3:0] extclk; -output [1:0] clkbad; -output activeclock; -output enable0; -output enable1; -output clkloss; -output locked; -output scandataout; -output scandone; -output sclkout0; -output sclkout1; - -// pullups -tri1 fbin_pullup; -tri1 ena_pullup; -tri1 pfdena_pullup; -tri1 [5:0] clkena_pullup; -tri1 [3:0] extclkena_pullup; - -// pulldowns -tri0 [1:0] inclk_pulldown; -tri0 clkswitch_pulldown; -tri0 areset_pulldown; -tri0 scanclk_pulldown; -tri0 scanclr_pulldown; -tri0 scanread_pulldown; -tri0 scanwrite_pulldown; -tri0 scandata_pulldown; -tri0 comparator_pulldown; - -// For fast mode, the stratix pll atom model will give active low signal on locked output. -// Therefore, need to invert the lock signal for fast mode as in user view, locked signal is -// always active high. -wire locked_tmp; -wire [1:0] stratix_inclk; -wire stratix_fbin; -wire stratix_ena; -wire stratix_clkswitch; -wire stratix_areset; -wire stratix_pfdena; -wire [5:0] stratix_clkena; -wire [3:0] stratix_extclkena; -wire stratix_scanclk; -wire stratix_scanclr; -wire stratix_scandata; -wire [5:0] stratix_clk; -wire [3:0] stratix_extclk; -wire [1:0] stratix_clkbad; -wire stratix_activeclock; -wire stratix_locked; -wire stratix_clkloss; -wire stratix_scandataout; -wire stratix_enable0; -wire stratix_enable1; - -wire [1:0] stratixii_inclk; -wire stratixii_fbin; -wire stratixii_ena; -wire stratixii_clkswitch; -wire stratixii_areset; -wire stratixii_pfdena; -wire stratixii_scanread; -wire stratixii_scanwrite; -wire stratixii_scanclk; -wire stratixii_scandata; -wire stratixii_scandone; -wire [5:0] stratixii_clk; -wire [1:0] stratixii_clkbad; -wire stratixii_activeclock; -wire stratixii_locked; -wire stratixii_clkloss; -wire stratixii_scandataout; -wire stratixii_enable0; -wire stratixii_enable1; -wire stratixii_sclkout0; -wire stratixii_sclkout1; - -wire[5:0] clk_wire; -wire[1:0] clkbad_wire; -wire activeclock_wire; -wire clkloss_wire; -wire scandataout_wire; -wire scandone_wire; -wire sclkout0_wire; -wire sclkout1_wire; - -ALTERA_DEVICE_FAMILIES dev (); - -// INITIAL BLOCK -initial -begin - - // Begin of parameter checking - - if (clk5_multiply_by <= 0) - begin - $display("ERROR: The clk5_multiply_by must be greater than 0"); - $stop; - end - - if (clk4_multiply_by <= 0) - begin - $display("ERROR: The clk4_multiply_by must be greater than 0"); - $stop; - end - - if (clk3_multiply_by <= 0) - begin - $display("ERROR: The clk3_multiply_by must be greater than 0"); - $stop; - end - - - if (clk2_multiply_by <= 0) - begin - $display("ERROR: The clk2_multiply_by must be greater than 0"); - $stop; - end - - if (clk1_multiply_by <= 0) - begin - $display("ERROR: The clk1_multiply_by must be greater than 0"); - $stop; - end - - if (clk0_multiply_by <= 0) - begin - $display("ERROR: The clk0_multiply_by must be greater than 0"); - $stop; - end - - if (clk5_divide_by <= 0) - begin - $display("ERROR: The clk5_divide_by must be greater than 0"); - $stop; - end - - - if (clk4_divide_by <= 0) - begin - $display("ERROR: The clk4_divide_by must be greater than 0"); - $stop; - end - - - if (clk3_divide_by <= 0) - begin - $display("ERROR: The clk3_divide_by must be greater than 0"); - $stop; - end - - - if (clk2_divide_by <= 0) - begin - $display("ERROR: The clk2_divide_by must be greater than 0"); - $stop; - end - - - if (clk1_divide_by <= 0) - begin - $display("ERROR: The clk1_divide_by must be greater than 0"); - $stop; - end - - - if (clk0_divide_by <= 0) - begin - $display("ERROR: The clk0_divide_by must be greater than 0"); - $stop; - end - - if (extclk3_multiply_by <= 0) - begin - $display("ERROR: The extclk3_multiply_by must be greater than 0"); - $stop; - end - - if (extclk2_multiply_by <= 0) - begin - $display("ERROR: The extclk2_multiply_by must be greater than 0"); - $stop; - end - - if (extclk1_multiply_by <= 0) - begin - $display("ERROR: The extclk1_multiply_by must be greater than 0"); - $stop; - end - - if (extclk0_multiply_by <= 0) - begin - $display("ERROR: The extclk0_multiply_by must be greater than 0"); - $stop; - end - - - if (extclk3_divide_by <= 0) - begin - $display("ERROR: The extclk3_divide_by must be greater than 0"); - $stop; - end - - - if (extclk2_divide_by <= 0) - begin - $display("ERROR: The extclk2_divide_by must be greater than 0"); - $stop; - end - - - if (extclk1_divide_by <= 0) - begin - $display("ERROR: The extclk1_divide_by must be greater than 0"); - $stop; - end - - - if (extclk0_divide_by <= 0) - begin - $display("ERROR: The extclk0_divide_by must be greater than 0"); - $stop; - end - - if (!((primary_clock == "inclk0") || (primary_clock == "INCLK0") || - (primary_clock == "inclk1") || (primary_clock == "INCLK1"))) - begin - $display("ERROR: The primary clock is set to an illegal value"); - $stop; - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $stop; - end - // End of parameter checking - -end - -// COMPONENT INSTANTIATION -MF_stratix_pll pll0 -( - .inclk (stratix_inclk), - .fbin (stratix_fbin), - .ena (stratix_ena), - .clkswitch (stratix_clkswitch), - .areset (stratix_areset), - .pfdena (stratix_pfdena), - .clkena (stratix_clkena), - .extclkena (stratix_extclkena), - .scanclk (stratix_scanclk), - .scanaclr (stratix_scanclr), - .scandata (stratix_scandata), - .comparator(), - .clk (stratix_clk), - .extclk (stratix_extclk), - .clkbad (stratix_clkbad), - .activeclock (stratix_activeclock), - .locked (locked_tmp), - .clkloss (stratix_clkloss), - .scandataout (stratix_scandataout), - .enable0 (stratix_enable0), - .enable1 (stratix_enable1) -); - defparam - pll0.operation_mode = operation_mode, - pll0.pll_type = pll_type, - pll0.qualify_conf_done = qualify_conf_done, - pll0.compensate_clock = compensate_clock, - pll0.scan_chain = scan_chain, - pll0.primary_clock = primary_clock, - pll0.inclk0_input_frequency = inclk0_input_frequency, - pll0.inclk1_input_frequency = inclk1_input_frequency, - pll0.gate_lock_signal = gate_lock_signal, - pll0.gate_lock_counter = gate_lock_counter, - pll0.valid_lock_multiplier = valid_lock_multiplier, - pll0.invalid_lock_multiplier = invalid_lock_multiplier, - pll0.switch_over_on_lossclk = switch_over_on_lossclk, - pll0.switch_over_on_gated_lock = switch_over_on_gated_lock, - pll0.enable_switch_over_counter = enable_switch_over_counter, - pll0.switch_over_counter = switch_over_counter, - pll0.feedback_source = feedback_source, - pll0.bandwidth = bandwidth, - pll0.bandwidth_type = bandwidth_type, - pll0.spread_frequency = spread_frequency, - pll0.down_spread = down_spread, - pll0.simulation_type = simulation_type, - pll0.skip_vco = skip_vco, - - // internal clock specifications - pll0.clk5_multiply_by = clk5_multiply_by, - pll0.clk4_multiply_by = clk4_multiply_by, - pll0.clk3_multiply_by = clk3_multiply_by, - pll0.clk2_multiply_by = clk2_multiply_by, - pll0.clk1_multiply_by = clk1_multiply_by, - pll0.clk0_multiply_by = clk0_multiply_by, - pll0.clk5_divide_by = clk5_divide_by, - pll0.clk4_divide_by = clk4_divide_by, - pll0.clk3_divide_by = clk3_divide_by, - pll0.clk2_divide_by = clk2_divide_by, - pll0.clk1_divide_by = clk1_divide_by, - pll0.clk0_divide_by = clk0_divide_by, - pll0.clk5_phase_shift = clk5_phase_shift, - pll0.clk4_phase_shift = clk4_phase_shift, - pll0.clk3_phase_shift = clk3_phase_shift, - pll0.clk2_phase_shift = clk2_phase_shift, - pll0.clk1_phase_shift = clk1_phase_shift, - pll0.clk0_phase_shift = clk0_phase_shift, - pll0.clk5_time_delay = clk5_time_delay, - pll0.clk4_time_delay = clk4_time_delay, - pll0.clk3_time_delay = clk3_time_delay, - pll0.clk2_time_delay = clk2_time_delay, - pll0.clk1_time_delay = clk1_time_delay, - pll0.clk0_time_delay = clk0_time_delay, - pll0.clk5_duty_cycle = clk5_duty_cycle, - pll0.clk4_duty_cycle = clk4_duty_cycle, - pll0.clk3_duty_cycle = clk3_duty_cycle, - pll0.clk2_duty_cycle = clk2_duty_cycle, - pll0.clk1_duty_cycle = clk1_duty_cycle, - pll0.clk0_duty_cycle = clk0_duty_cycle, - - // external clock specifications - pll0.extclk3_multiply_by = extclk3_multiply_by, - pll0.extclk2_multiply_by = extclk2_multiply_by, - pll0.extclk1_multiply_by = extclk1_multiply_by, - pll0.extclk0_multiply_by = extclk0_multiply_by, - pll0.extclk3_divide_by = extclk3_divide_by, - pll0.extclk2_divide_by = extclk2_divide_by, - pll0.extclk1_divide_by = extclk1_divide_by, - pll0.extclk0_divide_by = extclk0_divide_by, - pll0.extclk3_phase_shift = extclk3_phase_shift, - pll0.extclk2_phase_shift = extclk2_phase_shift, - pll0.extclk1_phase_shift = extclk1_phase_shift, - pll0.extclk0_phase_shift = extclk0_phase_shift, - pll0.extclk3_time_delay = extclk3_time_delay, - pll0.extclk2_time_delay = extclk2_time_delay, - pll0.extclk1_time_delay = extclk1_time_delay, - pll0.extclk0_time_delay = extclk0_time_delay, - pll0.extclk3_duty_cycle = extclk3_duty_cycle, - pll0.extclk2_duty_cycle = extclk2_duty_cycle, - pll0.extclk1_duty_cycle = extclk1_duty_cycle, - pll0.extclk0_duty_cycle = extclk0_duty_cycle, - - // advanced parameters - pll0.vco_min = vco_min, - pll0.vco_max = vco_max, - pll0.vco_center = vco_center, - pll0.pfd_min = pfd_min, - pll0.pfd_max = pfd_max, - pll0.m_initial = m_initial, - pll0.m = m, - pll0.n = n, - pll0.m2 = m2, - pll0.n2 = n2, - pll0.ss = ss, - pll0.l0_high = l0_high, - pll0.l1_high = l1_high, - pll0.g0_high = g0_high, - pll0.g1_high = g1_high, - pll0.g2_high = g2_high, - pll0.g3_high = g3_high, - pll0.e0_high = e0_high, - pll0.e1_high = e1_high, - pll0.e2_high = e2_high, - pll0.e3_high = e3_high, - pll0.l0_low = l0_low, - pll0.l1_low = l1_low, - pll0.g0_low = g0_low, - pll0.g1_low = g1_low, - pll0.g2_low = g2_low, - pll0.g3_low = g3_low, - pll0.e0_low = e0_low, - pll0.e1_low = e1_low, - pll0.e2_low = e2_low, - pll0.e3_low = e3_low, - pll0.l0_initial = l0_initial, - pll0.l1_initial = l1_initial, - pll0.g0_initial = g0_initial, - pll0.g1_initial = g1_initial, - pll0.g2_initial = g2_initial, - pll0.g3_initial = g3_initial, - pll0.e0_initial = e0_initial, - pll0.e1_initial = e1_initial, - pll0.e2_initial = e2_initial, - pll0.e3_initial = e3_initial, - pll0.l0_mode = l0_mode, - pll0.l1_mode = l1_mode, - pll0.g0_mode = g0_mode, - pll0.g1_mode = g1_mode, - pll0.g2_mode = g2_mode, - pll0.g3_mode = g3_mode, - pll0.e0_mode = e0_mode, - pll0.e1_mode = e1_mode, - pll0.e2_mode = e2_mode, - pll0.e3_mode = e3_mode, - pll0.l0_ph = l0_ph, - pll0.l1_ph = l1_ph, - pll0.g0_ph = g0_ph, - pll0.g1_ph = g1_ph, - pll0.g2_ph = g2_ph, - pll0.g3_ph = g3_ph, - pll0.e0_ph = e0_ph, - pll0.e1_ph = e1_ph, - pll0.e2_ph = e2_ph, - pll0.e3_ph = e3_ph, - pll0.m_ph = m_ph, - pll0.l0_time_delay = l0_time_delay, - pll0.l1_time_delay = l1_time_delay, - pll0.g0_time_delay = g0_time_delay, - pll0.g1_time_delay = g1_time_delay, - pll0.g2_time_delay = g2_time_delay, - pll0.g3_time_delay = g3_time_delay, - pll0.e0_time_delay = e0_time_delay, - pll0.e1_time_delay = e1_time_delay, - pll0.e2_time_delay = e2_time_delay, - pll0.e3_time_delay = e3_time_delay, - pll0.m_time_delay = m_time_delay, - pll0.n_time_delay = n_time_delay, - pll0.extclk3_counter = extclk3_counter, - pll0.extclk2_counter = extclk2_counter, - pll0.extclk1_counter = extclk1_counter, - pll0.extclk0_counter = extclk0_counter, - pll0.clk5_counter = clk5_counter, - pll0.clk4_counter = clk4_counter, - pll0.clk3_counter = clk3_counter, - pll0.clk2_counter = clk2_counter, - pll0.clk1_counter = clk1_counter, - pll0.clk0_counter = clk0_counter, - pll0.enable0_counter = enable0_counter, - pll0.enable1_counter = enable1_counter, - pll0.charge_pump_current = charge_pump_current, - pll0.loop_filter_r = loop_filter_r, - pll0.loop_filter_c = loop_filter_c; - -MF_stratixii_pll pll1 -( - .inclk (stratixii_inclk), - .fbin (stratixii_fbin), - .ena (stratixii_ena), - .clkswitch (stratixii_clkswitch), - .areset (stratixii_areset), - .pfdena (stratixii_pfdena), - .scanclk (stratixii_scanclk), - .scanread (stratixii_scanread), - .scanwrite (stratixii_scanwrite), - .scandata (stratixii_scandata), - .testin(), - .scandone (stratixii_scandone), - .clk (stratixii_clk), - .clkbad (stratixii_clkbad), - .activeclock (stratixii_activeclock), - .locked (stratixii_locked), - .clkloss (stratixii_clkloss), - .scandataout (stratixii_scandataout), - .enable0 (stratixii_enable0), - .enable1 (stratixii_enable1), - .testupout (), - .testdownout (), - .sclkout({stratixii_sclkout1, stratixii_sclkout0}) -); - defparam - pll1.operation_mode = operation_mode, - pll1.pll_type = pll_type, - pll1.qualify_conf_done = qualify_conf_done, - pll1.compensate_clock = compensate_clock, - pll1.inclk0_input_frequency = inclk0_input_frequency, - pll1.inclk1_input_frequency = inclk1_input_frequency, - pll1.gate_lock_signal = gate_lock_signal, - pll1.gate_lock_counter = gate_lock_counter, - pll1.valid_lock_multiplier = valid_lock_multiplier, - pll1.invalid_lock_multiplier = invalid_lock_multiplier, - pll1.switch_over_type = switch_over_type, - pll1.switch_over_on_lossclk = switch_over_on_lossclk, - pll1.switch_over_on_gated_lock = switch_over_on_gated_lock, - pll1.enable_switch_over_counter = enable_switch_over_counter, - pll1.switch_over_counter = switch_over_counter, - pll1.feedback_source = (feedback_source == "EXTCLK0") ? "CLK0" : feedback_source, - pll1.bandwidth = bandwidth, - pll1.bandwidth_type = bandwidth_type, - pll1.spread_frequency = spread_frequency, - pll1.down_spread = down_spread, - pll1.self_reset_on_gated_loss_lock = self_reset_on_gated_loss_lock, - pll1.simulation_type = simulation_type, - - // internal clock specifications - pll1.clk5_multiply_by = clk5_multiply_by, - pll1.clk4_multiply_by = clk4_multiply_by, - pll1.clk3_multiply_by = clk3_multiply_by, - pll1.clk2_multiply_by = clk2_multiply_by, - pll1.clk1_multiply_by = clk1_multiply_by, - pll1.clk0_multiply_by = clk0_multiply_by, - pll1.clk5_divide_by = clk5_divide_by, - pll1.clk4_divide_by = clk4_divide_by, - pll1.clk3_divide_by = clk3_divide_by, - pll1.clk2_divide_by = clk2_divide_by, - pll1.clk1_divide_by = clk1_divide_by, - pll1.clk0_divide_by = clk0_divide_by, - pll1.clk5_phase_shift = clk5_phase_shift, - pll1.clk4_phase_shift = clk4_phase_shift, - pll1.clk3_phase_shift = clk3_phase_shift, - pll1.clk2_phase_shift = clk2_phase_shift, - pll1.clk1_phase_shift = clk1_phase_shift, - pll1.clk0_phase_shift = clk0_phase_shift, - pll1.clk5_duty_cycle = clk5_duty_cycle, - pll1.clk4_duty_cycle = clk4_duty_cycle, - pll1.clk3_duty_cycle = clk3_duty_cycle, - pll1.clk2_duty_cycle = clk2_duty_cycle, - pll1.clk1_duty_cycle = clk1_duty_cycle, - pll1.clk0_duty_cycle = clk0_duty_cycle, - pll1.vco_multiply_by = vco_multiply_by, - pll1.vco_divide_by = vco_divide_by, - pll1.clk2_output_frequency = clk2_output_frequency, - pll1.clk1_output_frequency = clk1_output_frequency, - pll1.clk0_output_frequency = clk0_output_frequency, - - // advanced parameters - pll1.vco_min = vco_min, - pll1.vco_max = vco_max, - pll1.vco_center = vco_center, - pll1.pfd_min = pfd_min, - pll1.pfd_max = pfd_max, - pll1.m_initial = m_initial, - pll1.m = m, - pll1.n = n, - pll1.m2 = m2, - pll1.n2 = n2, - pll1.ss = ss, - pll1.c0_high = c0_high, - pll1.c1_high = c1_high, - pll1.c2_high = c2_high, - pll1.c3_high = c3_high, - pll1.c4_high = c4_high, - pll1.c5_high = c5_high, - pll1.c0_low = c0_low, - pll1.c1_low = c1_low, - pll1.c2_low = c2_low, - pll1.c3_low = c3_low, - pll1.c4_low = c4_low, - pll1.c5_low = c5_low, - pll1.c0_initial = c0_initial, - pll1.c1_initial = c1_initial, - pll1.c2_initial = c2_initial, - pll1.c3_initial = c3_initial, - pll1.c4_initial = c4_initial, - pll1.c5_initial = c5_initial, - pll1.c0_mode = c0_mode, - pll1.c1_mode = c1_mode, - pll1.c2_mode = c2_mode, - pll1.c3_mode = c3_mode, - pll1.c4_mode = c4_mode, - pll1.c5_mode = c5_mode, - pll1.c0_ph = c0_ph, - pll1.c1_ph = c1_ph, - pll1.c2_ph = c2_ph, - pll1.c3_ph = c3_ph, - pll1.c4_ph = c4_ph, - pll1.c5_ph = c5_ph, - pll1.m_ph = m_ph, - pll1.c1_use_casc_in = c1_use_casc_in, - pll1.c2_use_casc_in = c2_use_casc_in, - pll1.c3_use_casc_in = c3_use_casc_in, - pll1.c4_use_casc_in = c4_use_casc_in, - pll1.c5_use_casc_in = c5_use_casc_in, - pll1.clk5_counter = (clk5_counter == "l1") ? "c5" : clk5_counter, - pll1.clk4_counter = (clk4_counter == "l0") ? "c4" : clk4_counter, - pll1.clk3_counter = (clk3_counter == "g3") ? "c3" : clk3_counter, - pll1.clk2_counter = (clk2_counter == "g2") ? "c2" : clk2_counter, - pll1.clk1_counter = (clk1_counter == "g1") ? "c1" : clk1_counter, - pll1.clk0_counter = (clk0_counter == "g0") ? "c0" : clk0_counter, - pll1.enable0_counter = (enable0_counter == "l0") ? "c0" : enable0_counter, - pll1.enable1_counter = (enable1_counter == "l0") ? "c1" : enable1_counter, - pll1.charge_pump_current = charge_pump_current, - pll1.loop_filter_r = loop_filter_r, - pll1.loop_filter_c = loop_filter_c, - pll1.m_test_source = m_test_source, - pll1.c0_test_source = c0_test_source, - pll1.c1_test_source = c1_test_source, - pll1.c2_test_source = c2_test_source, - pll1.c3_test_source = c3_test_source, - pll1.c4_test_source = c4_test_source, - pll1.c5_test_source = c5_test_source; - -// CONTINOUS ASSIGNMENT -assign fbin_pullup = ((port_fbin == "PORT_CONNECTIVITY") || - (port_fbin == "PORT_USED")) ? fbin : 1'b1; -assign ena_pullup = ((port_pllena == "PORT_CONNECTIVITY") || - (port_pllena == "PORT_USED")) ? pllena : 1'b1; -assign pfdena_pullup = ((port_pfdena == "PORT_CONNECTIVITY") || - (port_pfdena == "PORT_USED")) ? pfdena : 1'b1; -assign clkena_pullup[0] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena0 == "PORT_USED")) && - (port_clkena0 != "PORT_UNUSED") ? clkena[0] : 1'b1; -assign clkena_pullup[1] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena1 == "PORT_USED")) && - (port_clkena1 != "PORT_UNUSED") ? clkena[1] : 1'b1; -assign clkena_pullup[2] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena2 == "PORT_USED")) && - (port_clkena2 != "PORT_UNUSED") ? clkena[2] : 1'b1; -assign clkena_pullup[3] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena3 == "PORT_USED")) && - (port_clkena3 != "PORT_UNUSED") ? clkena[3] : 1'b1; -assign clkena_pullup[4] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena4 == "PORT_USED")) && - (port_clkena4 != "PORT_UNUSED") ? clkena[4] : 1'b1; -assign clkena_pullup[5] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_clkena5 == "PORT_USED")) && - (port_clkena5 != "PORT_UNUSED") ? clkena[5] : 1'b1; - -assign extclkena_pullup[0] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_extclkena0 == "PORT_USED")) && - (port_extclkena0 != "PORT_UNUSED") ? extclkena[0] : 1'b1; -assign extclkena_pullup[1] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_extclkena1 == "PORT_USED")) && - (port_extclkena1 != "PORT_UNUSED") ? extclkena[1] : 1'b1; -assign extclkena_pullup[2] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_extclkena2 == "PORT_USED")) && - (port_extclkena2 != "PORT_UNUSED") ? extclkena[2] : 1'b1; -assign extclkena_pullup[3] = (!((pll_type == "fast") || (pll_type == "FAST")) || - (port_extclkena3 == "PORT_USED")) && - (port_extclkena3 != "PORT_UNUSED") ? extclkena[3] : 1'b1; -assign scanclk_pulldown = scanclk; -assign scanread_pulldown = ((port_scanread == "PORT_CONNECTIVITY") || - (port_scanread == "PORT_USED")) ? scanread : 1'b0; -assign scanwrite_pulldown = ((port_scanwrite == "PORT_CONNECTIVITY") || - (port_scanwrite == "PORT_USED")) ? scanwrite : 1'b0; -assign scandata_pulldown = ((port_scandata == "PORT_CONNECTIVITY") || - (port_scandata == "PORT_USED")) ? scandata : 1'b0; -assign inclk_pulldown = inclk; -assign clkswitch_pulldown = ((port_clkswitch == "PORT_CONNECTIVITY") || - (port_clkswitch == "PORT_USED")) ? clkswitch : 1'b0; -assign areset_pulldown = ((port_areset == "PORT_CONNECTIVITY") || - (port_areset == "PORT_USED")) ? areset : 1'b0; -assign scanclr_pulldown = ((port_scanaclr == "PORT_CONNECTIVITY") || - (port_scanaclr == "PORT_USED")) ? scanaclr : 1'b0; - -assign stratix_inclk = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? inclk_pulldown : {2{1'b0}}; -assign stratix_fbin = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? fbin_pullup : 1'b0; -assign stratix_ena = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? ena_pullup : 1'b0; -assign stratix_clkswitch = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? clkswitch_pulldown : 1'b0; -assign stratix_areset = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? areset_pulldown : 1'b0; -assign stratix_pfdena = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? pfdena_pullup : 1'b1; -assign stratix_clkena = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? clkena_pullup : {5{1'b0}}; -assign stratix_extclkena = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? extclkena_pullup : {3{1'b0}}; -assign stratix_scanclk = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? scanclk_pulldown : 1'b0; -assign stratix_scanclr = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? scanclr_pulldown : 1'b0; -assign stratix_scandata = (!dev.FEATURE_FAMILY_STRATIXII(intended_device_family) && - !dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? scandata_pulldown : 1'b0; -assign stratixii_inclk = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? inclk_pulldown : {2{1'b0}}; -assign stratixii_fbin = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? fbin_pullup : 1'b0; -assign stratixii_ena = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? ena_pullup : 1'b0; -assign stratixii_clkswitch = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? clkswitch_pulldown : 1'b0; -assign stratixii_areset = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? areset_pulldown : 1'b0; -assign stratixii_pfdena = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? pfdena_pullup : 1'b1; -assign stratixii_scanread = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? scanread_pulldown : 1'b0; -assign stratixii_scanwrite = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? scanwrite_pulldown : 1'b0; -assign stratixii_scanclk = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? scanclk_pulldown : 1'b0; -assign stratixii_scandata = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? scandata_pulldown : 1'b0; -assign scandone_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_scandone : 1'b0; -assign scandone = (port_scandone != "PORT_UNUSED") ? scandone_wire : 1'b0; -assign clk_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_clk : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? {3'b0, stratixii_clk[2:0]} : stratix_clk; -assign clk[0] = (port_clk0 != "PORT_UNUSED") ? clk_wire[0] : 1'b0; -assign clk[1] = (port_clk1 != "PORT_UNUSED") ? clk_wire[1] : 1'b0; -assign clk[2] = (port_clk2 != "PORT_UNUSED") ? clk_wire[2] : 1'b0; -assign clk[3] = (port_clk3 != "PORT_UNUSED") ? clk_wire[3] : 1'b0; -assign clk[4] = (port_clk4 != "PORT_UNUSED") ? clk_wire[4] : 1'b0; -assign clk[5] = (port_clk5 != "PORT_UNUSED") ? clk_wire[5] : 1'b0; -assign extclk[0] = (port_extclk0 != "PORT_UNUSED") ? stratix_extclk[0] : 1'b0; -assign extclk[1] = (port_extclk1 != "PORT_UNUSED") ? stratix_extclk[1] : 1'b0; -assign extclk[2] = (port_extclk2 != "PORT_UNUSED") ? stratix_extclk[2] : 1'b0; -assign extclk[3] = (port_extclk3 != "PORT_UNUSED") ? stratix_extclk[3] : 1'b0; -assign clkbad_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_clkbad : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 2'b0 : stratix_clkbad; -assign clkbad[0] = (port_clkbad0 != "PORT_UNUSED") ? clkbad_wire[0] : 1'b0; -assign clkbad[1] = (port_clkbad1 != "PORT_UNUSED") ? clkbad_wire[1] : 1'b0; -assign activeclock_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_activeclock : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 1'b0 : stratix_activeclock; -assign activeclock = (port_activeclock != "PORT_UNUSED") ? activeclock_wire : 1'b0; -assign locked = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? stratixii_locked : stratix_locked; -assign stratix_locked = ((pll_type == "fast") || (pll_type == "FAST")) ? (!locked_tmp) : locked_tmp; -assign clkloss_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_clkloss : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 1'b0 : stratix_clkloss; -assign clkloss = (port_clkloss != "PORT_UNUSED") ? clkloss_wire : 1'b0; -assign scandataout_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_scandataout : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 1'b0 : stratix_scandataout; -assign scandataout = (port_scandataout != "PORT_UNUSED") ? scandataout_wire : 1'b0; -assign enable0 = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_enable0 : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 1'b0 : stratix_enable0; -assign enable1 = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_enable1 : - (dev.IS_FAMILY_CYCLONEII(intended_device_family)) ? 1'b0 : stratix_enable1; -assign sclkout0_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_sclkout0 : 1'b0; -assign sclkout0 = (port_sclkout0 != "PORT_UNUSED") ? sclkout0_wire : 1'b0; -assign sclkout1_wire = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) ? stratixii_sclkout1 : 1'b0; -assign sclkout1 = (port_sclkout1 != "PORT_UNUSED") ? sclkout1_wire : 1'b0; -endmodule //altpll - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : altaccumulate -// -// Description : Parameterized accumulator megafunction. The accumulator -// performs an add function or a subtract function based on the add_sub -// parameter. The input data can be signed or unsigned. -// -// Limitation : n/a -// -// Results expected: result - The results of add or subtract operation. Output -// port [width_out-1 .. 0] wide. -// cout - The cout port has a physical interpretation as -// the carry-out (borrow-in) of the MSB. The cout -// port is most meaningful for detecting overflow -// in unsigned operations. The cout port operates -// in the same manner for signed and unsigned -// operations. -// overflow - Indicates the accumulator is overflow. -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE - -`timescale 1 ps / 1 ps - -module altaccumulate (cin, data, add_sub, clock, sload, clken, sign_data, aclr, - result, cout, overflow); - - parameter width_in = 4; // Required - parameter width_out = 8; // Required - parameter lpm_representation = "UNSIGNED"; - parameter extra_latency = 0; - parameter use_wys = "ON"; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "altaccumulate"; - - // INPUT PORT DECLARATION - input cin; - input [width_in-1:0] data; // Required port - input add_sub; // Default = 1 - input clock; // Required port - input sload; // Default = 0 - input clken; // Default = 1 - input sign_data; // Default = 0 - input aclr; // Default = 0 - - // OUTPUT PORT DECLARATION - output [width_out-1:0] result; //Required port - output cout; - output overflow; - - // INTERNAL REGISTERS DECLARATION - reg [width_out:0] temp_sum; - reg overflow; - reg overflow_int; - reg cout_int; - reg cout_delayed; - - reg [width_out-1:0] result; - reg [width_out+1:0] result_int; - reg [(width_out - width_in) : 0] zeropad; - - reg borrow; - reg cin_int; - - reg [width_out-1:0] fb_int; - reg [width_out -1:0] data_int; - - reg [width_out+1:0] result_pipe [extra_latency:0]; - reg [width_out+1:0] result_full; - reg [width_out+1:0] result_full2; - - reg a; - - // INTERNAL WIRE DECLARATION - wire [width_out:0] temp_sum_wire; - wire cout; - wire cout_int_wire; - wire cout_delayed_wire; - wire overflow_int_wire; - wire [width_out+1:0] result_int_wire; - - // INTERNAL TRI DECLARATION - - tri0 aclr_int; - tri0 sign_data_int; - tri0 sload_int; - - tri1 clken_int; - tri1 add_sub_int; - - // LOCAL INTEGER DECLARATION - integer head; - integer i; - - // INITIAL CONSTRUCT BLOCK - initial - begin - - // Checking for invalid parameters - if( width_in <= 0 ) - begin - $display("Error! Value of width_in parameter must be greater than 0."); - $stop; - end - - if( width_out <= 0 ) - begin - $display("Error! Value of width_out parameter must be greater than 0."); - $stop; - end - - if( extra_latency > width_out ) - begin - $display("Info: Value of extra_latency parameter should be lower than width_out parameter for better performance/utilization."); - end - - if( width_in > width_out ) - begin - $display("Error! Value of width_in parameter should be lower than or equal to width_out."); - $stop; - end - - result = 0; - cout_delayed = 0; - overflow = 0; - head = 0; - result_int = 0; - for (i = 0; i <= extra_latency; i = i +1) - begin - result_pipe [i] = 0; - end - end - - // ALWAYS CONSTRUCT BLOCK - always @(posedge clock or posedge aclr_int) - begin - - if (aclr_int == 1) - begin - result_int = 0; - result = 0; - overflow = 0; - cout_delayed = 0; - for (i = 0; i <= extra_latency; i = i +1) - begin - result_pipe [i] = 0; - end - - end - else - begin - if (clken_int == 1) - begin - //get result from output register - if (extra_latency > 0) - begin - result_pipe [head] = { - result_int [width_out+1], - {cout_int_wire, result_int [width_out-1:0]} - }; - - head = (head + 1) % (extra_latency); - - result_full = result_pipe [head]; - cout_delayed = result_full [width_out]; - result = result_full [width_out-1:0]; - overflow = result_full [width_out+1]; - end - else - begin - result = temp_sum_wire; - overflow = overflow_int_wire; - end - - result_int = {overflow_int_wire, {cout_int_wire, temp_sum_wire [width_out-1:0]}}; - end - end - end - - - always @ (data or cin or add_sub_int or sign_data_int or - result_int_wire [width_out -1:0] or sload_int) - begin - - if ((lpm_representation == "SIGNED") || (sign_data_int == 1)) - begin - zeropad = (data [width_in-1] ==0) ? 0 : -1; - end - else - begin - zeropad = 0; - end - - fb_int = (sload_int == 1'b1) ? 0 : result_int_wire [width_out-1:0]; - data_int = {zeropad, data}; - - if ((add_sub_int == 1) || (sload_int == 1)) - begin - cin_int = ((sload_int == 1'b1) ? 0 : ((cin === 1'bz) ? 0 : cin)); - temp_sum = fb_int + data_int + cin_int; - cout_int = temp_sum [width_out]; - end - else - begin - cin_int = (cin === 1'bz) ? 1 : cin; - borrow = ~cin_int; - - temp_sum = fb_int - data_int - borrow; - - result_full2 = data_int + borrow; - cout_int = (fb_int >= result_full2) ? 1 : 0; - end - - if ((lpm_representation == "SIGNED") || (sign_data_int == 1)) - begin - a = (data [width_in-1] ~^ fb_int [width_out-1]) ^ (~add_sub_int); - overflow_int = a & (fb_int [width_out-1] ^ temp_sum[width_out-1]); - end - else - begin - overflow_int = (add_sub_int == 1) ? cout_int : ~cout_int; - end - - if (sload_int == 1) - begin - cout_int = !add_sub_int; - overflow_int = 0; - end - - end - - // CONTINOUS ASSIGNMENT - - // Get the input data and control signals. - assign sign_data_int = sign_data; - assign sload_int = sload; - assign add_sub_int = add_sub; - - assign clken_int = clken; - assign aclr_int = aclr; - assign result_int_wire = result_int; - assign temp_sum_wire = temp_sum; - assign cout_int_wire = cout_int; - assign overflow_int_wire = overflow_int; - assign cout = (extra_latency == 0) ? cout_int_wire : cout_delayed_wire; - assign cout_delayed_wire = cout_delayed; - -endmodule // End of altaccumulate - -// END OF MODULE - -//-------------------------------------------------------------------------- -// Module Name : altmult_accum -// -// Description : a*b + x (MAC) -// -// Limitation : Stratix DSP block -// -// Results expected : signed & unsigned, maximum of 3 pipelines(latency) each. -// -//-------------------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -module altmult_accum ( dataa, - datab, - scanina, - scaninb, - sourcea, - sourceb, - accum_sload_upper_data, - addnsub, - accum_sload, - signa, - signb, - clock0, - clock1, - clock2, - clock3, - ena0, - ena1, - ena2, - ena3, - aclr0, - aclr1, - aclr2, - aclr3, - result, - overflow, - scanouta, - scanoutb, - mult_round, - mult_saturation, - accum_round, - accum_saturation, - mult_is_saturated, - accum_is_saturated); - - // --------------------- - // PARAMETER DECLARATION - // --------------------- - parameter width_a = 2; - parameter width_b = 2; - parameter width_result = 5; - parameter input_reg_a = "CLOCK0"; - parameter input_aclr_a = "ACLR3"; - parameter input_reg_b = "CLOCK0"; - parameter input_aclr_b = "ACLR3"; - parameter port_addnsub = "PORT_CONNECTIVITY"; - parameter addnsub_reg = "CLOCK0"; - parameter addnsub_aclr = "ACLR3"; - parameter addnsub_pipeline_reg = "CLOCK0"; - parameter addnsub_pipeline_aclr = "ACLR3"; - parameter accum_direction = "ADD"; - parameter accum_sload_reg = "CLOCK0"; - parameter accum_sload_aclr = "ACLR3"; - parameter accum_sload_pipeline_reg = "CLOCK0"; - parameter accum_sload_pipeline_aclr = "ACLR3"; - parameter representation_a = "UNSIGNED"; - parameter port_signa = "PORT_CONNECTIVITY"; - parameter sign_reg_a = "CLOCK0"; - parameter sign_aclr_a = "ACLR3"; - parameter sign_pipeline_reg_a = "CLOCK0"; - parameter sign_pipeline_aclr_a = "ACLR3"; - parameter port_signb = "PORT_CONNECTIVITY"; - parameter representation_b = "UNSIGNED"; - parameter sign_reg_b = "CLOCK0"; - parameter sign_aclr_b = "ACLR3"; - parameter sign_pipeline_reg_b = "CLOCK0"; - parameter sign_pipeline_aclr_b = "ACLR3"; - parameter multiplier_reg = "CLOCK0"; - parameter multiplier_aclr = "ACLR3"; - parameter output_reg = "CLOCK0"; - parameter output_aclr = "ACLR3"; - parameter lpm_type = "altmult_accum"; - parameter lpm_hint = "UNUSED"; - - parameter extra_multiplier_latency = 0; - parameter extra_accumulator_latency = 0; - parameter dedicated_multiplier_circuitry = "AUTO"; - parameter dsp_block_balancing = "AUTO"; - parameter intended_device_family = "Stratix"; - - // StratixII related parameter - parameter accum_round_aclr = "ACLR3"; - parameter accum_round_pipeline_aclr = "ACLR3"; - parameter accum_round_pipeline_reg = "CLOCK0"; - parameter accum_round_reg = "CLOCK0"; - parameter accum_saturation_aclr = "ACLR3"; - parameter accum_saturation_pipeline_aclr = "ACLR3"; - parameter accum_saturation_pipeline_reg = "CLOCK0"; - parameter accum_saturation_reg = "CLOCK0"; - parameter accum_sload_upper_data_aclr = "ACLR3"; - parameter accum_sload_upper_data_pipeline_aclr = "ACLR3"; - parameter accum_sload_upper_data_pipeline_reg = "CLOCK0"; - parameter accum_sload_upper_data_reg = "CLOCK0"; - parameter mult_round_aclr = "ACLR3"; - parameter mult_round_reg = "CLOCK0"; - parameter mult_saturation_aclr = "ACLR3"; - parameter mult_saturation_reg = "CLOCK0"; - - parameter input_source_a = "DATAA"; - parameter input_source_b = "DATAB"; - parameter width_upper_data = 1; - parameter multiplier_rounding = "NO"; - parameter multiplier_saturation = "NO"; - parameter accumulator_rounding = "NO"; - parameter accumulator_saturation = "NO"; - parameter port_mult_is_saturated = "UNUSED"; - parameter port_accum_is_saturated = "UNUSED"; - - // ----------------------- - // Local parameters - // ----------------------- - parameter int_width_a = ((multiplier_saturation == "NO") && (multiplier_rounding == "NO") && (accumulator_saturation == "NO") && (accumulator_rounding == "NO")) ? width_a : 18; - parameter int_width_b = ((multiplier_saturation == "NO") && (multiplier_rounding == "NO") && (accumulator_saturation == "NO") && (accumulator_rounding == "NO")) ? width_b : 18; - parameter int_width_result = ((multiplier_saturation == "NO") && (multiplier_rounding == "NO") && (accumulator_saturation == "NO") && (accumulator_rounding == "NO")) ? width_result : 52; - parameter int_extra_width = ((multiplier_saturation == "NO") && (multiplier_rounding == "NO") && (accumulator_saturation == "NO") && (accumulator_rounding == "NO")) ? 0 : (int_width_a + int_width_b - width_a - width_b); - parameter diff_width_a = (int_width_a > width_a) ? int_width_a - width_a : 1; - parameter diff_width_b = (int_width_b > width_b) ? int_width_b - width_b : 1; - parameter sat_for_ini = ((multiplier_saturation == "NO") && (accumulator_saturation == "NO")) ? 0 : (int_width_a + int_width_b - 34); - parameter mult_round_for_ini = ((multiplier_rounding == "NO")? 0 : (int_width_a + int_width_b - 18)); - parameter bits_to_round = (((multiplier_rounding == "NO") && (accumulator_rounding == "NO"))? 0 : int_width_a + int_width_b - 18); - parameter sload_for_limit = (width_result < width_upper_data)? width_result + int_extra_width : width_upper_data ; - parameter accum_sat_for_limit = ((accumulator_saturation == "NO")? int_width_result - 1 : int_width_a + int_width_b - 33 ); - // ---------------- - // PORT DECLARATION - // ---------------- - - // data input ports - input [width_a -1 : 0] dataa; - input [width_b -1 : 0] datab; - input [width_a -1 : 0] scanina; - input [width_b -1 : 0] scaninb; - input sourcea; - input sourceb; - input [width_result -1 : width_result - width_upper_data] accum_sload_upper_data; - - // control signals - input addnsub; - input accum_sload; - input signa; - input signb; - - // clock ports - input clock0; - input clock1; - input clock2; - input clock3; - - // clock enable ports - input ena0; - input ena1; - input ena2; - input ena3; - - // clear ports - input aclr0; - input aclr1; - input aclr2; - input aclr3; - - // round and saturate ports - input mult_round; - input mult_saturation; - input accum_round; - input accum_saturation; - - // output ports - output [width_result -1 : 0] result; - output overflow; - output [width_a -1 : 0] scanouta; - output [width_b -1 : 0] scanoutb; - - output mult_is_saturated; - output accum_is_saturated; - - - // --------------- - // REG DECLARATION - // --------------- - reg [width_result -1 : 0] result; - - reg [int_width_result -1 : 0] mult_res_out; - reg [int_width_result : 0] temp_sum; - - - reg [width_result + 1 : 0] result_pipe [extra_accumulator_latency : 0]; - reg [width_result + 1 : 0] result_full ; - - reg [int_width_result - 1 : 0] result_int; - - reg [int_width_a - 1 : 0] mult_a_reg; - reg [int_width_a - 1 : 0] mult_a_int; - reg [int_width_a + int_width_b - 1 : 0] mult_res; - reg [int_width_a + int_width_b - 1 : 0] temp_mult_1; - reg [int_width_a + int_width_b - 1 : 0] temp_mult; - - - reg [int_width_b -1 :0] mult_b_reg; - reg [int_width_b -1 :0] mult_b_int; - - reg [5 + int_width_a + int_width_b + width_upper_data : 0] mult_pipe [extra_multiplier_latency:0]; - reg [5 + int_width_a + int_width_b + width_upper_data : 0] mult_full; - - reg [width_upper_data - 1 : 0] sload_upper_data_reg; - - reg [width_result - width_upper_data -1 + 4 : 0] lower_bits; - - reg mult_signed_out; - reg [width_upper_data - 1 : 0] sload_upper_data_pipe_reg; - - - reg zero_acc_reg; - reg zero_acc_pipe_reg; - reg sign_a_reg; - reg sign_a_pipe_reg; - reg sign_b_reg; - reg sign_b_pipe_reg; - reg addsub_reg; - reg addsub_pipe_reg; - - reg mult_signed; - reg temp_mult_signed; - reg neg_a; - reg neg_b; - - reg overflow_int; - reg cout_int; - reg overflow_tmp_int; - - reg overflow; - - reg [int_width_a + int_width_b -1 : 0] mult_round_out; - reg mult_saturate_overflow; - reg [int_width_a + int_width_b -1 : 0] mult_saturate_out; - reg [int_width_a + int_width_b -1 : 0] mult_result; - reg [int_width_a + int_width_b -1 : 0] mult_final_out; - - reg [int_width_result -1 : 0] accum_round_out; - reg accum_saturate_overflow; - reg [int_width_result -1 : 0] accum_saturate_out; - reg [int_width_result -1 : 0] accum_result; - reg [int_width_result -1 : 0] accum_final_out; - - tri0 mult_is_saturated_latent; - reg mult_is_saturated_int; - reg mult_is_saturated_reg; - - reg accum_is_saturated_latent; - reg [extra_accumulator_latency : 0] accum_saturate_pipe; - reg [extra_accumulator_latency : 0] mult_is_saturated_pipe; - - reg mult_round_tmp; - reg mult_saturation_tmp; - reg accum_round_tmp1; - reg accum_round_tmp2; - reg accum_saturation_tmp1; - reg accum_saturation_tmp2; - - reg [int_width_result - int_width_a - int_width_b + 2 - 1 : 0] accum_result_sign_bits; - - // ------------------- - // INTEGER DECLARATION - // ------------------- - integer head_result; - integer i; - integer i2; - integer i3; - integer i4; - integer head_mult; - integer flag; - - - //----------------- - // TRI DECLARATION - //----------------- - - - // Tri wire for clear signal - - tri0 input_a_wire_clr; - tri0 input_b_wire_clr; - - tri0 addsub_wire_clr; - tri0 addsub_pipe_wire_clr; - - tri0 zero_wire_clr; - tri0 zero_pipe_wire_clr; - - tri0 sign_a_wire_clr; - tri0 sign_pipe_a_wire_clr; - - tri0 sign_b_wire_clr; - tri0 sign_pipe_b_wire_clr; - - tri0 multiplier_wire_clr; - tri0 mult_pipe_wire_clr; - - tri0 output_wire_clr; - - tri0 mult_round_wire_clr; - tri0 mult_saturation_wire_clr; - - tri0 accum_round_wire_clr; - tri0 accum_round_pipe_wire_clr; - - tri0 accum_saturation_wire_clr; - tri0 accum_saturation_pipe_wire_clr; - - tri0 accum_sload_upper_data_wire_clr; - tri0 accum_sload_upper_data_pipe_wire_clr; - - - // Tri wire for enable signal - - tri1 input_a_wire_en; - tri1 input_b_wire_en; - - tri1 addsub_wire_en; - tri1 addsub_pipe_wire_en; - - tri1 zero_wire_en; - tri1 zero_pipe_wire_en; - - tri1 sign_a_wire_en; - tri1 sign_pipe_a_wire_en; - - tri1 sign_b_wire_en; - tri1 sign_pipe_b_wire_en; - - tri1 multiplier_wire_en; - tri1 mult_pipe_wire_en; - - tri1 output_wire_en; - - tri1 mult_round_wire_en; - tri1 mult_saturation_wire_en; - - tri1 accum_round_wire_en; - tri1 accum_round_pipe_wire_en; - - tri1 accum_saturation_wire_en; - tri1 accum_saturation_pipe_wire_en; - - tri1 accum_sload_upper_data_wire_en; - tri1 accum_sload_upper_data_pipe_wire_en; - - // ------------------------ - // SUPPLY WIRE DECLARATION - // ------------------------ - - supply0 [int_width_a + int_width_b - 1 : 0] temp_mult_zero; - - - // ---------------- - // WIRE DECLARATION - // ---------------- - - // Wire for Clock signals - - wire input_a_wire_clk; - wire input_b_wire_clk; - - wire addsub_wire_clk; - wire addsub_pipe_wire_clk; - - wire zero_wire_clk; - wire zero_pipe_wire_clk; - - wire sign_a_wire_clk; - wire sign_pipe_a_wire_clk; - - wire sign_b_wire_clk; - wire sign_pipe_b_wire_clk; - - wire multiplier_wire_clk; - wire mult_pipe_wire_clk; - - wire output_wire_clk; - - wire [width_a -1 : 0] scanouta; - wire [int_width_a + int_width_b -1 : 0] mult_out_latent; - wire [width_b -1 : 0] scanoutb; - - wire addsub_int; - wire sign_a_int; - wire sign_b_int; - - wire zero_acc_int; - wire sign_a_reg_int; - wire sign_b_reg_int; - - wire addsub_latent; - wire zeroacc_latent; - wire signa_latent; - wire signb_latent; - wire mult_signed_latent; - - wire [width_upper_data - 1 : 0] sload_upper_data_latent; - reg [int_width_result - 1 : 0] sload_upper_data_pipe_wire; - - wire [int_width_a -1 :0] mult_a_wire; - wire [int_width_b -1 :0] mult_b_wire; - wire [width_upper_data - 1 : 0] sload_upper_data_wire; - wire [int_width_a -1 : 0] mult_a_tmp; - wire [int_width_b -1 : 0] mult_b_tmp; - - wire zero_acc_wire; - wire zero_acc_pipe_wire; - - wire sign_a_wire; - wire sign_a_pipe_wire; - wire sign_b_wire; - wire sign_b_pipe_wire; - - wire addsub_wire; - wire addsub_pipe_wire; - - wire mult_round_int; - wire mult_round_wire_clk; - wire mult_saturation_int; - wire mult_saturation_wire_clk; - - wire accum_round_tmp1_wire; - wire accum_round_wire_clk; - wire accum_round_int; - wire accum_round_pipe_wire_clk; - - wire accum_saturation_tmp1_wire; - wire accum_saturation_wire_clk; - wire accum_saturation_int; - wire accum_saturation_pipe_wire_clk; - - wire accum_sload_upper_data_wire_clk; - wire accum_sload_upper_data_pipe_wire_clk; - wire [width_result -1 : width_result - width_upper_data] accum_sload_upper_data_int; - - tri0 mult_is_saturated_wire; - - // ------------------------ - // COMPONENT INSTANTIATIONS - // ------------------------ - ALTERA_DEVICE_FAMILIES dev (); - - - // -------------------- - // ASSIGNMENT STATEMENTS - // -------------------- - - - assign addsub_int = (port_addnsub == "PORT_USED") ? addsub_pipe_wire : - (port_addnsub == "PORT_UNUSED") ? ((accum_direction == "ADD") ? 1 : 0) : - ((addnsub ===1'bz) || - (addsub_wire_clk ===1'bz) || - (addsub_pipe_wire_clk ===1'bz)) ? - ((accum_direction == "ADD") ? 1 : 0) : addsub_pipe_wire; - - assign sign_a_int = (port_signa == "PORT_USED") ? sign_a_pipe_wire : - (port_signa == "PORT_UNUSED") ? ((representation_a == "SIGNED") ? 1 : 0) : - ((signa ===1'bz) || - (sign_a_wire_clk ===1'bz) || - (sign_pipe_a_wire_clk ===1'bz)) ? - ((representation_a == "SIGNED") ? 1 : 0) : sign_a_pipe_wire; - - assign sign_b_int = (port_signb == "PORT_USED") ? sign_b_pipe_wire : - (port_signb == "PORT_UNUSED") ? ((representation_b == "SIGNED") ? 1 : 0) : - ((signb ===1'bz) || - (sign_b_wire_clk ===1'bz) || - (sign_pipe_b_wire_clk ===1'bz)) ? - ((representation_b == "SIGNED") ? 1 : 0) : sign_b_pipe_wire; - - - - assign sign_a_reg_int = (port_signa == "PORT_USED") ? sign_a_wire : - (port_signa == "PORT_UNUSED") ? ((representation_a == "SIGNED") ? 1 : 0) : - ((signa ===1'bz) || - (sign_a_wire_clk ===1'bz) || - (sign_pipe_a_wire_clk ===1'bz)) ? - ((representation_a == "SIGNED") ? 1 : 0) : sign_a_wire; - - assign sign_b_reg_int = (port_signb == "PORT_USED") ? sign_b_wire : - (port_signb == "PORT_UNUSED") ? ((representation_b == "SIGNED") ? 1 : 0) : - ((signb ===1'bz) || - (sign_b_wire_clk ===1'bz) || - (sign_pipe_b_wire_clk ===1'bz)) ? - ((representation_b == "SIGNED") ? 1 : 0) : sign_b_wire; - - assign zero_acc_int = ((accum_sload ===1'bz) || - (zero_wire_clk===1'bz) || - (zero_pipe_wire_clk===1'bz)) ? - 0 : zero_acc_pipe_wire; - - assign accum_sload_upper_data_int = ((accum_sload_upper_data === {width_upper_data{1'bz}}) || - (accum_sload_upper_data_wire_clk === 1'bz) || - (accum_sload_upper_data_pipe_wire_clk === 1'bz)) ? - {width_upper_data{1'b0}} : accum_sload_upper_data; - - assign scanouta = mult_a_wire[int_width_a - 1 : int_width_a - width_a]; - assign scanoutb = mult_b_wire[int_width_b - 1 : int_width_b - width_b]; - - assign {addsub_latent, zeroacc_latent, signa_latent, signb_latent, mult_signed_latent, mult_out_latent, sload_upper_data_latent, mult_is_saturated_latent} = (extra_multiplier_latency > 0) ? - mult_full : {addsub_wire, zero_acc_wire, sign_a_wire, sign_b_wire, temp_mult_signed, mult_final_out, sload_upper_data_wire, mult_saturate_overflow}; - - assign mult_is_saturated = (port_mult_is_saturated != "UNUSED") ? mult_is_saturated_int : 0; - assign accum_is_saturated = (port_accum_is_saturated != "UNUSED") ? accum_is_saturated_latent : 0; - - - // --------------------------------------------------------------------------------- - // Initialization block where all the internal signals and registers are initialized - // --------------------------------------------------------------------------------- - initial - begin - - // Checking for invalid parameters, in case Wizard is bypassed (hand-modified). - - if ((dedicated_multiplier_circuitry != "AUTO") && - (dedicated_multiplier_circuitry != "YES") && - (dedicated_multiplier_circuitry != "NO")) - begin - $display("Error: The DEDICATED_MULTIPLIER_CIRCUITRY parameter is set to an illegal value."); - $stop; - end - if (width_a <= 0) - begin - $display("Error: width_a must be greater than 0."); - $stop; - end - if (width_b <= 0) - begin - $display("Error: width_b must be greater than 0."); - $stop; - end - if (width_result <= 0) - begin - $display("Error: width_result must be greater than 0."); - $stop; - end - - if (( (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && - (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) ) - && (input_source_a != "DATAA")) - begin - $display("Error: The input source for port A are limited to input dataa."); - $stop; - end - - if (( (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && - (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) ) - && (input_source_b != "DATAB")) - begin - $display("Error: The input source for port B are limited to input datab."); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (multiplier_rounding != "NO")) - begin - $display("Error: There is no rounding feature for %s device.", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (accumulator_rounding != "NO")) - begin - $display("Error: There is no rounding feature for %s device.", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (multiplier_saturation != "NO")) - begin - $display("Error: There is no saturation feature for %s device.", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (accumulator_saturation != "NO")) - begin - $display("Error: There is no saturation feature for %s device.", intended_device_family); - $stop; - end - - - temp_sum = 0; - head_result = 0; - head_mult = 0; - overflow_int = 0; - mult_a_reg = 0; - mult_b_reg = 0; - flag = 0; - - zero_acc_reg = 0; - zero_acc_pipe_reg = 0; - sload_upper_data_reg = 0; - lower_bits = 0; - sload_upper_data_pipe_reg = 0; - - sign_a_reg = (signa ===1'bz) ? ((representation_a == "SIGNED") ? 1 : 0) : 0; - sign_a_pipe_reg = (signa ===1'bz) ? ((representation_a == "SIGNED") ? 1 : 0) : 0; - sign_b_reg = (signb ===1'bz) ? ((representation_b == "SIGNED") ? 1 : 0) : 0; - sign_b_pipe_reg = (signb ===1'bz) ? ((representation_b == "SIGNED") ? 1 : 0) : 0; - addsub_reg = (addnsub ===1'bz) ? ((accum_direction == "ADD") ? 1 : 0) : 0; - addsub_pipe_reg = (addnsub ===1'bz) ? ((accum_direction == "ADD") ? 1 : 0) : 0; - - result_int = 0; - result = 0; - overflow = 0; - mult_full = 0; - mult_res_out = 0; - mult_signed_out = 0; - mult_res = 0; - - mult_is_saturated_int = 0; - mult_is_saturated_reg = 0; - mult_saturation_tmp = 0; - mult_saturate_overflow = 0; - - accum_result = 0; - accum_saturate_overflow = 0; - accum_is_saturated_latent = 0; - - for (i=0; i<=extra_accumulator_latency; i=i+1) - begin - result_pipe [i] = 0; - accum_saturate_pipe[i] = 0; - mult_is_saturated_pipe[i] = 0; - end - - for (i=0; i<= extra_multiplier_latency; i=i+1) - begin - mult_pipe [i] = 0; - end - - end - - - // --------------------------------------------------------- - // This block updates the internal clock signals accordingly - // every time the global clock signal changes state - // --------------------------------------------------------- - - assign input_a_wire_clk = (input_reg_a == "CLOCK0")? clock0: - (input_reg_a == "UNREGISTERED")? 0: - (input_reg_a == "CLOCK1")? clock1: - (input_reg_a == "CLOCK2")? clock2: - (input_reg_a == "CLOCK3")? clock3:0; - - assign input_b_wire_clk = (input_reg_b == "CLOCK0")? clock0: - (input_reg_b == "UNREGISTERED")? 0: - (input_reg_b == "CLOCK1")? clock1: - (input_reg_b == "CLOCK2")? clock2: - (input_reg_b == "CLOCK3")? clock3:0; - - - assign addsub_wire_clk = (addnsub_reg == "CLOCK0")? clock0: - (addnsub_reg == "UNREGISTERED")? 0: - (addnsub_reg == "CLOCK1")? clock1: - (addnsub_reg == "CLOCK2")? clock2: - (addnsub_reg == "CLOCK3")? clock3:0; - - - assign addsub_pipe_wire_clk = (addnsub_pipeline_reg == "CLOCK0")? clock0: - (addnsub_pipeline_reg == "UNREGISTERED")? 0: - (addnsub_pipeline_reg == "CLOCK1")? clock1: - (addnsub_pipeline_reg == "CLOCK2")? clock2: - (addnsub_pipeline_reg == "CLOCK3")? clock3:0; - - - assign zero_wire_clk = (accum_sload_reg == "CLOCK0")? clock0: - (accum_sload_reg == "UNREGISTERED")? 0: - (accum_sload_reg == "CLOCK1")? clock1: - (accum_sload_reg == "CLOCK2")? clock2: - (accum_sload_reg == "CLOCK3")? clock3:0; - - assign accum_sload_upper_data_wire_clk = (accum_sload_upper_data_reg == "CLOCK0")? clock0: - (accum_sload_upper_data_reg == "UNREGISTERED")? 0: - (accum_sload_upper_data_reg == "CLOCK1")? clock1: - (accum_sload_upper_data_reg == "CLOCK2")? clock2: - (accum_sload_upper_data_reg == "CLOCK3")? clock3:0; - - assign zero_pipe_wire_clk = (accum_sload_pipeline_reg == "CLOCK0")? clock0: - (accum_sload_pipeline_reg == "UNREGISTERED")? 0: - (accum_sload_pipeline_reg == "CLOCK1")? clock1: - (accum_sload_pipeline_reg == "CLOCK2")? clock2: - (accum_sload_pipeline_reg == "CLOCK3")? clock3:0; - - assign accum_sload_upper_data_pipe_wire_clk = (accum_sload_upper_data_pipeline_reg == "CLOCK0")? clock0: - (accum_sload_upper_data_pipeline_reg == "UNREGISTERED")? 0: - (accum_sload_upper_data_pipeline_reg == "CLOCK1")? clock1: - (accum_sload_upper_data_pipeline_reg == "CLOCK2")? clock2: - (accum_sload_upper_data_pipeline_reg == "CLOCK3")? clock3:0; - - assign sign_a_wire_clk =(sign_reg_a == "CLOCK0")? clock0: - (sign_reg_a == "UNREGISTERED")? 0: - (sign_reg_a == "CLOCK1")? clock1: - (sign_reg_a == "CLOCK2")? clock2: - (sign_reg_a == "CLOCK3")? clock3:0; - - - assign sign_b_wire_clk =(sign_reg_b == "CLOCK0")? clock0: - (sign_reg_b == "UNREGISTERED")? 0: - (sign_reg_b == "CLOCK1")? clock1: - (sign_reg_b == "CLOCK2")? clock2: - (sign_reg_b == "CLOCK3")? clock3:0; - - - - assign sign_pipe_a_wire_clk = (sign_pipeline_reg_a == "CLOCK0")? clock0: - (sign_pipeline_reg_a == "UNREGISTERED")? 0: - (sign_pipeline_reg_a == "CLOCK1")? clock1: - (sign_pipeline_reg_a == "CLOCK2")? clock2: - (sign_pipeline_reg_a == "CLOCK3")? clock3:0; - - - assign sign_pipe_b_wire_clk = (sign_pipeline_reg_b == "CLOCK0")? clock0: - (sign_pipeline_reg_b == "UNREGISTERED")? 0: - (sign_pipeline_reg_b == "CLOCK1")? clock1: - (sign_pipeline_reg_b == "CLOCK2")? clock2: - (sign_pipeline_reg_b == "CLOCK3")? clock3:0; - - - assign multiplier_wire_clk =(multiplier_reg == "CLOCK0")? clock0: - (multiplier_reg == "UNREGISTERED")? 0: - (multiplier_reg == "CLOCK1")? clock1: - (multiplier_reg == "CLOCK2")? clock2: - (multiplier_reg == "CLOCK3")? clock3:0; - - assign output_wire_clk = (output_reg == "CLOCK0")? clock0: - (output_reg == "UNREGISTERED")? 0: - (output_reg == "CLOCK1")? clock1: - (output_reg == "CLOCK2")? clock2: - (output_reg == "CLOCK3")? clock3:0; - - - assign mult_pipe_wire_clk = (multiplier_reg == "UNREGISTERED")? clock0: - multiplier_wire_clk; - - assign mult_round_wire_clk =(mult_round_reg == "CLOCK0")? clock0: - (mult_round_reg == "UNREGISTERED")? 0: - (mult_round_reg == "CLOCK1")? clock1: - (mult_round_reg == "CLOCK2")? clock2: - (mult_round_reg == "CLOCK3")? clock3:0; - - assign mult_saturation_wire_clk = (mult_saturation_reg == "CLOCK0")? clock0: - (mult_saturation_reg == "UNREGISTERED")? 0: - (mult_saturation_reg == "CLOCK1")? clock1: - (mult_saturation_reg == "CLOCK2")? clock2: - (mult_saturation_reg == "CLOCK3")? clock3:0; - - assign accum_round_wire_clk = (accum_round_reg == "CLOCK0")? clock0: - (accum_round_reg == "UNREGISTERED")? 0: - (accum_round_reg == "CLOCK1")? clock1: - (accum_round_reg == "CLOCK2")? clock2: - (accum_round_reg == "CLOCK3")? clock3:0; - - assign accum_round_pipe_wire_clk = (accum_round_pipeline_reg == "CLOCK0")? clock0: - (accum_round_pipeline_reg == "UNREGISTERED")? 0: - (accum_round_pipeline_reg == "CLOCK1")? clock1: - (accum_round_pipeline_reg == "CLOCK2")? clock2: - (accum_round_pipeline_reg == "CLOCK3")? clock3:0; - - assign accum_saturation_wire_clk = (accum_saturation_reg == "CLOCK0")? clock0: - (accum_saturation_reg == "UNREGISTERED")? 0: - (accum_saturation_reg == "CLOCK1")? clock1: - (accum_saturation_reg == "CLOCK2")? clock2: - (accum_saturation_reg == "CLOCK3")? clock3:0; - - assign accum_saturation_pipe_wire_clk = (accum_saturation_pipeline_reg == "CLOCK0")? clock0: - (accum_saturation_pipeline_reg == "UNREGISTERED")? 0: - (accum_saturation_pipeline_reg == "CLOCK1")? clock1: - (accum_saturation_pipeline_reg == "CLOCK2")? clock2: - (accum_saturation_pipeline_reg == "CLOCK3")? clock3:0; - - - // ---------------------------------------------------------------- - // This block updates the internal clock enable signals accordingly - // every time the global clock enable signal changes state - // ---------------------------------------------------------------- - - - - assign input_a_wire_en =(input_reg_a == "CLOCK0")? ena0: - (input_reg_a == "UNREGISTERED")? 1: - (input_reg_a == "CLOCK1")? ena1: - (input_reg_a == "CLOCK2")? ena2: - (input_reg_a == "CLOCK3")? ena3:1; - - assign input_b_wire_en =(input_reg_b == "CLOCK0")? ena0: - (input_reg_b == "UNREGISTERED")? 1: - (input_reg_b == "CLOCK1")? ena1: - (input_reg_b == "CLOCK2")? ena2: - (input_reg_b == "CLOCK3")? ena3:1; - - - assign addsub_wire_en = (addnsub_reg == "CLOCK0")? ena0: - (addnsub_reg == "UNREGISTERED")? 1: - (addnsub_reg == "CLOCK1")? ena1: - (addnsub_reg == "CLOCK2")? ena2: - (addnsub_reg == "CLOCK3")? ena3:1; - - - assign addsub_pipe_wire_en =(addnsub_pipeline_reg == "CLOCK0")? ena0: - (addnsub_pipeline_reg == "UNREGISTERED")? 1: - (addnsub_pipeline_reg == "CLOCK1")? ena1: - (addnsub_pipeline_reg == "CLOCK2")? ena2: - (addnsub_pipeline_reg == "CLOCK3")? ena3:1; - - - assign zero_wire_en = (accum_sload_reg == "CLOCK0")? ena0: - (accum_sload_reg == "UNREGISTERED")? 1: - (accum_sload_reg == "CLOCK1")? ena1: - (accum_sload_reg == "CLOCK2")? ena2: - (accum_sload_reg == "CLOCK3")? ena3:1; - - assign accum_sload_upper_data_wire_en = (accum_sload_upper_data_reg == "CLOCK0")? ena0: - (accum_sload_upper_data_reg == "UNREGISTERED")? 1: - (accum_sload_upper_data_reg == "CLOCK1")? ena1: - (accum_sload_upper_data_reg == "CLOCK2")? ena2: - (accum_sload_upper_data_reg == "CLOCK3")? ena3:1; - - assign zero_pipe_wire_en = (accum_sload_pipeline_reg == "CLOCK0")? ena0: - (accum_sload_pipeline_reg == "UNREGISTERED")? 1: - (accum_sload_pipeline_reg == "CLOCK1")? ena1: - (accum_sload_pipeline_reg == "CLOCK2")? ena2: - (accum_sload_pipeline_reg == "CLOCK3")? ena3:1; - - assign accum_sload_upper_data_pipe_wire_en = (accum_sload_upper_data_pipeline_reg == "CLOCK0")? ena0: - (accum_sload_upper_data_pipeline_reg == "UNREGISTERED")? 1: - (accum_sload_upper_data_pipeline_reg == "CLOCK1")? ena1: - (accum_sload_upper_data_pipeline_reg == "CLOCK2")? ena2: - (accum_sload_upper_data_pipeline_reg == "CLOCK3")? ena3:1; - - assign sign_a_wire_en = (sign_reg_a == "CLOCK0")? ena0: - (sign_reg_a == "UNREGISTERED")? 1: - (sign_reg_a == "CLOCK1")? ena1: - (sign_reg_a == "CLOCK2")? ena2: - (sign_reg_a == "CLOCK3")? ena3:1; - - - assign sign_b_wire_en = (sign_reg_b == "CLOCK0")? ena0: - (sign_reg_b == "UNREGISTERED")? 1: - (sign_reg_b == "CLOCK1")? ena1: - (sign_reg_b == "CLOCK2")? ena2: - (sign_reg_b == "CLOCK3")? ena3:1; - - - - assign sign_pipe_a_wire_en = (sign_pipeline_reg_a == "CLOCK0")? ena0: - (sign_pipeline_reg_a == "UNREGISTERED")? 1: - (sign_pipeline_reg_a == "CLOCK1")? ena1: - (sign_pipeline_reg_a == "CLOCK2")? ena2: - (sign_pipeline_reg_a == "CLOCK3")? ena3:1; - - - assign sign_pipe_b_wire_en = (sign_pipeline_reg_b == "CLOCK0")? ena0: - (sign_pipeline_reg_b == "UNREGISTERED")? 1: - (sign_pipeline_reg_b == "CLOCK1")? ena1: - (sign_pipeline_reg_b == "CLOCK2")? ena2: - (sign_pipeline_reg_b == "CLOCK3")? ena3:1; - - - assign multiplier_wire_en = (multiplier_reg == "CLOCK0")? ena0: - (multiplier_reg == "UNREGISTERED")? 1: - (multiplier_reg == "CLOCK1")? ena1: - (multiplier_reg == "CLOCK2")? ena2: - (multiplier_reg == "CLOCK3")? ena3:1; - - assign output_wire_en = (output_reg == "CLOCK0")? ena0: - (output_reg == "UNREGISTERED")? 1: - (output_reg == "CLOCK1")? ena1: - (output_reg == "CLOCK2")? ena2: - (output_reg == "CLOCK3")? ena3:1; - - - assign mult_pipe_wire_en = (multiplier_reg == "UNREGISTERED")? ena0: - multiplier_wire_en; - - - assign mult_round_wire_en = (mult_round_reg == "CLOCK0")? ena0: - (mult_round_reg == "UNREGISTERED")? 1: - (mult_round_reg == "CLOCK1")? ena1: - (mult_round_reg == "CLOCK2")? ena2: - (mult_round_reg == "CLOCK3")? ena3:1; - - - assign mult_saturation_wire_en = (mult_saturation_reg == "CLOCK0")? ena0: - (mult_saturation_reg == "UNREGISTERED")? 1: - (mult_saturation_reg == "CLOCK1")? ena1: - (mult_saturation_reg == "CLOCK2")? ena2: - (mult_saturation_reg == "CLOCK3")? ena3:1; - - assign accum_round_wire_en = (accum_round_reg == "CLOCK0")? ena0: - (accum_round_reg == "UNREGISTERED")? 1: - (accum_round_reg == "CLOCK1")? ena1: - (accum_round_reg == "CLOCK2")? ena2: - (accum_round_reg == "CLOCK3")? ena3:1; - - assign accum_round_pipe_wire_en = (accum_round_pipeline_reg == "CLOCK0")? ena0: - (accum_round_pipeline_reg == "UNREGISTERED")? 1: - (accum_round_pipeline_reg == "CLOCK1")? ena1: - (accum_round_pipeline_reg == "CLOCK2")? ena2: - (accum_round_pipeline_reg == "CLOCK3")? ena3:1; - - assign accum_saturation_wire_en = (accum_saturation_reg == "CLOCK0")? ena0: - (accum_saturation_reg == "UNREGISTERED")? 1: - (accum_saturation_reg == "CLOCK1")? ena1: - (accum_saturation_reg == "CLOCK2")? ena2: - (accum_saturation_reg == "CLOCK3")? ena3:1; - - assign accum_saturation_pipe_wire_en = (accum_saturation_pipeline_reg == "CLOCK0")? ena0: - (accum_saturation_pipeline_reg == "UNREGISTERED")? 1: - (accum_saturation_pipeline_reg == "CLOCK1")? ena1: - (accum_saturation_pipeline_reg == "CLOCK2")? ena2: - (accum_saturation_pipeline_reg == "CLOCK3")? ena3:1; - - // --------------------------------------------------------- - // This block updates the internal clear signals accordingly - // every time the global clear signal changes state - // --------------------------------------------------------- - - assign input_a_wire_clr =(input_aclr_a == "ACLR3")? aclr3: - (input_aclr_a == "UNUSED")? 0: - (input_aclr_a == "ACLR0")? aclr0: - (input_aclr_a == "ACLR1")? aclr1: - (input_aclr_a == "ACLR2")? aclr2: 0; - - assign input_b_wire_clr = (input_aclr_b == "ACLR3")? aclr3: - (input_aclr_b == "UNUSED")? 0: - (input_aclr_b == "ACLR0")? aclr0: - (input_aclr_b == "ACLR1")? aclr1: - (input_aclr_b == "ACLR2")? aclr2: 0; - - - assign addsub_wire_clr =(addnsub_aclr == "ACLR3")? aclr3: - (addnsub_aclr == "UNUSED")? 0: - (addnsub_aclr == "ACLR0")? aclr0: - (addnsub_aclr == "ACLR1")? aclr1: - (addnsub_aclr == "ACLR2")? aclr2: 0; - - - assign addsub_pipe_wire_clr = (addnsub_pipeline_aclr == "ACLR3")? aclr3: - (addnsub_pipeline_aclr == "UNUSED")? 0: - (addnsub_pipeline_aclr == "ACLR0")? aclr0: - (addnsub_pipeline_aclr == "ACLR1")? aclr1: - (addnsub_pipeline_aclr == "ACLR2")? aclr2: 0; - - - assign zero_wire_clr = (accum_sload_aclr == "ACLR3")? aclr3: - (accum_sload_aclr == "UNUSED")? 0: - (accum_sload_aclr == "ACLR0")? aclr0: - (accum_sload_aclr == "ACLR1")? aclr1: - (accum_sload_aclr == "ACLR2")? aclr2: 0; - - assign accum_sload_upper_data_wire_clr = (accum_sload_upper_data_aclr == "ACLR3")? aclr3: - (accum_sload_upper_data_aclr == "UNUSED")? 0: - (accum_sload_upper_data_aclr == "ACLR0")? aclr0: - (accum_sload_upper_data_aclr == "ACLR1")? aclr1: - (accum_sload_upper_data_aclr == "ACLR2")? aclr2: 0; - - assign zero_pipe_wire_clr = (accum_sload_pipeline_aclr == "ACLR3")? aclr3: - (accum_sload_pipeline_aclr == "UNUSED")? 0: - (accum_sload_pipeline_aclr == "ACLR0")? aclr0: - (accum_sload_pipeline_aclr == "ACLR1")? aclr1: - (accum_sload_pipeline_aclr == "ACLR2")? aclr2: 0; - - assign accum_sload_upper_data_pipe_wire_clr = (accum_sload_upper_data_pipeline_aclr == "ACLR3")? aclr3: - (accum_sload_upper_data_pipeline_aclr == "UNUSED")? 0: - (accum_sload_upper_data_pipeline_aclr == "ACLR0")? aclr0: - (accum_sload_upper_data_pipeline_aclr == "ACLR1")? aclr1: - (accum_sload_upper_data_pipeline_aclr == "ACLR2")? aclr2: 0; - - assign sign_a_wire_clr =(sign_aclr_a == "ACLR3")? aclr3: - (sign_aclr_a == "UNUSED")? 0: - (sign_aclr_a == "ACLR0")? aclr0: - (sign_aclr_a == "ACLR1")? aclr1: - (sign_aclr_a == "ACLR2")? aclr2: 0; - - - assign sign_b_wire_clr = (sign_aclr_b == "ACLR3")? aclr3: - (sign_aclr_b == "UNUSED")? 0: - (sign_aclr_b == "ACLR0")? aclr0: - (sign_aclr_b == "ACLR1")? aclr1: - (sign_aclr_b == "ACLR2")? aclr2: 0; - - - - - assign sign_pipe_a_wire_clr = (sign_pipeline_aclr_a == "ACLR3")? aclr3: - (sign_pipeline_aclr_a == "UNUSED")? 0: - (sign_pipeline_aclr_a == "ACLR0")? aclr0: - (sign_pipeline_aclr_a == "ACLR1")? aclr1: - (sign_pipeline_aclr_a == "ACLR2")? aclr2: 0; - - - assign sign_pipe_b_wire_clr = (sign_pipeline_aclr_b == "ACLR3")? aclr3: - (sign_pipeline_aclr_b == "UNUSED")? 0: - (sign_pipeline_aclr_b == "ACLR0")? aclr0: - (sign_pipeline_aclr_b == "ACLR1")? aclr1: - (sign_pipeline_aclr_b == "ACLR2")? aclr2: 0; - - - assign multiplier_wire_clr = (multiplier_aclr == "ACLR3")? aclr3: - (multiplier_aclr == "UNUSED")? 0: - (multiplier_aclr == "ACLR0")? aclr0: - (multiplier_aclr == "ACLR1")? aclr1: - (multiplier_aclr == "ACLR2")? aclr2: 0; - - assign output_wire_clr =(output_aclr == "ACLR3")? aclr3: - (output_aclr == "UNUSED")? 0: - (output_aclr == "ACLR0")? aclr0: - (output_aclr == "ACLR1")? aclr1: - (output_aclr == "ACLR2")? aclr2: 0; - - - assign mult_pipe_wire_clr = (multiplier_reg == "UNREGISTERED")? aclr0: - multiplier_wire_clr; - - assign mult_round_wire_clr = (mult_round_aclr == "ACLR3")? aclr3: - (mult_round_aclr == "UNUSED")? 0: - (mult_round_aclr == "ACLR0")? aclr0: - (mult_round_aclr == "ACLR1")? aclr1: - (mult_round_aclr == "ACLR2")? aclr2: 0; - - assign mult_saturation_wire_clr = (mult_saturation_aclr == "ACLR3")? aclr3: - (mult_saturation_aclr == "UNUSED")? 0: - (mult_saturation_aclr == "ACLR0")? aclr0: - (mult_saturation_aclr == "ACLR1")? aclr1: - (mult_saturation_aclr == "ACLR2")? aclr2: 0; - - assign accum_round_wire_clr = (accum_round_aclr == "ACLR3")? aclr3: - (accum_round_aclr == "UNUSED")? 0: - (accum_round_aclr == "ACLR0")? aclr0: - (accum_round_aclr == "ACLR1")? aclr1: - (accum_round_aclr == "ACLR2")? aclr2: 0; - - assign accum_round_pipe_wire_clr = (accum_round_pipeline_aclr == "ACLR3")? aclr3: - (accum_round_pipeline_aclr == "UNUSED")? 0: - (accum_round_pipeline_aclr == "ACLR0")? aclr0: - (accum_round_pipeline_aclr == "ACLR1")? aclr1: - (accum_round_pipeline_aclr == "ACLR2")? aclr2: 0; - - assign accum_saturation_wire_clr = (accum_saturation_aclr == "ACLR3")? aclr3: - (accum_saturation_aclr == "UNUSED")? 0: - (accum_saturation_aclr == "ACLR0")? aclr0: - (accum_saturation_aclr == "ACLR1")? aclr1: - (accum_saturation_aclr == "ACLR2")? aclr2: 0; - - assign accum_saturation_pipe_wire_clr = (accum_saturation_pipeline_aclr == "ACLR3")? aclr3: - (accum_saturation_pipeline_aclr == "UNUSED")? 0: - (accum_saturation_pipeline_aclr == "ACLR0")? aclr0: - (accum_saturation_pipeline_aclr == "ACLR1")? aclr1: - (accum_saturation_pipeline_aclr == "ACLR2")? aclr2: 0; - - // ------------------------------------------------------------------------ - // This block contains 1 register and 1 combinatorial block (to set mult_a) - // Signal Registered : dataa - // - // Register is controlled by posedge input_wire_a_clk - // Register has an asynchronous clear signal, input_reg_a_wire_clr - // NOTE : The combinatorial block will be executed if - // input_reg_a is unregistered and dataa changes value - // ------------------------------------------------------------------------ - assign mult_a_wire = (input_reg_a == "UNREGISTERED")? mult_a_tmp : mult_a_reg; - - assign mult_a_tmp = (int_width_a == width_a) ? ((input_source_a == "DATAA")? dataa : - (input_source_a == "SCANA")? scanina : - (sourcea == 1)? scanina : dataa) - : ((input_source_a == "DATAA")? {dataa, {(diff_width_a){1'b0}}} : - (input_source_a == "SCANA")? {scanina, {(diff_width_a){1'b0}}} : - (sourcea == 1)? {scanina, {(diff_width_a){1'b0}}} : {dataa, {(diff_width_a){1'b0}}}); - - always @(posedge input_a_wire_clk or posedge input_a_wire_clr) - begin - if (input_a_wire_clr == 1) - mult_a_reg <= 0; - else if ((input_a_wire_clk == 1) && (input_a_wire_en == 1)) - begin - if (input_source_a == "DATAA") - mult_a_reg <= (int_width_a == width_a) ? dataa : {dataa, {(diff_width_a){1'b0}}}; - else if (input_source_a == "SCANA") - mult_a_reg <= (int_width_a == width_a) ? scanina : {scanina,{(diff_width_a){1'b0}}}; - else if (input_source_a == "VARIABLE") - begin - if (sourcea == 1) - mult_a_reg <= (int_width_a == width_a) ? scanina : {scanina, {(diff_width_a){1'b0}}}; - else - mult_a_reg <= (int_width_a == width_a) ? dataa : {dataa, {(diff_width_a){1'b0}}}; - end - end - end - - - // ------------------------------------------------------------------------ - // This block contains 1 register and 1 combinatorial block (to set mult_b) - // Signal Registered : datab - // - // Register is controlled by posedge input_wire_b_clk - // Register has an asynchronous clear signal, input_reg_b_wire_clr - // NOTE : The combinatorial block will be executed if - // input_reg_b is unregistered and datab changes value - // ------------------------------------------------------------------------ - assign mult_b_wire = (input_reg_b == "UNREGISTERED")? mult_b_tmp : mult_b_reg; - assign mult_b_tmp = (int_width_b == width_b) ? ((input_source_b == "DATAB")? datab : - (input_source_b == "SCANB")? scaninb : - (sourceb == 1)? scaninb : datab) - : ((input_source_b == "DATAB")? {datab, {(diff_width_b){1'b0}}} : - (input_source_b == "SCANB")? {scaninb, {(diff_width_b){1'b0}}} : - (sourceb == 1)? {scaninb, {(diff_width_b){1'b0}}} : {datab, {(diff_width_b){1'b0}}}); - - always @(posedge input_b_wire_clk or posedge input_b_wire_clr ) - begin - if (input_b_wire_clr == 1) - mult_b_reg <= 0; - else if ((input_b_wire_clk == 1) && (input_b_wire_en == 1)) - begin - if (input_source_b == "DATAB") - mult_b_reg <= (int_width_b == width_b) ? datab : {datab, {(diff_width_b){1'b0}}}; - else if (input_source_b == "SCANB") - mult_b_reg <= (int_width_b == width_b) ? scaninb : {scaninb, {(diff_width_b){1'b0}}}; - else if (input_source_b == "VARIABLE") - begin - if (sourceb == 1) - mult_b_reg <= (int_width_b == width_b) ? scaninb : {scaninb, {(diff_width_b){1'b0}}}; - else - mult_b_reg <= (int_width_b == width_b) ? datab : {datab, {(diff_width_b){1'b0}}}; - end - end - end - - - // ----------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addnsub_reg) - // Signal Registered : addnsub - // - // Register is controlled by posedge addsub_wire_clk - // Register has an asynchronous clear signal, addsub_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub_reg is unregistered and addnsub changes value - // ----------------------------------------------------------------------------- - assign addsub_wire = ((addnsub_reg == "UNREGISTERED") )? addnsub : addsub_reg; - - always @(posedge addsub_wire_clk or posedge addsub_wire_clr) - begin - if (addsub_wire_clr == 1) - addsub_reg <= 0; - else if ((addsub_wire_clk == 1) && (addsub_wire_en == 1)) - addsub_reg <= addnsub; - end - - - // ----------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addsub_pipe) - // Signal Registered : addsub_latent - // - // Register is controlled by posedge addsub_pipe_wire_clk - // Register has an asynchronous clear signal, addsub_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // addsub_pipeline_reg is unregistered and addsub_latent changes value - // ----------------------------------------------------------------------------- - assign addsub_pipe_wire = (addnsub_pipeline_reg == "UNREGISTERED")?addsub_latent : addsub_pipe_reg; - - always @(posedge addsub_pipe_wire_clk or posedge addsub_pipe_wire_clr ) - begin - if (addsub_pipe_wire_clr == 1) - addsub_pipe_reg <= 0; - else if ((addsub_pipe_wire_clk == 1) && (addsub_pipe_wire_en == 1)) - addsub_pipe_reg <= addsub_latent; - - end - - - // ------------------------------------------------------------------------------ - // This block contains 1 register and 1 combinatorial block (to set zero_acc_reg) - // Signal Registered : accum_sload - // - // Register is controlled by posedge zero_wire_clk - // Register has an asynchronous clear signal, zero_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_sload_reg is unregistered and accum_sload changes value - // ------------------------------------------------------------------------------ - assign zero_acc_wire = (accum_sload_reg == "UNREGISTERED")?accum_sload : zero_acc_reg; - - always @(posedge zero_wire_clk or posedge zero_wire_clr) - begin - if (zero_wire_clr == 1) - begin - zero_acc_reg <= 0; - end - else if ((zero_wire_clk == 1) && (zero_wire_en == 1)) - begin - zero_acc_reg <= accum_sload; - end - end - - assign sload_upper_data_wire = (accum_sload_upper_data_reg == "UNREGISTERED")? accum_sload_upper_data_int : sload_upper_data_reg; - - - always @(posedge accum_sload_upper_data_wire_clk or posedge accum_sload_upper_data_wire_clr) - begin - if (accum_sload_upper_data_wire_clr == 1) - begin - sload_upper_data_reg <= 0; - end - else if ((accum_sload_upper_data_wire_clk == 1) && (accum_sload_upper_data_wire_en == 1)) - begin - sload_upper_data_reg <= accum_sload_upper_data_int; - end - end - - // -------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set zero_acc_pipe) - // Signal Registered : zeroacc_latent - // - // Register is controlled by posedge zero_pipe_wire_clk - // Register has an asynchronous clear signal, zero_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_sload_pipeline_reg is unregistered and zeroacc_latent changes value - // -------------------------------------------------------------------------------- - assign zero_acc_pipe_wire = (accum_sload_pipeline_reg == "UNREGISTERED")?zeroacc_latent : zero_acc_pipe_reg; - - always @(posedge zero_pipe_wire_clk or posedge zero_pipe_wire_clr) - begin - if (zero_pipe_wire_clr == 1) - begin - zero_acc_pipe_reg <= 0; - end - else if ((zero_pipe_wire_clk == 1) && (zero_pipe_wire_en == 1)) - begin - zero_acc_pipe_reg <= zeroacc_latent; - end - - end - - - always @(posedge accum_sload_upper_data_pipe_wire_clk or posedge accum_sload_upper_data_pipe_wire_clr) - begin - if (accum_sload_upper_data_pipe_wire_clr == 1) - begin - sload_upper_data_pipe_reg <= 0; - end - else if ((accum_sload_upper_data_pipe_wire_clk == 1) && (accum_sload_upper_data_pipe_wire_en == 1)) - begin - sload_upper_data_pipe_reg <= sload_upper_data_latent; - end - - end - - always @(sload_upper_data_latent or sload_upper_data_pipe_reg or sign_a_int or sign_b_int ) - begin - if (accum_sload_upper_data_pipeline_reg == "UNREGISTERED") - begin - if(int_width_result > width_result) - begin - - if(sign_a_int | sign_b_int) - begin - sload_upper_data_pipe_wire[int_width_result - 1 : 0] = {int_width_result{sload_upper_data_latent[width_upper_data-1]}}; - end - else - begin - sload_upper_data_pipe_wire[int_width_result - 1 : 0] = {int_width_result{1'b0}}; - end - - if(width_result > width_upper_data) - begin - for(i4 = 0; i4 < width_result - width_upper_data + int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : width_result - width_upper_data + int_extra_width] = sload_upper_data_latent; - end - else if(width_result == width_upper_data) - begin - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width: 0 + int_extra_width] = sload_upper_data_latent; - end - else - begin - for(i4 = int_extra_width; i4 < sload_for_limit; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = sload_upper_data_latent[i4]; - end - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - end - end - else - begin - if(width_result > width_upper_data) - begin - for(i4 = 0; i4 < width_result - width_upper_data + int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : width_result - width_upper_data + int_extra_width] = sload_upper_data_latent; - end - else if(width_result == width_upper_data) - begin - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : 0 + int_extra_width] = sload_upper_data_latent; - end - else - begin - for(i4 = int_extra_width; i4 < sload_for_limit; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = sload_upper_data_latent[i4]; - end - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - end - end - end - else - begin - if(int_width_result > width_result) - begin - - if(sign_a_int | sign_b_int) - begin - sload_upper_data_pipe_wire[int_width_result - 1 : 0] = {int_width_result{sload_upper_data_pipe_reg[width_upper_data-1]}}; - end - else - begin - sload_upper_data_pipe_wire[int_width_result - 1 : 0] = {int_width_result{1'b0}}; - end - - if(width_result > width_upper_data) - begin - for(i4 = 0; i4 < width_result - width_upper_data + int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : width_result - width_upper_data + int_extra_width] = sload_upper_data_pipe_reg; - end - else if(width_result == width_upper_data) - begin - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width: 0 + int_extra_width] = sload_upper_data_pipe_reg; - end - else - begin - for(i4 = int_extra_width; i4 < sload_for_limit; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = sload_upper_data_pipe_reg[i4]; - end - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - end - end - else - begin - if(width_result > width_upper_data) - begin - for(i4 = 0; i4 < width_result - width_upper_data + int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : width_result - width_upper_data + int_extra_width] = sload_upper_data_pipe_reg; - end - else if(width_result == width_upper_data) - begin - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - sload_upper_data_pipe_wire[width_result - 1 + int_extra_width : 0 + int_extra_width] = sload_upper_data_pipe_reg; - end - else - begin - for(i4 = int_extra_width; i4 < sload_for_limit; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = sload_upper_data_pipe_reg[i4]; - end - for(i4 = 0; i4 < int_extra_width; i4 = i4 + 1) - begin - sload_upper_data_pipe_wire[i4] = 1'b0; - end - end - end - end - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_a_reg) - // Signal Registered : signa - // - // Register is controlled by posedge sign_a_wire_clk - // Register has an asynchronous clear signal, sign_a_wire_clr - // NOTE : The combinatorial block will be executed if - // sign_reg_a is unregistered and signa changes value - // ---------------------------------------------------------------------------- - assign sign_a_wire = (sign_reg_a == "UNREGISTERED")? signa : sign_a_reg; - - always @(posedge sign_a_wire_clk or posedge sign_a_wire_clr) - begin - if (sign_a_wire_clr == 1) - sign_a_reg <= 0; - else if ((sign_a_wire_clk == 1) && (sign_a_wire_en == 1)) - sign_a_reg <= signa; - end - - - // ----------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_a_pipe) - // Signal Registered : signa_latent - // - // Register is controlled by posedge sign_pipe_a_wire_clk - // Register has an asynchronous clear signal, sign_pipe_a_wire_clr - // NOTE : The combinatorial block will be executed if - // sign_pipeline_reg_a is unregistered and signa_latent changes value - // ----------------------------------------------------------------------------- - assign sign_a_pipe_wire = (sign_pipeline_reg_a == "UNREGISTERED")? signa_latent : sign_a_pipe_reg; - - always @(posedge sign_pipe_a_wire_clk or posedge sign_pipe_a_wire_clr) - begin - if (sign_pipe_a_wire_clr == 1) - sign_a_pipe_reg <= 0; - else if ((sign_pipe_a_wire_clk == 1) && (sign_pipe_a_wire_en == 1)) - sign_a_pipe_reg <= signa_latent; - end - - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_b_reg) - // Signal Registered : signb - // - // Register is controlled by posedge sign_b_wire_clk - // Register has an asynchronous clear signal, sign_b_wire_clr - // NOTE : The combinatorial block will be executed if - // sign_reg_b is unregistered and signb changes value - // ---------------------------------------------------------------------------- - assign sign_b_wire = (sign_reg_b == "UNREGISTERED") ? signb : sign_b_reg; - - always @(posedge sign_b_wire_clk or posedge sign_b_wire_clr) - begin - if (sign_b_wire_clr == 1) - sign_b_reg <= 0; - else if ((sign_b_wire_clk == 1) && (sign_b_wire_en == 1)) - sign_b_reg <= signb; - end - - - // ----------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_b_pipe) - // Signal Registered : signb_latent - // - // Register is controlled by posedge sign_pipe_b_wire_clk - // Register has an asynchronous clear signal, sign_pipe_b_wire_clr - // NOTE : The combinatorial block will be executed if - // sign_pipeline_reg_b is unregistered and signb_latent changes value - // ----------------------------------------------------------------------------- - assign sign_b_pipe_wire = (sign_pipeline_reg_b == "UNREGISTERED" )? signb_latent : sign_b_pipe_reg; - - always @(posedge sign_pipe_b_wire_clk or posedge sign_pipe_b_wire_clr ) - begin - if (sign_pipe_b_wire_clr == 1) - sign_b_pipe_reg <= 0; - else if ((sign_pipe_b_wire_clk == 1) && (sign_pipe_b_wire_en == 1)) - sign_b_pipe_reg <= signb_latent; - - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_round) - // Signal Registered : mult_round - // - // Register is controlled by posedge mult_round_wire_clk - // Register has an asynchronous clear signal, mult_round_wire_clr - // NOTE : The combinatorial block will be executed if - // mult_round_reg is unregistered and mult_round changes value - // ---------------------------------------------------------------------------- - - assign mult_round_int = (mult_round_reg == "UNREGISTERED")? mult_round : mult_round_tmp; - - always @(posedge mult_round_wire_clk or posedge mult_round_wire_clr) - begin - if (mult_round_wire_clr == 1) - mult_round_tmp <= 0; - else if ((mult_round_wire_clk == 1) && (mult_round_wire_en == 1)) - mult_round_tmp <= mult_round; - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_saturation) - // Signal Registered : mult_saturation - // - // Register is controlled by posedge mult_saturation_wire_clk - // Register has an asynchronous clear signal, mult_saturation_wire_clr - // NOTE : The combinatorial block will be executed if - // mult_saturation_reg is unregistered and mult_saturation changes value - // ---------------------------------------------------------------------------- - - assign mult_saturation_int = (mult_saturation_reg == "UNREGISTERED")? mult_saturation : mult_saturation_tmp; - - always @(posedge mult_saturation_wire_clk or posedge mult_saturation_wire_clr) - begin - if (mult_saturation_wire_clr == 1) - mult_saturation_tmp <= 0; - else if ((mult_saturation_wire_clk == 1) && (mult_saturation_wire_en == 1)) - mult_saturation_tmp <= mult_saturation; - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set accum_round) - // Signal Registered : accum_round - // - // Register is controlled by posedge accum_round_wire_clk - // Register has an asynchronous clear signal, accum_round_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_round_reg is unregistered and accum_round changes value - // ---------------------------------------------------------------------------- - - assign accum_round_tmp1_wire = (accum_round_reg == "UNREGISTERED")? accum_round : accum_round_tmp1; - - always @(posedge accum_round_wire_clk or posedge accum_round_wire_clr) - begin - if (accum_round_wire_clr == 1) - accum_round_tmp1 <= 0; - else if ((accum_round_wire_clk == 1) && (accum_round_wire_en == 1)) - accum_round_tmp1 <= accum_round; - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set accum_round_tmp1) - // Signal Registered : accum_round_tmp1 - // - // Register is controlled by posedge accum_round_pipe_wire_clk - // Register has an asynchronous clear signal, accum_round_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_round_pipeline_reg is unregistered and accum_round_tmp1_wire changes value - // ---------------------------------------------------------------------------- - - assign accum_round_int = (accum_round_pipeline_reg == "UNREGISTERED")? accum_round_tmp1_wire : accum_round_tmp2; - - always @(posedge accum_round_pipe_wire_clk or posedge accum_round_pipe_wire_clr) - begin - if (accum_round_pipe_wire_clr == 1) - accum_round_tmp2 <= 0; - else if ((accum_round_pipe_wire_clk == 1) && (accum_round_pipe_wire_en == 1)) - accum_round_tmp2 <= accum_round_tmp1_wire; - end - - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set accum_saturation) - // Signal Registered : accum_saturation - // - // Register is controlled by posedge accum_saturation_wire_clk - // Register has an asynchronous clear signal, accum_saturation_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_saturation_reg is unregistered and accum_saturation changes value - // ---------------------------------------------------------------------------- - - assign accum_saturation_tmp1_wire = (accum_saturation_reg == "UNREGISTERED")? accum_saturation : accum_saturation_tmp1; - - always @(posedge accum_saturation_wire_clk or posedge accum_saturation_wire_clr) - begin - if (accum_saturation_wire_clr == 1) - accum_saturation_tmp1 <= 0; - else if ((accum_saturation_wire_clk == 1) && (accum_saturation_wire_en == 1)) - accum_saturation_tmp1 <= accum_saturation; - end - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set accum_saturation_tmp1) - // Signal Registered : accum_saturation_tmp1 - // - // Register is controlled by posedge accum_saturation_pipe_wire_clk - // Register has an asynchronous clear signal, accum_saturation_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // accum_saturation_pipeline_reg is unregistered and accum_saturation_tmp1_wire changes value - // ---------------------------------------------------------------------------- - - assign accum_saturation_int = (accum_saturation_pipeline_reg == "UNREGISTERED")? accum_saturation_tmp1_wire : accum_saturation_tmp2; - - always @(posedge accum_saturation_pipe_wire_clk or posedge accum_saturation_pipe_wire_clr) - begin - if (accum_saturation_pipe_wire_clr == 1) - accum_saturation_tmp2 <= 0; - else if ((accum_saturation_pipe_wire_clk == 1) && (accum_saturation_pipe_wire_en == 1)) - accum_saturation_tmp2 <= accum_saturation_tmp1_wire; - end - - - // ------------------------------------------------------------------------------------------------------ - // This block checks if the two numbers to be multiplied (mult_a/mult_b) is to be interpreted - // as a negative number or not. If so, then two's complement is performed. - // The numbers are then multipled - // The sign of the result (positive or negative) is determined based on the sign of the two input numbers - // ------------------------------------------------------------------------------------------------------ - - always @(mult_a_wire or mult_b_wire or sign_a_reg_int or sign_b_reg_int or temp_mult_zero) - begin - neg_a = mult_a_wire [int_width_a-1] & (sign_a_reg_int); - neg_b = mult_b_wire [int_width_b-1] & (sign_b_reg_int); - - mult_a_int = (neg_a == 1) ? ~mult_a_wire + 1 : mult_a_wire; - mult_b_int = (neg_b == 1) ? ~mult_b_wire + 1 : mult_b_wire; - - temp_mult_1 = mult_a_int * mult_b_int; - temp_mult_signed = sign_a_reg_int | sign_b_reg_int; - temp_mult = (neg_a ^ neg_b) ? (temp_mult_zero - temp_mult_1) : temp_mult_1; - - end - - always @(temp_mult or mult_saturation_int or mult_round_int) - begin - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 1) - begin - // StratixII rounding support - - // This is based on both input is in Q1.15 format - - if ((multiplier_rounding == "YES") || - ((multiplier_rounding == "VARIABLE") && (mult_round_int == 1))) - begin - mult_round_out = temp_mult + ( 1 << (bits_to_round)); - - end - else - begin - mult_round_out = temp_mult; - end - - // StratixII saturation support - - if ((multiplier_saturation == "YES") || - (( multiplier_saturation == "VARIABLE") && (mult_saturation_int == 1))) - begin - mult_saturate_overflow = (mult_round_out[int_width_a + int_width_b - 1] == 0 && mult_round_out[int_width_a + int_width_b - 2] == 1); - if (mult_saturate_overflow == 0) - begin - mult_saturate_out = mult_round_out; - end - else - begin - for (i = (int_width_a + int_width_b - 1); i >= (int_width_a + int_width_b - 2); i = i - 1) - begin - mult_saturate_out[i] = mult_round_out[int_width_a + int_width_b - 1]; - end - - for (i = (int_width_a + int_width_b - 3); i >= 0; i = i - 1) - begin - mult_saturate_out[i] = ~mult_round_out[int_width_a + int_width_b - 1]; - end - - for (i= sat_for_ini; i >=0; i = i - 1) - begin - mult_saturate_out[i] = 1'b0; - end - - end - end - else - begin - mult_saturate_out = mult_round_out; - mult_saturate_overflow = 0; - end - - if ((multiplier_rounding == "YES") || - ((multiplier_rounding == "VARIABLE") && (mult_round_int == 1))) - begin - mult_result = mult_saturate_out; - - for (i = mult_round_for_ini; i >= 0; i = i - 1) - begin - mult_result[i] = 1'b0; - end - end - else - begin - mult_result = mult_saturate_out; - end - end - - mult_final_out = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) ? - temp_mult : mult_result; - - end - - - // --------------------------------------------------------------------------------------- - // This block contains 2 register (to set mult_res and mult_signed) - // Signals Registered : mult_out_latent, mult_signed_latent - // - // Both the registers are controlled by the same clock signal, posedge multiplier_wire_clk - // Both registers share the same clock enable signal multipler_wire_en - // Both registers have the same asynchronous signal, posedge multiplier_wire_clr - // --------------------------------------------------------------------------------------- - assign mult_is_saturated_wire = (multiplier_reg == "UNREGISTERED")? mult_is_saturated_latent : mult_is_saturated_reg; - - always @(posedge multiplier_wire_clk or posedge multiplier_wire_clr) - begin - if (multiplier_wire_clr == 1) - begin - mult_res <=0; - mult_signed <=0; - mult_is_saturated_reg <=0; - end - else if ((multiplier_wire_clk == 1) && (multiplier_wire_en == 1)) - begin - mult_res <= mult_out_latent; - mult_signed <= mult_signed_latent; - mult_is_saturated_reg <= mult_is_saturated_latent; - end - end - - - // -------------------------------------------------------------------- - // This block contains 1 register (to set mult_full) - // Signal Registered : mult_pipe - // - // Register is controlled by posedge mult_pipe_wire_clk - // Register also has an asynchronous clear signal posedge mult_pipe_wire_clr - // -------------------------------------------------------------------- - always @(posedge mult_pipe_wire_clk or posedge mult_pipe_wire_clr ) - begin - if (mult_pipe_wire_clr ==1) - begin - // clear the pipeline - for (i2=0; i2<=extra_multiplier_latency; i2=i2+1) - begin - mult_pipe [i2] = 0; - end - mult_full = 0; - end - else if ((mult_pipe_wire_clk == 1) && (mult_pipe_wire_en == 1)) - begin - mult_pipe [head_mult] = {addsub_wire, zero_acc_wire, sign_a_wire, sign_b_wire, temp_mult_signed, mult_final_out, sload_upper_data_wire, mult_saturate_overflow}; - head_mult = (head_mult +1) % (extra_multiplier_latency); - mult_full = mult_pipe[head_mult]; - end - end - - - // ------------------------------------------------------------- - // This is the main process block that performs the accumulation - // ------------------------------------------------------------- - always @(posedge output_wire_clk or posedge output_wire_clr) - begin - if (output_wire_clr == 1) - begin - temp_sum = 0; - accum_result = 0; - - result_int = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) ? - temp_sum[int_width_result -1 : 0] : accum_result; - - overflow_int = 0; - accum_saturate_overflow = 0; - mult_is_saturated_int = 0; - for (i3=0; i3<=extra_accumulator_latency; i3=i3+1) - begin - result_pipe [i3] = 0; - accum_saturate_pipe[i3] = 0; - mult_is_saturated_pipe[i3] = 0; - end - - flag = ~flag; - - end - else if (output_wire_clk ==1) - begin - - if (output_wire_en ==1) - begin - if (extra_accumulator_latency == 0) - begin - mult_is_saturated_int = mult_is_saturated_wire; - end - - if (multiplier_reg == "UNREGISTERED") - begin - mult_res_out = {{int_width_result - int_width_a - int_width_b {(sign_a_int | sign_b_int) & mult_out_latent [int_width_a+int_width_b -1]}}, mult_out_latent}; - mult_signed_out = (sign_a_int | sign_b_int); - end - else - begin - mult_res_out = {{int_width_result - int_width_a - int_width_b {(sign_a_int | sign_b_int) & mult_res [int_width_a+int_width_b -1]}}, mult_res}; - mult_signed_out = (sign_a_int | sign_b_int); - end - - if (addsub_int) - begin - //add - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0 && - dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) - begin - temp_sum = ( (zero_acc_int==0) ? result_int : 0) + mult_res_out; - end - else - begin - temp_sum = ( (zero_acc_int==0) ? result_int : sload_upper_data_pipe_wire) + mult_res_out; - end - - cout_int = temp_sum [int_width_result]; - end - else - begin - //subtract - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0 && - dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) - begin - temp_sum = ( (zero_acc_int==0) ? result_int : 0) - (mult_res_out); - cout_int = (( (zero_acc_int==0) ? result_int : 0) >= mult_res_out) ? 1 : 0; - end - else - begin - temp_sum = ( (zero_acc_int==0) ? result_int : sload_upper_data_pipe_wire) - mult_res_out; - cout_int = (( (zero_acc_int==0) ? result_int : sload_upper_data_pipe_wire) >= mult_res_out) ? 1 : 0; - end - end - - //compute overflow - if ((mult_signed_out==1) && (mult_res_out != 0)) - begin - if (zero_acc_int == 0) - begin - overflow_tmp_int = (mult_res_out [int_width_a+int_width_b -1] ~^ result_int [int_width_result-1]) ^ (~addsub_int); - overflow_int = overflow_tmp_int & (result_int [int_width_result -1] ^ temp_sum[int_width_result -1]); - end - else - begin - overflow_tmp_int = (mult_res_out [int_width_a+int_width_b -1] ~^ sload_upper_data_pipe_wire [int_width_result-1]) ^ (~addsub_int); - overflow_int = overflow_tmp_int & (sload_upper_data_pipe_wire [int_width_result -1] ^ temp_sum[int_width_result -1]); - end - end - else - begin - overflow_int = (addsub_int ==1)? cout_int : ~cout_int; - end - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 1) - begin - // StratixII rounding support - - // This is based on both input is in Q1.15 format - - if ((accumulator_rounding == "YES") || - ((accumulator_rounding == "VARIABLE") && (accum_round_int == 1))) - begin - accum_round_out = temp_sum[int_width_result -1 : 0] + ( 1 << (bits_to_round)); - end - else - begin - accum_round_out = temp_sum[int_width_result - 1 : 0]; - end - - // StratixII saturation support - - if ((accumulator_saturation == "YES") || - ((accumulator_saturation == "VARIABLE") && (accum_saturation_int == 1))) - begin - accum_result_sign_bits = accum_round_out[int_width_result-1 : int_width_a + int_width_b - 2]; - - if ( (((&accum_result_sign_bits) | (|accum_result_sign_bits) | (^accum_result_sign_bits)) == 0) || - (((&accum_result_sign_bits) & (|accum_result_sign_bits) & !(^accum_result_sign_bits)) == 1)) - begin - accum_saturate_overflow = 1'b0; - end - else - begin - accum_saturate_overflow = 1'b1; - end - - if (accum_saturate_overflow == 0) - begin - accum_saturate_out = accum_round_out; - end - else - begin - - for (i = (int_width_result - 1); i >= (int_width_a + int_width_b - 2); i = i - 1) - begin - accum_saturate_out[i] = accum_round_out[int_width_result-1]; - end - - - for (i = (int_width_a + int_width_b - 3); i >= accum_sat_for_limit; i = i - 1) - begin - accum_saturate_out[i] = ~accum_round_out[int_width_result -1]; - end - - for (i = sat_for_ini; i >= 0; i = i - 1) - begin - accum_saturate_out[i] = 1'b0; - end - - end - end - else - begin - accum_saturate_out = accum_round_out; - accum_saturate_overflow = 0; - end - - if ((accumulator_rounding == "YES") || - ((accumulator_rounding == "VARIABLE") && (accum_round_int == 1))) - begin - accum_result = accum_saturate_out; - - for (i = bits_to_round; i >= 0; i = i - 1) - begin - accum_result[i] = 1'b0; - end - end - else - begin - accum_result = accum_saturate_out; - end - end - - result_int = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) ? - temp_sum[int_width_result -1 : 0] : accum_result; - - flag = ~flag; - end - - end - end - - always @ (posedge flag or negedge flag) - begin - if (extra_accumulator_latency == 0) - begin - result = result_int[width_result - 1 + int_extra_width : int_extra_width]; - overflow = overflow_int; - accum_is_saturated_latent = accum_saturate_overflow; - end - else - begin - result_pipe [head_result] = {overflow_int, result_int[width_result - 1 + int_extra_width : int_extra_width]}; - //mult_is_saturated_pipe[head_result] = mult_is_saturated_wire; - accum_saturate_pipe[head_result] = accum_saturate_overflow; - head_result = (head_result +1) % (extra_accumulator_latency + 1); - result_full = result_pipe[head_result]; - result = result_full [width_result-1:0]; - overflow = result_full [width_result]; - mult_is_saturated_int = mult_is_saturated_wire; - accum_is_saturated_latent = accum_saturate_pipe[head_result]; - end - - end - -endmodule // end of ALTMULT_ACCUM - -//-------------------------------------------------------------------------- -// Module Name : altmult_add -// -// Description : a*b + c*d -// -// Limitation : Stratix DSP block -// -// Results expected : signed & unsigned, maximum of 3 pipelines(latency) each. -// possible of zero pipeline. -// -//-------------------------------------------------------------------------- -`timescale 1 ps / 1 ps - -module altmult_add ( dataa, - datab, - scanina, - scaninb, - sourcea, - sourceb, - clock3, - clock2, - clock1, - clock0, - aclr3, - aclr2, - aclr1, - aclr0, - ena3, - ena2, - ena1, - ena0, - signa, - signb, - addnsub1, - addnsub3, - result, - scanouta, - scanoutb, - mult01_round, - mult23_round, - mult01_saturation, - mult23_saturation, - addnsub1_round, - addnsub3_round, - mult0_is_saturated, - mult1_is_saturated, - mult2_is_saturated, - mult3_is_saturated); - - // --------------------- - // PARAMETER DECLARATION - // --------------------- - - parameter width_a = 1; - parameter width_b = 1; - parameter width_result = 3; - parameter number_of_multipliers = 1; - parameter lpm_type = "altmult_add"; - parameter lpm_hint = "UNUSED"; - - // A inputs - - parameter multiplier1_direction = "UNUSED"; - parameter multiplier3_direction = "UNUSED"; - - parameter input_register_a0 = "CLOCK0"; - parameter input_aclr_a0 = "ACLR3"; - parameter input_source_a0 = "DATAA"; - - parameter input_register_a1 = "CLOCK0"; - parameter input_aclr_a1 = "ACLR3"; - parameter input_source_a1 = "DATAA"; - - parameter input_register_a2 = "CLOCK0"; - parameter input_aclr_a2 = "ACLR3"; - parameter input_source_a2 = "DATAA"; - - parameter input_register_a3 = "CLOCK0"; - parameter input_aclr_a3 = "ACLR3"; - parameter input_source_a3 = "DATAA"; - - parameter port_signa = "PORT_CONNECTIVITY"; - parameter representation_a = "UNUSED"; - parameter signed_register_a = "CLOCK0"; - parameter signed_aclr_a = "ACLR3"; - parameter signed_pipeline_register_a = "CLOCK0"; - parameter signed_pipeline_aclr_a = "ACLR3"; - - // B inputs - - parameter input_register_b0 = "CLOCK0"; - parameter input_aclr_b0 = "ACLR3"; - parameter input_source_b0 = "DATAB"; - - parameter input_register_b1 = "CLOCK0"; - parameter input_aclr_b1 = "ACLR3"; - parameter input_source_b1 = "DATAB"; - - parameter input_register_b2 = "CLOCK0"; - parameter input_aclr_b2 = "ACLR3"; - parameter input_source_b2 = "DATAB"; - - parameter input_register_b3 = "CLOCK0"; - parameter input_aclr_b3 = "ACLR3"; - parameter input_source_b3 = "DATAB"; - - parameter port_signb = "PORT_CONNECTIVITY"; - parameter representation_b = "UNUSED"; - parameter signed_register_b = "CLOCK0"; - parameter signed_aclr_b = "ACLR3"; - parameter signed_pipeline_register_b = "CLOCK0"; - parameter signed_pipeline_aclr_b = "ACLR3"; - - // multiplier parameters - - parameter multiplier_register0 = "CLOCK0"; - parameter multiplier_aclr0 = "ACLR3"; - parameter multiplier_register1 = "CLOCK0"; - parameter multiplier_aclr1 = "ACLR3"; - parameter multiplier_register2 = "CLOCK0"; - parameter multiplier_aclr2 = "ACLR3"; - parameter multiplier_register3 = "CLOCK0"; - parameter multiplier_aclr3 = "ACLR3"; - - parameter port_addnsub1 = "PORT_CONNECTIVITY"; - parameter addnsub_multiplier_register1 = "CLOCK0"; - parameter addnsub_multiplier_aclr1 = "ACLR3"; - parameter addnsub_multiplier_pipeline_register1 = "CLOCK0"; - parameter addnsub_multiplier_pipeline_aclr1 = "ACLR3"; - - parameter port_addnsub3 = "PORT_CONNECTIVITY"; - parameter addnsub_multiplier_register3 = "CLOCK0"; - parameter addnsub_multiplier_aclr3 = "ACLR3"; - parameter addnsub_multiplier_pipeline_register3 = "CLOCK0"; - parameter addnsub_multiplier_pipeline_aclr3 = "ACLR3"; - - parameter addnsub1_round_aclr = "ACLR3"; - parameter addnsub1_round_pipeline_aclr = "ACLR3"; - parameter addnsub1_round_register = "CLOCK0"; - parameter addnsub1_round_pipeline_register = "CLOCK0"; - parameter addnsub3_round_aclr = "ACLR3"; - parameter addnsub3_round_pipeline_aclr = "ACLR3"; - parameter addnsub3_round_register = "CLOCK0"; - parameter addnsub3_round_pipeline_register = "CLOCK0"; - - parameter mult01_round_aclr = "ACLR3"; - parameter mult01_round_register = "CLOCK0"; - parameter mult01_saturation_register = "CLOCK0"; - parameter mult01_saturation_aclr = "ACLR3"; - parameter mult23_round_register = "CLOCK0"; - parameter mult23_round_aclr = "ACLR3"; - parameter mult23_saturation_register = "CLOCK0"; - parameter mult23_saturation_aclr = "ACLR3"; - - // StratixII parameters - parameter multiplier01_rounding = "NO"; - parameter multiplier01_saturation = "NO"; - parameter multiplier23_rounding = "NO"; - parameter multiplier23_saturation = "NO"; - parameter adder1_rounding = "NO"; - parameter adder3_rounding = "NO"; - parameter port_mult0_is_saturated = "UNUSED"; - parameter port_mult1_is_saturated = "UNUSED"; - parameter port_mult2_is_saturated = "UNUSED"; - parameter port_mult3_is_saturated = "UNUSED"; - - // output parameters - - parameter output_register = "CLOCK0"; - parameter output_aclr = "ACLR0"; - - // general setting parameters - - parameter extra_latency = 0; - parameter dedicated_multiplier_circuitry = "AUTO"; - parameter dsp_block_balancing = "AUTO"; - parameter intended_device_family = "Stratix"; - - // ---------------- - // PORT DECLARATION - // ---------------- - - // data input ports - input [number_of_multipliers * width_a -1 : 0] dataa; - input [number_of_multipliers * width_b -1 : 0] datab; - - input [width_a -1 : 0] scanina; - input [width_b -1 : 0] scaninb; - - input [number_of_multipliers -1 : 0] sourcea; - input [number_of_multipliers -1 : 0] sourceb; - - // clock ports - input clock3; - input clock2; - input clock1; - input clock0; - - // clear ports - input aclr3; - input aclr2; - input aclr1; - input aclr0; - - // clock enable ports - input ena3; - input ena2; - input ena1; - input ena0; - - // control signals - input signa; - input signb; - input addnsub1; - input addnsub3; - - // StratixII only input ports - input mult01_round; - input mult23_round; - input mult01_saturation; - input mult23_saturation; - input addnsub1_round; - input addnsub3_round; - - - // output ports - output [width_result -1 : 0] result; - output [width_a -1 : 0] scanouta; - output [width_b -1 : 0] scanoutb; - - // StratixII only output ports - output mult0_is_saturated; - output mult1_is_saturated; - output mult2_is_saturated; - output mult3_is_saturated; - - // ----------------------------------- - // Parameters internally used - // ----------------------------------- - // Represent the internal used width_a - parameter int_width_a = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? width_a: - (width_a < 18)? 18 : width_a); - // Represent the internal used width_b - parameter int_width_b = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? width_b: - (width_b < 18)? 18 : width_b); - - //Represent the internally used width_result - parameter int_width_result = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? width_result: - (width_result > (int_width_a + int_width_b))? width_result + width_result - int_width_a - int_width_b: - int_width_a + int_width_b); - - // Represent the internally used width_result - parameter int_mult_diff_bit = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? 0: - (int_width_a - width_a + int_width_b - width_b)); - - parameter sat_ini_value = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO"))? 3: - int_width_a + int_width_b - 3); - - // ----------------------------------- - // Constants internally used - // ----------------------------------- - // Represent the number of bits needed to be rounded in multiplier where the - // value 17 here refers to the 2 sign bits and the 15 wanted bits for rounding - `define MULT_ROUND_BITS (((multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? 1 : (int_width_a + int_width_b) - 17) - - // Represent the number of bits needed to be rounded in adder where the - // value 18 here refers to the 3 sign bits and the 15 wanted bits for rounding. - `define ADDER_ROUND_BITS (((multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? 1 :(int_width_a + int_width_b) - 17) - - - - // --------------- - // REG DECLARATION - // --------------- - - reg [int_width_result :0] temp_sum; - reg [int_width_result : 0] mult_res_ext; - reg [int_width_result : 0] temp_sum_reg; - - reg [4 * int_width_a -1 : 0] mult_a_reg; - reg [4 * int_width_b -1 : 0] mult_b_reg; - - - reg [(int_width_a + int_width_b) -1:0] mult_res_0; - reg [(int_width_a + int_width_b) -1:0] mult_res_1; - reg [(int_width_a + int_width_b) -1:0] mult_res_2; - reg [(int_width_a + int_width_b) -1:0] mult_res_3; - - - reg [4 * (int_width_a + int_width_b) -1:0] mult_res_reg; - reg [(int_width_a + int_width_b - 1) :0] mult_res_temp; - - - reg sign_a_pipe_reg; - reg sign_a_reg; - reg sign_b_pipe_reg; - reg sign_b_reg; - - reg addsub1_reg; - reg addsub1_pipe_reg; - - reg addsub3_reg; - reg addsub3_pipe_reg; - - - // StratixII features related internal reg type - - reg [(int_width_a + int_width_b + 3) -1 : 0] mult0_round_out; - reg [(int_width_a + int_width_b + 3) -1 : 0] mult0_saturate_out; - reg [(int_width_a + int_width_b + 3) -1 : 0] mult0_result; - reg mult0_saturate_overflow; - reg mult0_saturate_overflow_stat; - - reg [(int_width_a + int_width_b + 3) -1 : 0] mult1_round_out; - reg [(int_width_a + int_width_b + 3) -1 : 0] mult1_saturate_out; - reg [(int_width_a + int_width_b) -1 : 0] mult1_result; - reg mult1_saturate_overflow; - reg mult1_saturate_overflow_stat; - - reg [(int_width_a + int_width_b + 3) -1 : 0] mult2_round_out; - reg [(int_width_a + int_width_b + 3) -1 : 0] mult2_saturate_out; - reg [(int_width_a + int_width_b) -1 : 0] mult2_result; - reg mult2_saturate_overflow; - reg mult2_saturate_overflow_stat; - - reg [(int_width_a + int_width_b + 3) -1 : 0] mult3_round_out; - reg [(int_width_a + int_width_b + 3) -1 : 0] mult3_saturate_out; - reg [(int_width_a + int_width_b) -1 : 0] mult3_result; - reg mult3_saturate_overflow; - reg mult3_saturate_overflow_stat; - - reg mult01_round_reg; - reg mult01_saturate_reg; - reg mult23_round_reg; - reg mult23_saturate_reg; - reg [3 : 0] mult_saturate_overflow_reg; - reg [3 : 0] mult_saturate_overflow_pipe_reg; - - reg [int_width_result : 0] adder1_round_out; - reg [int_width_result : 0] adder1_result; - reg addnsub1_round_reg; - reg addnsub1_round_pipe_reg; - - reg [int_width_result : 0] adder3_round_out; - reg [int_width_result : 0] adder3_result; - reg addnsub3_round_reg; - reg addnsub3_round_pipe_reg; - - reg zero_pad; - - //----------------- - // TRI DECLARATION - //----------------- - tri0 signa_z; - tri0 signb_z; - tri1 addnsub1_z; - tri1 addnsub3_z; - tri0 [4 * int_width_a -1 : 0] dataa_int; - tri0 [4 * int_width_b -1 : 0] datab_int; - tri0 [4 * int_width_a -1 : 0] new_dataa_int; - tri0 [4 * int_width_b -1 : 0] new_datab_int; - reg [4 * int_width_a -1 : 0] dataa_reg; - reg [4 * int_width_b -1 : 0] datab_reg; - tri0 [int_width_a - 1 : 0] scanina_z; - tri0 [int_width_b - 1 : 0] scaninb_z; - - // Tri wire for clear signal - tri0 input_reg_a0_wire_clr; - tri0 input_reg_a1_wire_clr; - tri0 input_reg_a2_wire_clr; - tri0 input_reg_a3_wire_clr; - - tri0 input_reg_b0_wire_clr; - tri0 input_reg_b1_wire_clr; - tri0 input_reg_b2_wire_clr; - tri0 input_reg_b3_wire_clr; - - tri0 sign_reg_a_wire_clr; - tri0 sign_pipe_a_wire_clr; - - tri0 sign_reg_b_wire_clr; - tri0 sign_pipe_b_wire_clr; - - tri0 addsub1_reg_wire_clr; - tri0 addsub1_pipe_wire_clr; - - tri0 addsub3_reg_wire_clr; - tri0 addsub3_pipe_wire_clr; - - tri0 multiplier_reg0_wire_clr; - tri0 multiplier_reg1_wire_clr; - tri0 multiplier_reg2_wire_clr; - tri0 multiplier_reg3_wire_clr; - - tri0 addnsub1_round_wire_clr; - tri0 addnsub1_round_pipe_wire_clr; - - tri0 addnsub3_round_wire_clr; - tri0 addnsub3_round_pipe_wire_clr; - - tri0 mult01_round_wire_clr; - tri0 mult01_saturate_wire_clr; - - tri0 mult23_round_wire_clr; - tri0 mult23_saturate_wire_clr; - - tri0 output_reg_wire_clr; - - tri0 [3 : 0] sourcea_wire; - tri0 [3 : 0] sourceb_wire; - - - - // Tri wire for enable signal - - tri1 input_reg_a0_wire_en; - tri1 input_reg_a1_wire_en; - tri1 input_reg_a2_wire_en; - tri1 input_reg_a3_wire_en; - - tri1 input_reg_b0_wire_en; - tri1 input_reg_b1_wire_en; - tri1 input_reg_b2_wire_en; - tri1 input_reg_b3_wire_en; - - - tri1 sign_reg_a_wire_en; - tri1 sign_pipe_a_wire_en; - - tri1 sign_reg_b_wire_en; - tri1 sign_pipe_b_wire_en; - - tri1 addsub1_reg_wire_en; - tri1 addsub1_pipe_wire_en; - - tri1 addsub3_reg_wire_en; - tri1 addsub3_pipe_wire_en; - - tri1 multiplier_reg0_wire_en; - tri1 multiplier_reg1_wire_en; - tri1 multiplier_reg2_wire_en; - tri1 multiplier_reg3_wire_en; - - tri1 addnsub1_round_wire_en; - tri1 addnsub1_round_pipe_wire_en; - - tri1 addnsub3_round_wire_en; - tri1 addnsub3_round_pipe_wire_en; - - tri1 mult01_round_wire_en; - tri1 mult01_saturate_wire_en; - - tri1 mult23_round_wire_en; - tri1 mult23_saturate_wire_en; - - tri1 output_reg_wire_en; - - - - - - // ---------------- - // WIRE DECLARATION - // ---------------- - - // Wire for Clock signals - wire input_reg_a0_wire_clk; - wire input_reg_a1_wire_clk; - wire input_reg_a2_wire_clk; - wire input_reg_a3_wire_clk; - - wire input_reg_b0_wire_clk; - wire input_reg_b1_wire_clk; - wire input_reg_b2_wire_clk; - wire input_reg_b3_wire_clk; - - wire sign_reg_a_wire_clk; - wire sign_pipe_a_wire_clk; - - wire sign_reg_b_wire_clk; - wire sign_pipe_b_wire_clk; - - wire addsub1_reg_wire_clk; - wire addsub1_pipe_wire_clk; - - wire addsub3_reg_wire_clk; - wire addsub3_pipe_wire_clk; - - wire multiplier_reg0_wire_clk; - wire multiplier_reg1_wire_clk; - wire multiplier_reg2_wire_clk; - wire multiplier_reg3_wire_clk; - - wire output_reg_wire_clk; - - wire addnsub1_round_wire_clk; - wire addnsub1_round_pipe_wire_clk; - wire addnsub1_round_wire; - wire addnsub1_round_pipe_wire; - wire addnsub1_round_pre; - wire addnsub3_round_wire_clk; - wire addnsub3_round_pipe_wire_clk; - wire addnsub3_round_wire; - wire addnsub3_round_pipe_wire; - wire addnsub3_round_pre; - - wire mult01_round_wire_clk; - wire mult01_saturate_wire_clk; - wire mult23_round_wire_clk; - wire mult23_saturate_wire_clk; - wire mult01_round_pre; - wire mult01_saturate_pre; - wire mult01_round_wire; - wire mult01_saturate_wire; - wire mult23_round_pre; - wire mult23_saturate_pre; - wire mult23_round_wire; - wire mult23_saturate_wire; - wire [3 : 0] mult_is_saturate_vec; - wire [3 : 0] mult_saturate_overflow_vec; - - wire [4 * int_width_a -1 : 0] mult_a_pre; - wire [4 * int_width_b -1 : 0] mult_b_pre; - - wire [int_width_a -1 : 0] scanouta; - wire [int_width_b -1 : 0] scanoutb; - - wire sign_a_int; - wire sign_b_int; - - wire addsub1_int; - wire addsub3_int; - - wire [4 * int_width_a -1 : 0] mult_a_wire; - wire [4 * int_width_b -1 : 0] mult_b_wire; - wire [4 * (int_width_a + int_width_b) -1:0] mult_res_wire; - wire sign_a_pipe_wire; - wire sign_a_wire; - wire sign_b_pipe_wire; - wire sign_b_wire; - wire addsub1_wire; - wire addsub1_pipe_wire; - wire addsub3_wire; - wire addsub3_pipe_wire; - - wire [int_width_a -1 : 0] i_scanina; - wire [int_width_b -1 : 0] i_scaninb; - - wire [(int_width_result - 1): 0] output_reg_wire_result; - wire [31:0] head_result_wire; - reg [(int_width_result - 1): 0] output_laten_result; - reg [(int_width_result - 1): 0] result_pipe [extra_latency : 0]; - reg [31:0] head_result; - integer head_result_int; - - - // ------------------- - // INTEGER DECLARATION - // ------------------- - integer num_bit_mult0; - integer num_bit_mult1; - integer num_bit_mult2; - integer num_bit_mult3; - integer j; - integer num_mult; - integer num_stor; - - - - // ------------------------ - // COMPONENT INSTANTIATIONS - // ------------------------ - ALTERA_DEVICE_FAMILIES dev (); - - - // ----------------------------------------------------------------------------- - // This block checks if the two numbers to be multiplied (mult_a/mult_b) is to - // be interpreted as a negative number or not. If so, then two's complement is - // performed. - // The numbers are then multipled. The sign of the result (positive or negative) - // is determined based on the sign of the two input numbers - // ------------------------------------------------------------------------------ - - function [(int_width_a + int_width_b - 1):0] do_multiply; - input [32 : 0] multiplier; - input signa_wire; - input signb_wire; - begin:MULTIPLY - - reg [int_width_a + int_width_b -1 :0] temp_mult_zero; - reg [int_width_a + int_width_b -1 :0] temp_mult; - reg [int_width_a -1 :0] op_a; - reg [int_width_b -1 :0] op_b; - reg [int_width_a -1 :0] op_a_int; - reg [int_width_b -1 :0] op_b_int; - reg neg_a; - reg neg_b; - reg temp_mult_signed; - - temp_mult_zero = 0; - temp_mult = 0; - - op_a = mult_a_wire >> (multiplier * int_width_a); - op_b = mult_b_wire >> (multiplier * int_width_b); - - neg_a = op_a[int_width_a-1] & (signa_wire); - neg_b = op_b[int_width_b-1] & (signb_wire); - - op_a_int = (neg_a == 1) ? (~op_a + 1) : op_a; - op_b_int = (neg_b == 1) ? (~op_b + 1) : op_b; - - temp_mult = op_a_int * op_b_int; - temp_mult = (neg_a ^ neg_b) ? (temp_mult_zero - temp_mult) : temp_mult; - - do_multiply = temp_mult; - end - endfunction - - - - - // -------------------------------------------------------------- - // initialization block of all the internal signals and registers - // -------------------------------------------------------------- - initial - begin - - // Checking for invalid parameters, in case Wizard is bypassed (hand-modified). - if (number_of_multipliers > 4) - begin - $display("Altmult_add does not currently support NUMBER_OF_MULTIPLIERS > 4"); - $stop; - end - if (number_of_multipliers <= 0) - begin - $display("NUMBER_OF_MULTIPLIERS must be greater than 0."); - $stop; - end - - - if (width_a <= 0) - begin - $display("Error: width_a must be greater than 0."); - $stop; - end - if (width_b <= 0) - begin - $display("Error: width_b must be greater than 0."); - $stop; - end - if (width_result <= 0) - begin - $display("Error: width_result must be greater than 0."); - $stop; - end - - if ((input_source_a0 != "DATAA") && - (input_source_a0 != "SCANA") && - (input_source_a0 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_A0 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_a1 != "DATAA") && - (input_source_a1 != "SCANA") && - (input_source_a1 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_A1 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_a2 != "DATAA") && - (input_source_a2 != "SCANA") && - (input_source_a2 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_A2 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_a3 != "DATAA") && - (input_source_a3 != "SCANA") && - (input_source_a3 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_A3 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_b0 != "DATAB") && - (input_source_b0 != "SCANB") && - (input_source_b0 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_B0 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_b1 != "DATAB") && - (input_source_b1 != "SCANB") && - (input_source_b1 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_B1 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_b2 != "DATAB") && - (input_source_b2 != "SCANB") && - (input_source_b2 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_B2 parameter is set to an illegal value."); - $stop; - end - - if ((input_source_b3 != "DATAB") && - (input_source_b3 != "SCANB") && - (input_source_b3 != "VARIABLE")) - begin - $display("Error: The INPUT_SOURCE_B3 parameter is set to an illegal value."); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_a0 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_a1 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_a2 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_a3 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_b0 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_b1 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_b2 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && (dev.IS_FAMILY_CYCLONEII(intended_device_family) == 0) && - (input_source_b3 == "VARIABLE")) - begin - $display("Error: Input source as VARIABLE is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dedicated_multiplier_circuitry != "AUTO") && - (dedicated_multiplier_circuitry != "YES") && - (dedicated_multiplier_circuitry != "NO")) - begin - $display("Error: The DEDICATED_MULTIPLIER_CIRCUITRY parameter is set to an illegal value."); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && - ((multiplier01_rounding == "YES") || (multiplier23_rounding == "YES") || - (multiplier01_rounding == "VARIABLE") || (multiplier23_rounding == "VARIABLE"))) - begin - $display("Error: Rounding for multiplier is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && - ((adder1_rounding == "YES") || (adder3_rounding == "YES") || - (adder1_rounding == "VARIABLE") || (adder3_rounding == "VARIABLE"))) - begin - $display("Error: Rounding for adder is not supported in %s device family", intended_device_family); - $stop; - end - - if ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) && - ((multiplier01_saturation == "YES") || (multiplier23_saturation == "YES") || - (multiplier01_saturation == "VARIABLE") || (multiplier23_saturation == "VARIABLE"))) - begin - $display("Error: Saturation for multiplier is not supported in %s device family", intended_device_family); - $stop; - end - - if ((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO")) - begin - if (int_width_result != width_result) - begin - $display ("Error: Internal parameter setting of int_width_result is illegal"); - $stop; - end - - if (int_mult_diff_bit != 0) - begin - $display ("Error: Internal parameter setting of int_mult_diff_bit is illegal"); - $stop; - end - - end - else - begin - if (((width_a < 18) && (int_width_a != 18)) || - ((width_a >= 18) && (int_width_a != width_a))) - begin - $display ("Error: Internal parameter setting of int_width_a is illegal"); - $stop; - end - - - if (((width_b < 18) && (int_width_b != 18)) || - ((width_b >= 18) && (int_width_b != width_b))) - begin - $display ("Error: Internal parameter setting of int_width_b is illegal"); - $stop; - end - - - if (int_width_result > (int_width_a + int_width_b)) - begin - if (int_width_result != (width_result + width_result - int_width_a - int_width_b)) - begin - $display ("Error: Internal parameter setting for int_width_result is illegal"); - $stop; - end - end - else - if (int_width_result != (int_width_a + int_width_b)) - begin - $display ("Error: Internal parameter setting for int_width_result is illegal"); - $stop; - end - - if (int_mult_diff_bit != (int_width_a - width_a + int_width_b - width_b)) - begin - $display ("Error: Internal parameter setting of int_mult_diff_bit is illegal"); - $stop; - end - end - - - - temp_sum_reg = 0; - - mult_a_reg = 0; - mult_b_reg = 0; - mult_res_reg = 0; - - sign_a_reg = ((port_signa == "PORT_CONNECTIVITY")? - (representation_a != "UNUSED" ? (representation_a == "SIGNED" ? 1 : 0) : 0) : - (port_signa == "PORT_USED")? 0 : - (port_signa == "PORT_UNUSED")? (representation_a == "SIGNED" ? 1 : 0) : 0); - - sign_a_pipe_reg = ((port_signa == "PORT_CONNECTIVITY")? - (representation_a != "UNUSED" ? (representation_a == "SIGNED" ? 1 : 0) : 0) : - (port_signa == "PORT_USED")? 0 : - (port_signa == "PORT_UNUSED")? (representation_a == "SIGNED" ? 1 : 0) : 0); - - sign_b_reg = ((port_signb == "PORT_CONNECTIVITY")? - (representation_b != "UNUSED" ? (representation_b == "SIGNED" ? 1 : 0) : 0) : - (port_signb == "PORT_USED")? 0 : - (port_signb == "PORT_UNUSED")? (representation_b == "SIGNED" ? 1 : 0) : 0); - - sign_b_pipe_reg = ((port_signb == "PORT_CONNECTIVITY")? - (representation_b != "UNUSED" ? (representation_b == "SIGNED" ? 1 : 0) : 0) : - (port_signb == "PORT_USED")? 0 : - (port_signb == "PORT_UNUSED")? (representation_b == "SIGNED" ? 1 : 0) : 0); - - addsub1_reg = ((port_addnsub1 == "PORT_CONNECTIVITY")? - (multiplier1_direction != "UNUSED" ? (multiplier1_direction == "ADD" ? 1 : 0) : 0) : - (port_addnsub1 == "PORT_USED")? 0 : - (port_addnsub1 == "PORT_UNUSED")? (multiplier1_direction == "ADD" ? 1 : 0) : 0); - - addsub1_pipe_reg = addsub1_reg; - - addsub3_reg = ((port_addnsub3 == "PORT_CONNECTIVITY")? - (multiplier3_direction != "UNUSED" ? (multiplier3_direction == "ADD" ? 1 : 0) : 0) : - (port_addnsub3 == "PORT_USED")? 0 : - (port_addnsub3 == "PORT_UNUSED")? (multiplier3_direction == "ADD" ? 1 : 0) : 0); - - addsub3_pipe_reg = addsub3_reg; - - // StratixII related reg type initialization - - mult0_round_out = 0; - mult0_saturate_out = 0; - mult0_result = 0; - mult0_saturate_overflow = 0; - - mult1_round_out = 0; - mult1_saturate_out = 0; - mult1_result = 0; - mult1_saturate_overflow = 0; - - mult_saturate_overflow_reg [3] = 0; - mult_saturate_overflow_reg [2] = 0; - mult_saturate_overflow_reg [1] = 0; - mult_saturate_overflow_reg [0] = 0; - - mult_saturate_overflow_pipe_reg [3] = 0; - mult_saturate_overflow_pipe_reg [2] = 0; - mult_saturate_overflow_pipe_reg [1] = 0; - mult_saturate_overflow_pipe_reg [0] = 0; - zero_pad = 0; - head_result = 0; - - for ( num_stor = extra_latency; num_stor >= 0; num_stor = num_stor - 1 ) - begin - result_pipe[num_stor] = {int_width_result{1'b0}}; - end - - end // end initialization block - - assign signa_z = signa; - assign signb_z = signb; - assign addnsub1_z = addnsub1; - assign addnsub3_z = addnsub3; - assign scanina_z[width_a - 1 : 0] = scanina[width_a - 1 : 0]; - assign scaninb_z[width_b - 1 : 0] = scaninb[width_b - 1 : 0]; - - always @(dataa or datab) - begin - dataa_reg[(number_of_multipliers * width_a) - 1:0] = dataa[(number_of_multipliers* width_a) -1:0]; - datab_reg[(number_of_multipliers * width_b) - 1: 0] = datab[(number_of_multipliers * width_b) - 1:0]; - end - - assign new_dataa_int[int_width_a - 1:int_width_a - width_a] = (number_of_multipliers >= 1) ? dataa_reg[width_a - 1:0]: {width_a{1'b0}}; - - assign new_dataa_int[(2 * int_width_a) - 1: (2 * int_width_a) - width_a] = (number_of_multipliers >= 2)? dataa_reg[(2 * width_a) - 1: width_a] : {width_a{1'b0}}; - - assign new_dataa_int[(3 * int_width_a) - 1: (3 * int_width_a) - width_a] = (number_of_multipliers >= 3)? dataa_reg[(3 * width_a) - 1:(2 * width_a)] : {width_a{1'b0}}; - - assign new_dataa_int[(4 * int_width_a) - 1: (4 * int_width_a) - width_a] = (number_of_multipliers >= 4) ? dataa_reg[(4 * width_a) - 1:(3 * width_a)] : {width_a{1'b0}}; - - assign new_datab_int[int_width_b - 1:int_width_b - width_b] = (number_of_multipliers >= 1) ? datab_reg[width_b - 1:0]: {width_b{1'b0}}; - - assign new_datab_int[(2 * int_width_b) - 1: (2 * int_width_b) - width_b] = (number_of_multipliers >= 2)? datab_reg[(2 * width_b) - 1:width_b]:{width_b{1'b0}}; - - assign new_datab_int[(3 * int_width_b) - 1: (3 * int_width_b) - width_b] = (number_of_multipliers >= 3)? datab_reg[(3 * width_b) - 1:(2 * width_b)] : {width_b{1'b0}}; - - assign new_datab_int[(4 * int_width_b) - 1: (4 * int_width_b) - width_b] = (number_of_multipliers >= 4) ? datab_reg[(4 * width_b) - 1:(3 * width_b)] : {width_b{1'b0}}; - - - - assign dataa_int[number_of_multipliers * int_width_a-1:0] = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? dataa[number_of_multipliers * width_a - 1:0]: - (width_a < 18)? new_dataa_int[number_of_multipliers * int_width_a-1:0] : dataa[number_of_multipliers * width_a - 1:0]); - - assign datab_int[number_of_multipliers * int_width_b-1:0] = (((multiplier01_saturation == "NO") && (multiplier23_saturation == "NO") && - (multiplier01_rounding == "NO") && (multiplier23_rounding == "NO"))? datab[number_of_multipliers * width_b - 1:0]: - (width_b < 18)? new_datab_int[number_of_multipliers * int_width_b - 1:0] : datab[number_of_multipliers * width_b - 1:0]); - - - assign addnsub1_round_pre = addnsub1_round; - assign addnsub3_round_pre = addnsub3_round; - assign mult01_round_pre = mult01_round; - assign mult01_saturate_pre = mult01_saturation; - assign mult23_round_pre = mult23_round; - assign mult23_saturate_pre = mult23_saturation; - - // --------------------------------------------------------- - // This block updates the output port for each multiplier's - // saturation port only if port_mult0_is_saturated is set to used - // --------------------------------------------------------- - - - assign mult0_is_saturated = (port_mult0_is_saturated == "UNUSED")? 1'bz: - (port_mult0_is_saturated == "USED")? mult_is_saturate_vec[0]: 1'bz; - - assign mult1_is_saturated = (port_mult1_is_saturated == "UNUSED")? 1'bz: - (port_mult1_is_saturated == "USED")? mult_is_saturate_vec[1]: 1'bz; - - assign mult2_is_saturated = (port_mult2_is_saturated == "UNUSED")? 1'bz: - (port_mult2_is_saturated == "USED")? mult_is_saturate_vec[2]: 1'bz; - - assign mult3_is_saturated = (port_mult3_is_saturated == "UNUSED")? 1'bz: - (port_mult3_is_saturated == "USED")? mult_is_saturate_vec[3]: 1'bz; - - assign sourcea_wire[number_of_multipliers - 1 : 0] = sourcea[number_of_multipliers - 1 : 0]; - - assign sourceb_wire[number_of_multipliers - 1 : 0] = sourceb[number_of_multipliers - 1 : 0]; - - - - // --------------------------------------------------------- - // This block updates the internal clock signals accordingly - // every time the global clock signal changes state - // --------------------------------------------------------- - - assign input_reg_a0_wire_clk = (input_register_a0 == "CLOCK0")? clock0: - (input_register_a0 == "UNREGISTERED")? 0: - (input_register_a0 == "CLOCK1")? clock1: - (input_register_a0 == "CLOCK2")? clock2: - (input_register_a0 == "CLOCK3")? clock3: 0; - - - assign input_reg_a1_wire_clk = (input_register_a1 == "CLOCK0")? clock0: - (input_register_a1 == "UNREGISTERED")? 0: - (input_register_a1 == "CLOCK1")? clock1: - (input_register_a1 == "CLOCK2")? clock2: - (input_register_a1 == "CLOCK3")? clock3: 0; - - - assign input_reg_a2_wire_clk = (input_register_a2 == "CLOCK0")? clock0: - (input_register_a2 == "UNREGISTERED")? 0: - (input_register_a2 == "CLOCK1")? clock1: - (input_register_a2 == "CLOCK2")? clock2: - (input_register_a2 == "CLOCK3")? clock3: 0; - - - - assign input_reg_a3_wire_clk = (input_register_a3 == "CLOCK0")? clock0: - (input_register_a3 == "UNREGISTERED")? 0: - (input_register_a3 == "CLOCK1")? clock1: - (input_register_a3 == "CLOCK2")? clock2: - (input_register_a3 == "CLOCK3")? clock3: 0; - - - assign input_reg_b0_wire_clk = (input_register_b0 == "CLOCK0")? clock0: - (input_register_b0 == "UNREGISTERED")? 0: - (input_register_b0 == "CLOCK1")? clock1: - (input_register_b0 == "CLOCK2")? clock2: - (input_register_b0 == "CLOCK3")? clock3: 0; - - - assign input_reg_b1_wire_clk = (input_register_b1 == "CLOCK0")? clock0: - (input_register_b1 == "UNREGISTERED")? 0: - (input_register_b1 == "CLOCK1")? clock1: - (input_register_b1 == "CLOCK2")? clock2: - (input_register_b1 == "CLOCK3")? clock3: 0; - - - assign input_reg_b2_wire_clk = (input_register_b2 == "CLOCK0")? clock0: - (input_register_b2 == "UNREGISTERED")? 0: - (input_register_b2 == "CLOCK1")? clock1: - (input_register_b2 == "CLOCK2")? clock2: - (input_register_b2 == "CLOCK3")? clock3: 0; - - - assign input_reg_b3_wire_clk = (input_register_b3 == "CLOCK0")? clock0: - (input_register_b3 == "UNREGISTERED")? 0: - (input_register_b3 == "CLOCK1")? clock1: - (input_register_b3 == "CLOCK2")? clock2: - (input_register_b3 == "CLOCK3")? clock3: 0; - - - assign addsub1_reg_wire_clk = (addnsub_multiplier_register1 == "CLOCK0")? clock0: - (addnsub_multiplier_register1 == "UNREGISTERED")? 0: - (addnsub_multiplier_register1 == "CLOCK1")? clock1: - (addnsub_multiplier_register1 == "CLOCK2")? clock2: - (addnsub_multiplier_register1 == "CLOCK3")? clock3: 0; - - - assign addsub1_pipe_wire_clk = (addnsub_multiplier_pipeline_register1 == "CLOCK0")? clock0: - (addnsub_multiplier_pipeline_register1 == "UNREGISTERED")? 0: - (addnsub_multiplier_pipeline_register1 == "CLOCK1")? clock1: - (addnsub_multiplier_pipeline_register1 == "CLOCK2")? clock2: - (addnsub_multiplier_pipeline_register1 == "CLOCK3")? clock3: 0; - - - - assign addsub3_reg_wire_clk = (addnsub_multiplier_register3 == "CLOCK0")? clock0: - (addnsub_multiplier_register3 == "UNREGISTERED")? 0: - (addnsub_multiplier_register3 == "CLOCK1")? clock1: - (addnsub_multiplier_register3 == "CLOCK2")? clock2: - (addnsub_multiplier_register3 == "CLOCK3")? clock3: 0; - - - - assign addsub3_pipe_wire_clk = (addnsub_multiplier_pipeline_register3 == "CLOCK0")? clock0: - (addnsub_multiplier_pipeline_register3 == "UNREGISTERED")? 0: - (addnsub_multiplier_pipeline_register3 == "CLOCK1")? clock1: - (addnsub_multiplier_pipeline_register3 == "CLOCK2")? clock2: - (addnsub_multiplier_pipeline_register3 == "CLOCK3")? clock3: 0; - - - - - assign sign_reg_a_wire_clk = (signed_register_a == "CLOCK0")? clock0: - (signed_register_a == "UNREGISTERED")? 0: - (signed_register_a == "CLOCK1")? clock1: - (signed_register_a == "CLOCK2")? clock2: - (signed_register_a == "CLOCK3")? clock3: 0; - - - - assign sign_pipe_a_wire_clk = (signed_pipeline_register_a == "CLOCK0")? clock0: - (signed_pipeline_register_a == "UNREGISTERED")? 0: - (signed_pipeline_register_a == "CLOCK1")? clock1: - (signed_pipeline_register_a == "CLOCK2")? clock2: - (signed_pipeline_register_a == "CLOCK3")? clock3: 0; - - - - assign sign_reg_b_wire_clk = (signed_register_b == "CLOCK0")? clock0: - (signed_register_b == "UNREGISTERED")? 0: - (signed_register_b == "CLOCK1")? clock1: - (signed_register_b == "CLOCK2")? clock2: - (signed_register_b == "CLOCK3")? clock3: 0; - - - - assign sign_pipe_b_wire_clk = (signed_pipeline_register_b == "CLOCK0")? clock0: - (signed_pipeline_register_b == "UNREGISTERED")? 0: - (signed_pipeline_register_b == "CLOCK1")? clock1: - (signed_pipeline_register_b == "CLOCK2")? clock2: - (signed_pipeline_register_b == "CLOCK3")? clock3: 0; - - - - assign multiplier_reg0_wire_clk = (multiplier_register0 == "CLOCK0")? clock0: - (multiplier_register0 == "UNREGISTERED")? 0: - (multiplier_register0 == "CLOCK1")? clock1: - (multiplier_register0 == "CLOCK2")? clock2: - (multiplier_register0 == "CLOCK3")? clock3: 0; - - - - assign multiplier_reg1_wire_clk = (multiplier_register1 == "CLOCK0")? clock0: - (multiplier_register1 == "UNREGISTERED")? 0: - (multiplier_register1 == "CLOCK1")? clock1: - (multiplier_register1 == "CLOCK2")? clock2: - (multiplier_register1 == "CLOCK3")? clock3: 0; - - - assign multiplier_reg2_wire_clk = (multiplier_register2 == "CLOCK0")? clock0: - (multiplier_register2 == "UNREGISTERED")? 0: - (multiplier_register2 == "CLOCK1")? clock1: - (multiplier_register2 == "CLOCK2")? clock2: - (multiplier_register2 == "CLOCK3")? clock3: 0; - - - - assign multiplier_reg3_wire_clk = (multiplier_register3 == "CLOCK0")? clock0: - (multiplier_register3 == "UNREGISTERED")? 0: - (multiplier_register3 == "CLOCK1")? clock1: - (multiplier_register3 == "CLOCK2")? clock2: - (multiplier_register3 == "CLOCK3")? clock3: 0; - - - - assign output_reg_wire_clk = (output_register == "CLOCK0")? clock0: - (output_register == "UNREGISTERED")? 0: - (output_register == "CLOCK1")? clock1: - (output_register == "CLOCK2")? clock2: - (output_register == "CLOCK3")? clock3: 0; - - - assign addnsub1_round_wire_clk = (addnsub1_round_register == "CLOCK0")? clock0: - (addnsub1_round_register == "UNREGISTERED")? 0: - (addnsub1_round_register == "CLOCK1")? clock1: - (addnsub1_round_register == "CLOCK2")? clock2: - (addnsub1_round_register == "CLOCK3")? clock3: 0; - - - assign addnsub1_round_pipe_wire_clk = (addnsub1_round_pipeline_register == "CLOCK0")? clock0: - (addnsub1_round_pipeline_register == "UNREGISTERED")? 0: - (addnsub1_round_pipeline_register == "CLOCK1")? clock1: - (addnsub1_round_pipeline_register == "CLOCK2")? clock2: - (addnsub1_round_pipeline_register == "CLOCK3")? clock3: 0; - - - assign addnsub3_round_wire_clk = (addnsub3_round_register == "CLOCK0")? clock0: - (addnsub3_round_register == "UNREGISTERED")? 0: - (addnsub3_round_register == "CLOCK1")? clock1: - (addnsub3_round_register == "CLOCK2")? clock2: - (addnsub3_round_register == "CLOCK3")? clock3: 0; - - assign addnsub3_round_pipe_wire_clk = (addnsub3_round_pipeline_register == "CLOCK0")? clock0: - (addnsub3_round_pipeline_register == "UNREGISTERED")? 0: - (addnsub3_round_pipeline_register == "CLOCK1")? clock1: - (addnsub3_round_pipeline_register == "CLOCK2")? clock2: - (addnsub3_round_pipeline_register == "CLOCK3")? clock3: 0; - - assign mult01_round_wire_clk = (mult01_round_register == "CLOCK0")? clock0: - (mult01_round_register == "UNREGISTERED")? 0: - (mult01_round_register == "CLOCK1")? clock1: - (mult01_round_register == "CLOCK2")? clock2: - (mult01_round_register == "CLOCK3")? clock3: 0; - - - assign mult01_saturate_wire_clk = (mult01_saturation_register == "CLOCK0")? clock0: - (mult01_saturation_register == "UNREGISTERED")? 0: - (mult01_saturation_register == "CLOCK1")? clock1: - (mult01_saturation_register == "CLOCK2")? clock2: - (mult01_saturation_register == "CLOCK3")? clock3: 0; - - - assign mult23_round_wire_clk = (mult23_round_register == "CLOCK0")? clock0: - (mult23_round_register == "UNREGISTERED")? 0: - (mult23_round_register == "CLOCK1")? clock1: - (mult23_round_register == "CLOCK2")? clock2: - (mult23_round_register == "CLOCK3")? clock3: 0; - - assign mult23_saturate_wire_clk = (mult23_saturation_register == "CLOCK0")? clock0: - (mult23_saturation_register == "UNREGISTERED")? 0: - (mult23_saturation_register == "CLOCK1")? clock1: - (mult23_saturation_register == "CLOCK2")? clock2: - (mult23_saturation_register == "CLOCK3")? clock3: 0; - - - - // ---------------------------------------------------------------- - // This block updates the internal clock enable signals accordingly - // every time the global clock enable signal changes state - // ---------------------------------------------------------------- - - - assign input_reg_a0_wire_en = (input_register_a0 == "CLOCK0")? ena0: - (input_register_a0 == "UNREGISTERED")? 1: - (input_register_a0 == "CLOCK1")? ena1: - (input_register_a0 == "CLOCK2")? ena2: - (input_register_a0 == "CLOCK3")? ena3: 1; - - - - assign input_reg_a1_wire_en = (input_register_a1 == "CLOCK0")? ena0: - (input_register_a1 == "UNREGISTERED")? 1: - (input_register_a1 == "CLOCK1")? ena1: - (input_register_a1 == "CLOCK2")? ena2: - (input_register_a1 == "CLOCK3")? ena3: 1; - - - assign input_reg_a2_wire_en = (input_register_a2 == "CLOCK0")? ena0: - (input_register_a2 == "UNREGISTERED")? 1: - (input_register_a2 == "CLOCK1")? ena1: - (input_register_a2 == "CLOCK2")? ena2: - (input_register_a2 == "CLOCK3")? ena3: 1; - - - assign input_reg_a3_wire_en = (input_register_a3 == "CLOCK0")? ena0: - (input_register_a3 == "UNREGISTERED")? 1: - (input_register_a3 == "CLOCK1")? ena1: - (input_register_a3 == "CLOCK2")? ena2: - (input_register_a3 == "CLOCK3")? ena3: 1; - - - assign input_reg_b0_wire_en = (input_register_b0 == "CLOCK0")? ena0: - (input_register_b0 == "UNREGISTERED")? 1: - (input_register_b0 == "CLOCK1")? ena1: - (input_register_b0 == "CLOCK2")? ena2: - (input_register_b0 == "CLOCK3")? ena3: 1; - - - - assign input_reg_b1_wire_en = (input_register_b1 == "CLOCK0")? ena0: - (input_register_b1 == "UNREGISTERED")? 1: - (input_register_b1 == "CLOCK1")? ena1: - (input_register_b1 == "CLOCK2")? ena2: - (input_register_b1 == "CLOCK3")? ena3: 1; - - - assign input_reg_b2_wire_en = (input_register_b2 == "CLOCK0")? ena0: - (input_register_b2 == "UNREGISTERED")? 1: - (input_register_b2 == "CLOCK1")? ena1: - (input_register_b2 == "CLOCK2")? ena2: - (input_register_b2 == "CLOCK3")? ena3: 1; - - assign input_reg_b3_wire_en = (input_register_b3 == "CLOCK0")? ena0: - (input_register_b3 == "UNREGISTERED")? 1: - (input_register_b3 == "CLOCK1")? ena1: - (input_register_b3 == "CLOCK2")? ena2: - (input_register_b3 == "CLOCK3")? ena3: 1; - - - assign addsub1_reg_wire_en = (addnsub_multiplier_register1 == "CLOCK0")? ena0: - (addnsub_multiplier_register1 == "UNREGISTERED")? 1: - (addnsub_multiplier_register1 == "CLOCK1")? ena1: - (addnsub_multiplier_register1 == "CLOCK2")? ena2: - (addnsub_multiplier_register1 == "CLOCK3")? ena3: 1; - - - - assign addsub1_pipe_wire_en = (addnsub_multiplier_pipeline_register1 == "CLOCK0")? ena0: - (addnsub_multiplier_pipeline_register1 == "UNREGISTERED")? 1: - (addnsub_multiplier_pipeline_register1 == "CLOCK1")? ena1: - (addnsub_multiplier_pipeline_register1 == "CLOCK2")? ena2: - (addnsub_multiplier_pipeline_register1 == "CLOCK3")? ena3: 1; - - - assign addsub3_reg_wire_en = (addnsub_multiplier_register3 == "CLOCK0")? ena0: - (addnsub_multiplier_register3 == "UNREGISTERED")? 1: - (addnsub_multiplier_register3 == "CLOCK1")? ena1: - (addnsub_multiplier_register3 == "CLOCK2")? ena2: - (addnsub_multiplier_register3 == "CLOCK3")? ena3: 1; - - - - assign addsub3_pipe_wire_en = (addnsub_multiplier_pipeline_register3 == "CLOCK0")? ena0: - (addnsub_multiplier_pipeline_register3 == "UNREGISTERED")? 1: - (addnsub_multiplier_pipeline_register3 == "CLOCK1")? ena1: - (addnsub_multiplier_pipeline_register3 == "CLOCK2")? ena2: - (addnsub_multiplier_pipeline_register3 == "CLOCK3")? ena3: 1; - - - - assign sign_reg_a_wire_en = (signed_register_a == "CLOCK0")? ena0: - (signed_register_a == "UNREGISTERED")? 1: - (signed_register_a == "CLOCK1")? ena1: - (signed_register_a == "CLOCK2")? ena2: - (signed_register_a == "CLOCK3")? ena3: 1; - - - - assign sign_pipe_a_wire_en = (signed_pipeline_register_a == "CLOCK0")? ena0: - (signed_pipeline_register_a == "UNREGISTERED")? 1: - (signed_pipeline_register_a == "CLOCK1")? ena1: - (signed_pipeline_register_a == "CLOCK2")? ena2: - (signed_pipeline_register_a == "CLOCK3")? ena3: 1; - - - - assign sign_reg_b_wire_en = (signed_register_b == "CLOCK0")? ena0: - (signed_register_b == "UNREGISTERED")? 1: - (signed_register_b == "CLOCK1")? ena1: - (signed_register_b == "CLOCK2")? ena2: - (signed_register_b == "CLOCK3")? ena3: 1; - - - - assign sign_pipe_b_wire_en = (signed_pipeline_register_b == "CLOCK0")? ena0: - (signed_pipeline_register_b == "UNREGISTERED")? 1: - (signed_pipeline_register_b == "CLOCK1")? ena1: - (signed_pipeline_register_b == "CLOCK2")? ena2: - (signed_pipeline_register_b == "CLOCK3")? ena3: 1; - - - - assign multiplier_reg0_wire_en = (multiplier_register0 == "CLOCK0")? ena0: - (multiplier_register0 == "UNREGISTERED")? 1: - (multiplier_register0 == "CLOCK1")? ena1: - (multiplier_register0 == "CLOCK2")? ena2: - (multiplier_register0 == "CLOCK3")? ena3: 1; - - - - assign multiplier_reg1_wire_en = (multiplier_register1 == "CLOCK0")? ena0: - (multiplier_register1 == "UNREGISTERED")? 1: - (multiplier_register1 == "CLOCK1")? ena1: - (multiplier_register1 == "CLOCK2")? ena2: - (multiplier_register1 == "CLOCK3")? ena3: 1; - - - assign multiplier_reg2_wire_en = (multiplier_register2 == "CLOCK0")? ena0: - (multiplier_register2 == "UNREGISTERED")? 1: - (multiplier_register2 == "CLOCK1")? ena1: - (multiplier_register2 == "CLOCK2")? ena2: - (multiplier_register2 == "CLOCK3")? ena3: 1; - - - - assign multiplier_reg3_wire_en = (multiplier_register3 == "CLOCK0")? ena0: - (multiplier_register3 == "UNREGISTERED")? 1: - (multiplier_register3 == "CLOCK1")? ena1: - (multiplier_register3 == "CLOCK2")? ena2: - (multiplier_register3 == "CLOCK3")? ena3: 1; - - - - assign output_reg_wire_en = (output_register == "CLOCK0")? ena0: - (output_register == "UNREGISTERED")? 1: - (output_register == "CLOCK1")? ena1: - (output_register == "CLOCK2")? ena2: - (output_register == "CLOCK3")? ena3: 1; - - - assign addnsub1_round_wire_en = (addnsub1_round_register == "CLOCK0")? ena0: - (addnsub1_round_register == "UNREGISTERED")? 1: - (addnsub1_round_register == "CLOCK1")? ena1: - (addnsub1_round_register == "CLOCK2")? ena2: - (addnsub1_round_register == "CLOCK3")? ena3: 1; - - - assign addnsub1_round_pipe_wire_en = (addnsub1_round_pipeline_register == "CLOCK0")? ena0: - (addnsub1_round_pipeline_register == "UNREGISTERED")? 1: - (addnsub1_round_pipeline_register == "CLOCK1")? ena1: - (addnsub1_round_pipeline_register == "CLOCK2")? ena2: - (addnsub1_round_pipeline_register == "CLOCK3")? ena3: 1; - - - assign addnsub3_round_wire_en = (addnsub3_round_register == "CLOCK0")? ena0: - (addnsub3_round_register == "UNREGISTERED")? 1: - (addnsub3_round_register == "CLOCK1")? ena1: - (addnsub3_round_register == "CLOCK2")? ena2: - (addnsub3_round_register == "CLOCK3")? ena3: 1; - - - assign addnsub3_round_pipe_wire_en = (addnsub3_round_pipeline_register == "CLOCK0")? ena0: - (addnsub3_round_pipeline_register == "UNREGISTERED")? 1: - (addnsub3_round_pipeline_register == "CLOCK1")? ena1: - (addnsub3_round_pipeline_register == "CLOCK2")? ena2: - (addnsub3_round_pipeline_register == "CLOCK3")? ena3: 1; - - - assign mult01_round_wire_en = (mult01_round_register == "CLOCK0")? ena0: - (mult01_round_register == "UNREGISTERED")? 1: - (mult01_round_register == "CLOCK1")? ena1: - (mult01_round_register == "CLOCK2")? ena2: - (mult01_round_register == "CLOCK3")? ena3: 1; - - - assign mult01_saturate_wire_en = (mult01_saturation_register == "CLOCK0")? ena0: - (mult01_saturation_register == "UNREGISTERED")? 1: - (mult01_saturation_register == "CLOCK1")? ena1: - (mult01_saturation_register == "CLOCK2")? ena2: - (mult01_saturation_register == "CLOCK3")? ena3: 1; - - - assign mult23_round_wire_en = (mult23_round_register == "CLOCK0")? ena0: - (mult23_round_register == "UNREGISTERED")? 1: - (mult23_round_register == "CLOCK1")? ena1: - (mult23_round_register == "CLOCK2")? ena2: - (mult23_round_register == "CLOCK3")? ena3: 1; - - - assign mult23_saturate_wire_en = (mult23_saturation_register == "CLOCK0")? ena0: - (mult23_saturation_register == "UNREGISTERED")? 1: - (mult23_saturation_register == "CLOCK1")? ena1: - (mult23_saturation_register == "CLOCK2")? ena2: - (mult23_saturation_register == "CLOCK3")? ena3: 1; - - - // --------------------------------------------------------- - // This block updates the internal clear signals accordingly - // every time the global clear signal changes state - // --------------------------------------------------------- - - assign input_reg_a0_wire_clr = (input_aclr_a0 == "ACLR3")? aclr3: - (input_aclr_a0 == "UNREGISTERED")? 0: - (input_aclr_a0 == "ACLR0")? aclr0: - (input_aclr_a0 == "ACLR1")? aclr1: - (input_aclr_a0 == "ACLR2")? aclr2: 0; - - - - assign input_reg_a1_wire_clr = (input_aclr_a1 == "ACLR3")? aclr3: - (input_aclr_a1 == "UNREGISTERED")? 0: - (input_aclr_a1 == "ACLR0")? aclr0: - (input_aclr_a1 == "ACLR1")? aclr1: - (input_aclr_a1 == "ACLR2")? aclr2: 0; - - - assign input_reg_a2_wire_clr = (input_aclr_a2 == "ACLR3")? aclr3: - (input_aclr_a2 == "UNREGISTERED")? 0: - (input_aclr_a2 == "ACLR0")? aclr0: - (input_aclr_a2 == "ACLR1")? aclr1: - (input_aclr_a2 == "ACLR2")? aclr2: 0; - - - - assign input_reg_a3_wire_clr = (input_aclr_a3 == "ACLR3")? aclr3: - (input_aclr_a3 == "UNREGISTERED")? 0: - (input_aclr_a3 == "ACLR0")? aclr0: - (input_aclr_a3 == "ACLR1")? aclr1: - (input_aclr_a3 == "ACLR2")? aclr2: 0; - - - assign input_reg_b0_wire_clr = (input_aclr_b0 == "ACLR3")? aclr3: - (input_aclr_b0 == "UNREGISTERED")? 0: - (input_aclr_b0 == "ACLR0")? aclr0: - (input_aclr_b0 == "ACLR1")? aclr1: - (input_aclr_b0 == "ACLR2")? aclr2: 0; - - - assign input_reg_b1_wire_clr = (input_aclr_b1 == "ACLR3")? aclr3: - (input_aclr_b1 == "UNREGISTERED")? 0: - (input_aclr_b1 == "ACLR0")? aclr0: - (input_aclr_b1 == "ACLR1")? aclr1: - (input_aclr_b1 == "ACLR2")? aclr2: 0; - - - assign input_reg_b2_wire_clr = (input_aclr_b2 == "ACLR3")? aclr3: - (input_aclr_b2 == "UNREGISTERED")? 0: - (input_aclr_b2 == "ACLR0")? aclr0: - (input_aclr_b2 == "ACLR1")? aclr1: - (input_aclr_b2 == "ACLR2")? aclr2: 0; - - - - assign input_reg_b3_wire_clr = (input_aclr_b3 == "ACLR3")? aclr3: - (input_aclr_b3 == "UNREGISTERED")? 0: - (input_aclr_b3 == "ACLR0")? aclr0: - (input_aclr_b3 == "ACLR1")? aclr1: - (input_aclr_b3 == "ACLR2")? aclr2: 0; - - - - - assign addsub1_reg_wire_clr = (addnsub_multiplier_aclr1 == "ACLR3")? aclr3: - (addnsub_multiplier_aclr1 == "UNREGISTERED")? 0: - (addnsub_multiplier_aclr1 == "ACLR0")? aclr0: - (addnsub_multiplier_aclr1 == "ACLR1")? aclr1: - (addnsub_multiplier_aclr1 == "ACLR2")? aclr2: 0; - - - - assign addsub1_pipe_wire_clr = (addnsub_multiplier_pipeline_aclr1 == "ACLR3")? aclr3: - (addnsub_multiplier_pipeline_aclr1 == "UNREGISTERED")? 0: - (addnsub_multiplier_pipeline_aclr1 == "ACLR0")? aclr0: - (addnsub_multiplier_pipeline_aclr1 == "ACLR1")? aclr1: - (addnsub_multiplier_pipeline_aclr1 == "ACLR2")? aclr2: 0; - - - - - assign addsub3_reg_wire_clr = (addnsub_multiplier_aclr3 == "ACLR3")? aclr3: - (addnsub_multiplier_aclr3 == "UNREGISTERED")? 0: - (addnsub_multiplier_aclr3 == "ACLR0")? aclr0: - (addnsub_multiplier_aclr3 == "ACLR1")? aclr1: - (addnsub_multiplier_aclr3 == "ACLR2")? aclr2: 0; - - - - assign addsub3_pipe_wire_clr = (addnsub_multiplier_pipeline_aclr3 == "ACLR3")? aclr3: - (addnsub_multiplier_pipeline_aclr3 == "UNREGISTERED")? 0: - (addnsub_multiplier_pipeline_aclr3 == "ACLR0")? aclr0: - (addnsub_multiplier_pipeline_aclr3 == "ACLR1")? aclr1: - (addnsub_multiplier_pipeline_aclr3 == "ACLR2")? aclr2: 0; - - - - - assign sign_reg_a_wire_clr = (signed_aclr_a == "ACLR3")? aclr3: - (signed_aclr_a == "UNREGISTERED")? 0: - (signed_aclr_a == "ACLR0")? aclr0: - (signed_aclr_a == "ACLR1")? aclr1: - (signed_aclr_a == "ACLR2")? aclr2: 0; - - - - assign sign_pipe_a_wire_clr = (signed_pipeline_aclr_a == "ACLR3")? aclr3: - (signed_pipeline_aclr_a == "UNREGISTERED")? 0: - (signed_pipeline_aclr_a == "ACLR0")? aclr0: - (signed_pipeline_aclr_a == "ACLR1")? aclr1: - (signed_pipeline_aclr_a == "ACLR2")? aclr2: 0; - - - - assign sign_reg_b_wire_clr = (signed_aclr_b == "ACLR3")? aclr3: - (signed_aclr_b == "UNREGISTERED")? 0: - (signed_aclr_b == "ACLR0")? aclr0: - (signed_aclr_b == "ACLR1")? aclr1: - (signed_aclr_b == "ACLR2")? aclr2: 0; - - - - assign sign_pipe_b_wire_clr = (signed_pipeline_aclr_b == "ACLR3")? aclr3: - (signed_pipeline_aclr_b == "UNREGISTERED")? 0: - (signed_pipeline_aclr_b == "ACLR0")? aclr0: - (signed_pipeline_aclr_b == "ACLR1")? aclr1: - (signed_pipeline_aclr_b == "ACLR2")? aclr2: 0; - - - - - assign multiplier_reg0_wire_clr = (multiplier_aclr0 == "ACLR3")? aclr3: - (multiplier_aclr0 == "UNREGISTERED")? 0: - (multiplier_aclr0 == "ACLR0")? aclr0: - (multiplier_aclr0 == "ACLR1")? aclr1: - (multiplier_aclr0 == "ACLR2")? aclr2: 0; - - - - assign multiplier_reg1_wire_clr = (multiplier_aclr1 == "ACLR3")? aclr3: - (multiplier_aclr1 == "UNREGISTERED")? 0: - (multiplier_aclr1 == "ACLR0")? aclr0: - (multiplier_aclr1 == "ACLR1")? aclr1: - (multiplier_aclr1 == "ACLR2")? aclr2: 0; - - - - assign multiplier_reg2_wire_clr = (multiplier_aclr2 == "ACLR3")? aclr3: - (multiplier_aclr2 == "UNREGISTERED")? 0: - (multiplier_aclr2 == "ACLR0")? aclr0: - (multiplier_aclr2 == "ACLR1")? aclr1: - (multiplier_aclr2 == "ACLR2")? aclr2: 0; - - - - - assign multiplier_reg3_wire_clr = (multiplier_aclr3 == "ACLR3")? aclr3: - (multiplier_aclr3 == "UNREGISTERED")? 0: - (multiplier_aclr3 == "ACLR0")? aclr0: - (multiplier_aclr3 == "ACLR1")? aclr1: - (multiplier_aclr3 == "ACLR2")? aclr2: 0; - - - - - assign output_reg_wire_clr = (output_aclr == "ACLR3")? aclr3: - (output_aclr == "UNREGISTERED")? 0: - (output_aclr == "ACLR0")? aclr0: - (output_aclr == "ACLR1")? aclr1: - (output_aclr == "ACLR2")? aclr2: 0; - - - - assign addnsub1_round_wire_clr = (addnsub1_round_aclr == "ACLR3")? aclr3: - (addnsub1_round_register == "UNREGISTERED")? 0: - (addnsub1_round_aclr == "ACLR0")? aclr0: - (addnsub1_round_aclr == "ACLR1")? aclr1: - (addnsub1_round_aclr == "ACLR2")? aclr2: 0; - - - - assign addnsub1_round_pipe_wire_clr = (addnsub1_round_pipeline_aclr == "ACLR3")? aclr3: - (addnsub1_round_pipeline_register == "UNREGISTERED")? 0: - (addnsub1_round_pipeline_aclr == "ACLR0")? aclr0: - (addnsub1_round_pipeline_aclr == "ACLR1")? aclr1: - (addnsub1_round_pipeline_aclr == "ACLR2")? aclr2: 0; - - - - assign addnsub3_round_wire_clr = (addnsub3_round_aclr == "ACLR3")? aclr3: - (addnsub3_round_register == "UNREGISTERED")? 0: - (addnsub3_round_aclr == "ACLR0")? aclr0: - (addnsub3_round_aclr == "ACLR1")? aclr1: - (addnsub3_round_aclr == "ACLR2")? aclr2: 0; - - - - assign addnsub3_round_pipe_wire_clr = (addnsub3_round_pipeline_aclr == "ACLR3")? aclr3: - (addnsub3_round_pipeline_register == "UNREGISTERED")? 0: - (addnsub3_round_pipeline_aclr == "ACLR0")? aclr0: - (addnsub3_round_pipeline_aclr == "ACLR1")? aclr1: - (addnsub3_round_pipeline_aclr == "ACLR2")? aclr2: 0; - - - - assign mult01_round_wire_clr = (mult01_round_aclr == "ACLR3")? aclr3: - (mult01_round_register == "UNREGISTERED")? 0: - (mult01_round_aclr == "ACLR0")? aclr0: - (mult01_round_aclr == "ACLR1")? aclr1: - (mult01_round_aclr == "ACLR2")? aclr2: 0; - - - - assign mult01_saturate_wire_clr = (mult01_saturation_aclr == "ACLR3")? aclr3: - (mult01_saturation_register == "UNREGISTERED")? 0: - (mult01_saturation_aclr == "ACLR0")? aclr0: - (mult01_saturation_aclr == "ACLR1")? aclr1: - (mult01_saturation_aclr == "ACLR2")? aclr2: 0; - - - - assign mult23_round_wire_clr = (mult23_round_aclr == "ACLR3")? aclr3: - (mult23_round_register == "UNREGISTERED")? 0: - (mult23_round_aclr == "ACLR0")? aclr0: - (mult23_round_aclr == "ACLR1")? aclr1: - (mult23_round_aclr == "ACLR2")? aclr2: 0; - - - - assign mult23_saturate_wire_clr = (mult23_saturation_aclr == "ACLR3")? aclr3: - (mult23_saturation_register == "UNREGISTERED")? 0: - (mult23_saturation_aclr == "ACLR0")? aclr0: - (mult23_saturation_aclr == "ACLR1")? aclr1: - (mult23_saturation_aclr == "ACLR2")? aclr2: 0; - - - - // ------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_a[int_width_a-1:0]) - // Signal Registered : mult_a_pre[int_width_a-1:0] - // - // Register is controlled by posedge input_reg_a0_wire_clk - // Register has a clock enable input_reg_a0_wire_en - // Register has an asynchronous clear signal, input_reg_a0_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_a0 is unregistered and mult_a_pre[int_width_a-1:0] changes value - // ------------------------------------------------------------------------------------- - assign mult_a_wire[int_width_a-1:0] = (input_register_a0 == "UNREGISTERED")? - mult_a_pre[int_width_a-1:0]: mult_a_reg[int_width_a-1:0]; - always @(posedge input_reg_a0_wire_clk or posedge input_reg_a0_wire_clr) - begin - if (input_reg_a0_wire_clr == 1) - mult_a_reg[int_width_a-1:0] <= 0; - else if ((input_reg_a0_wire_clk === 1'b1) && (input_reg_a0_wire_en == 1)) - mult_a_reg[int_width_a-1:0] <= mult_a_pre[int_width_a-1:0]; - end - - - // ----------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_a[(2*int_width_a)-1:int_width_a]) - // Signal Registered : mult_a_pre[(2*int_width_a)-1:int_width_a] - // - // Register is controlled by posedge input_reg_a1_wire_clk - // Register has a clock enable input_reg_a1_wire_en - // Register has an asynchronous clear signal, input_reg_a1_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_a1 is unregistered and mult_a_pre[(2*int_width_a)-1:int_width_a] changes value - // ----------------------------------------------------------------------------------------------- - - assign mult_a_wire[(2*int_width_a)-1:int_width_a] = (input_register_a1 == "UNREGISTERED")? - mult_a_pre[(2*int_width_a)-1:int_width_a]: mult_a_reg[(2*int_width_a)-1:int_width_a]; - - always @(posedge input_reg_a1_wire_clk or posedge input_reg_a1_wire_clr) - - begin - if (input_reg_a1_wire_clr == 1) - mult_a_reg[(2*int_width_a)-1:int_width_a] <= 0; - else if ((input_reg_a1_wire_clk == 1) && (input_reg_a1_wire_en == 1)) - mult_a_reg[(2*int_width_a)-1:int_width_a] <= mult_a_pre[(2*int_width_a)-1:int_width_a]; - end - - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_a[(3*int_width_a)-1:2*int_width_a]) - // Signal Registered : mult_a_pre[(3*int_width_a)-1:2*int_width_a] - // - // Register is controlled by posedge input_reg_a2_wire_clk - // Register has a clock enable input_reg_a2_wire_en - // Register has an asynchronous clear signal, input_reg_a2_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_a2 is unregistered and mult_a_pre[(3*int_width_a)-1:2*int_width_a] changes value - // ------------------------------------------------------------------------------------------------- - assign mult_a_wire[(3*int_width_a)-1 : 2*int_width_a ] = (input_register_a2 == "UNREGISTERED")? - mult_a_pre[(3*int_width_a)-1 : 2*int_width_a]: mult_a_reg[(3*int_width_a)-1 : 2*int_width_a ]; - - - always @(posedge input_reg_a2_wire_clk or posedge input_reg_a2_wire_clr) - begin - if (input_reg_a2_wire_clr == 1) - mult_a_reg[(3*int_width_a)-1 : 2*int_width_a ] <= 0; - else if ((input_reg_a2_wire_clk == 1) && (input_reg_a2_wire_en == 1)) - mult_a_reg[(3*int_width_a)-1 : 2*int_width_a ] <= mult_a_pre[(3*int_width_a)-1 : 2*int_width_a]; - end - - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_a[(4*int_width_a)-1:3*int_width_a]) - // Signal Registered : mult_a_pre[(4*int_width_a)-1:3*int_width_a] - // - // Register is controlled by posedge input_reg_a3_wire_clk - // Register has a clock enable input_reg_a3_wire_en - // Register has an asynchronous clear signal, input_reg_a3_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_a3 is unregistered and mult_a_pre[(4*int_width_a)-1:3*int_width_a] changes value - // ------------------------------------------------------------------------------------------------- - assign mult_a_wire[(4*int_width_a)-1 : 3*int_width_a ] = (input_register_a3 == "UNREGISTERED")? - mult_a_pre[(4*int_width_a)-1:3*int_width_a]: mult_a_reg[(4*int_width_a)-1:3*int_width_a]; - - always @(posedge input_reg_a3_wire_clk or posedge input_reg_a3_wire_clr) - begin - if (input_reg_a3_wire_clr == 1) - mult_a_reg[(4*int_width_a)-1 : 3*int_width_a ] <= 0; - else if ((input_reg_a3_wire_clk == 1) && (input_reg_a3_wire_en == 1)) - mult_a_reg[(4*int_width_a)-1 : 3*int_width_a ] <= mult_a_pre[(4*int_width_a)-1:3*int_width_a]; - - end - - - // ------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_b[int_width_b-1:0]) - // Signal Registered : mult_b_pre[int_width_b-1:0] - // - // Register is controlled by posedge input_reg_b0_wire_clk - // Register has a clock enable input_reg_b0_wire_en - // Register has an asynchronous clear signal, input_reg_b0_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_b0 is unregistered and mult_b_pre[int_width_b-1:0] changes value - // ------------------------------------------------------------------------------------- - - assign mult_b_wire[int_width_b-1:0] = (input_register_b0 == "UNREGISTERED")? - mult_b_pre[int_width_b-1:0]: mult_b_reg[int_width_b-1:0]; - - always @(posedge input_reg_b0_wire_clk or posedge input_reg_b0_wire_clr) - begin - if (input_reg_b0_wire_clr == 1) - mult_b_reg[int_width_b-1:0] <= 0; - else if ((input_reg_b0_wire_clk == 1) && (input_reg_b0_wire_en == 1)) - mult_b_reg[int_width_b-1:0] <= mult_b_pre[int_width_b-1:0]; - end - - - // ----------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_b[(2*int_width_b)-1:int_width_b]) - // Signal Registered : mult_b_pre[(2*int_width_b)-1:int_width_b] - // - // Register is controlled by posedge input_reg_a1_wire_clk - // Register has a clock enable input_reg_b1_wire_en - // Register has an asynchronous clear signal, input_reg_b1_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_b1 is unregistered and mult_b_pre[(2*int_width_b)-1:int_width_b] changes value - // ----------------------------------------------------------------------------------------------- - assign mult_b_wire[(2*int_width_b)-1:int_width_b] = (input_register_b1 == "UNREGISTERED")? - mult_b_pre[(2*int_width_b)-1:int_width_b]: mult_b_reg[(2*int_width_b)-1:int_width_b]; - - - - always @(posedge input_reg_b1_wire_clk or posedge input_reg_b1_wire_clr) - begin - if (input_reg_b1_wire_clr == 1) - mult_b_reg[(2*int_width_b)-1:int_width_b] <= 0; - else if ((input_reg_b1_wire_clk == 1) && (input_reg_b1_wire_en == 1)) - mult_b_reg[(2*int_width_b)-1:int_width_b] <= mult_b_pre[(2*int_width_b)-1:int_width_b]; - - end - - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_b[(3*int_width_b)-1:2*int_width_b]) - // Signal Registered : mult_b_pre[(3*int_width_b)-1:2*int_width_b] - // - // Register is controlled by posedge input_reg_b2_wire_clk - // Register has a clock enable input_reg_b2_wire_en - // Register has an asynchronous clear signal, input_reg_b2_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_b2 is unregistered and mult_b_pre[(3*int_width_b)-1:2*int_width_b] changes value - // ------------------------------------------------------------------------------------------------- - assign mult_b_wire[(3*int_width_b)-1:2*int_width_b] = (input_register_b2 == "UNREGISTERED")? - mult_b_pre[(3*int_width_b)-1:2*int_width_b]: mult_b_reg[(3*int_width_b)-1:2*int_width_b]; - - - always @(posedge input_reg_b2_wire_clk or posedge input_reg_b2_wire_clr) - begin - if (input_reg_b2_wire_clr == 1) - mult_b_reg[(3*int_width_b)-1:2*int_width_b] <= 0; - else if ((input_reg_b2_wire_clk == 1) && (input_reg_b2_wire_en == 1)) - mult_b_reg[(3*int_width_b)-1:2*int_width_b] <= mult_b_pre[(3*int_width_b)-1:2*int_width_b]; - - end - - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult_b[(4*int_width_b)-1:3*int_width_b]) - // Signal Registered : mult_b_pre[(4*int_width_b)-1:3*int_width_b] - // - // Register is controlled by posedge input_reg_b3_wire_clk - // Register has a clock enable input_reg_b3_wire_en - // Register has an asynchronous clear signal, input_reg_b3_wire_clr - // NOTE : The combinatorial block will be executed if - // input_register_b3 is unregistered and mult_b_pre[(4*int_width_b)-1:3*int_width_b] changes value - // ------------------------------------------------------------------------------------------------- - assign mult_b_wire[(4*int_width_b)-1:3*int_width_b] = (input_register_b3 == "UNREGISTERED")? - mult_b_pre[(4*int_width_b)-1:3*int_width_b]: mult_b_reg[(4*int_width_b)-1:3*int_width_b]; - - - always @(posedge input_reg_b3_wire_clk or posedge input_reg_b3_wire_clr) - begin - if (input_reg_b3_wire_clr == 1) - mult_b_reg[(4*int_width_b)-1 : 3*int_width_b ] <= 0; - else if ((input_reg_b3_wire_clk == 1) && (input_reg_b3_wire_en == 1)) - mult_b_reg[(4*int_width_b)-1:3*int_width_b] <= mult_b_pre[(4*int_width_b)-1:3*int_width_b]; - - end - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult01_round_wire) - // Signal Registered : mult01_round_pre - // - // Register is controlled by posedge mult01_round_wire_clk - // Register has a clock enable mult01_round_wire_en - // Register has an asynchronous clear signal, mult01_round_wire_clr - // NOTE : The combinatorial block will be executed if - // mult01_round_register is unregistered and mult01_round changes value - // ------------------------------------------------------------------------------------------------- - assign mult01_round_wire = (mult01_round_register == "UNREGISTERED")? - mult01_round_pre : mult01_round_reg; - - always @(posedge mult01_round_wire_clk or posedge mult01_round_wire_clr) - begin - if (mult01_round_wire_clr == 1) - mult01_round_reg <= 0; - else if ((mult01_round_wire_clk == 1) && (mult01_round_wire_en == 1)) - mult01_round_reg <= mult01_round_pre; - - end - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult01_saturate_wire) - // Signal Registered : mult01_saturation_pre - // - // Register is controlled by posedge mult01_saturate_wire_clk - // Register has a clock enable mult01_saturate_wire_en - // Register has an asynchronous clear signal, mult01_saturate_wire_clr - // NOTE : The combinatorial block will be executed if - // mult01_saturation_register is unregistered and mult01_saturate_pre changes value - // ------------------------------------------------------------------------------------------------- - assign mult01_saturate_wire = (mult01_saturation_register == "UNREGISTERED")? - mult01_saturate_pre : mult01_saturate_reg; - - always @(posedge mult01_saturate_wire_clk or posedge mult01_saturate_wire_clr) - begin - if (mult01_saturate_wire_clr == 1) - mult01_saturate_reg <= 0; - else if ((mult01_saturate_wire_clk == 1) && (mult01_saturate_wire_en == 1)) - mult01_saturate_reg <= mult01_saturate_pre; - - end - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult23_round_wire) - // Signal Registered : mult23_round_pre - // - // Register is controlled by posedge mult23_round_wire_clk - // Register has a clock enable mult23_round_wire_en - // Register has an asynchronous clear signal, mult23_round_wire_clr - // NOTE : The combinatorial block will be executed if - // mult23_round_register is unregistered and mult23_round_pre changes value - // ------------------------------------------------------------------------------------------------- - assign mult23_round_wire = (mult23_round_register == "UNREGISTERED")? - mult23_round_pre : mult23_round_reg; - - always @(posedge mult23_round_wire_clk or posedge mult23_round_wire_clr) - begin - if (mult23_round_wire_clr == 1) - mult23_round_reg <= 0; - else if ((mult23_round_wire_clk == 1) && (mult23_round_wire_en == 1)) - mult23_round_reg <= mult23_round_pre; - - end - - // ------------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set mult23_saturate_wire) - // Signal Registered : mult23_round_pre - // - // Register is controlled by posedge mult23_saturate_wire_clk - // Register has a clock enable mult23_saturate_wire_en - // Register has an asynchronous clear signal, mult23_saturate_wire_clr - // NOTE : The combinatorial block will be executed if - // mult23_saturation_register is unregistered and mult23_saturation_pre changes value - // ------------------------------------------------------------------------------------------------- - assign mult23_saturate_wire = (mult23_saturation_register == "UNREGISTERED")? - mult23_saturate_pre : mult23_saturate_reg; - - always @(posedge mult23_saturate_wire_clk or posedge mult23_saturate_wire_clr) - begin - if (mult23_saturate_wire_clr == 1) - mult23_saturate_reg <= 0; - else if ((mult23_saturate_wire_clk == 1) && (mult23_saturate_wire_en == 1)) - mult23_saturate_reg <= mult23_saturate_pre; - - end - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addnsub1_round_wire) - // Signal Registered : addnsub1_round_pre - // - // Register is controlled by posedge addnsub1_round_wire_clk - // Register has a clock enable addnsub1_round_wire_en - // Register has an asynchronous clear signal, addnsub1_round_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub1_round_register is unregistered and addnsub1_round_pre changes value - // --------------------------------------------------------------------------------- - assign addnsub1_round_wire = (addnsub1_round_register=="UNREGISTERED")? - addnsub1_round_pre : addnsub1_round_reg; - - always @(posedge addnsub1_round_wire_clk or posedge addnsub1_round_wire_clr) - begin - if (addnsub1_round_wire_clr == 1) - addnsub1_round_reg <= 0; - else if ((addnsub1_round_wire_clk == 1) && (addnsub1_round_wire_en == 1)) - addnsub1_round_reg <= addnsub1_round_pre; - end - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addnsub1_round_pipe_wire) - // Signal Registered : addnsub1_round_wire - // - // Register is controlled by posedge addnsub1_round_pipe_wire_clk - // Register has a clock enable addnsub1_round_pipe_wire_en - // Register has an asynchronous clear signal, addnsub1_round_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub1_round_pipeline_register is unregistered and addnsub1_round_wire changes value - // --------------------------------------------------------------------------------- - assign addnsub1_round_pipe_wire = (addnsub1_round_pipeline_register=="UNREGISTERED")? - addnsub1_round_wire : addnsub1_round_pipe_reg; - - always @(posedge addnsub1_round_pipe_wire_clk or posedge addnsub1_round_pipe_wire_clr) - begin - if (addnsub1_round_pipe_wire_clr == 1) - addnsub1_round_pipe_reg <= 0; - else if ((addnsub1_round_pipe_wire_clk == 1) && (addnsub1_round_pipe_wire_en == 1)) - addnsub1_round_pipe_reg <= addnsub1_round_wire; - end - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addnsub3_round_wire) - // Signal Registered : addnsub3_round_pre - // - // Register is controlled by posedge addnsub3_round_wire_clk - // Register has a clock enable addnsub3_round_wire_en - // Register has an asynchronous clear signal, addnsub3_round_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub3_round_register is unregistered and addnsub3_round_pre changes value - // --------------------------------------------------------------------------------- - assign addnsub3_round_wire = (addnsub3_round_register=="UNREGISTERED")? - addnsub3_round_pre : addnsub3_round_reg; - - always @(posedge addnsub3_round_wire_clk or posedge addnsub3_round_wire_clr) - begin - if (addnsub3_round_wire_clr == 1) - addnsub3_round_reg <= 0; - else if ((addnsub3_round_wire_clk == 1) && (addnsub3_round_wire_en == 1)) - addnsub3_round_reg <= addnsub3_round_pre; - end - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addnsub3_round_pipe_wire) - // Signal Registered : addnsub3_round_wire - // - // Register is controlled by posedge addnsub3_round_pipe_wire_clk - // Register has a clock enable addnsub3_round_pipe_wire_en - // Register has an asynchronous clear signal, addnsub3_round_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub3_round_pipeline_register is unregistered and addnsub3_round_wire changes value - // --------------------------------------------------------------------------------- - assign addnsub3_round_pipe_wire = (addnsub3_round_pipeline_register=="UNREGISTERED")? - addnsub3_round_wire : addnsub3_round_pipe_reg; - - always @(posedge addnsub3_round_pipe_wire_clk or posedge addnsub3_round_pipe_wire_clr) - begin - if (addnsub3_round_pipe_wire_clr == 1) - addnsub3_round_pipe_reg <= 0; - else if ((addnsub3_round_pipe_wire_clk == 1) && (addnsub3_round_pipe_wire_en == 1)) - addnsub3_round_pipe_reg <= addnsub3_round_wire; - end - - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addsub1_reg) - // Signal Registered : addsub1_int - // - // Register is controlled by posedge addsub1_reg_wire_clk - // Register has a clock enable addsub1_reg_wire_en - // Register has an asynchronous clear signal, addsub1_reg_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub_multiplier_register1 is unregistered and addsub1_int changes value - // --------------------------------------------------------------------------------- - assign addsub1_wire = (addnsub_multiplier_register1=="UNREGISTERED")? addsub1_int : addsub1_reg; - - always @(posedge addsub1_reg_wire_clk or posedge addsub1_reg_wire_clr) - begin - if ((addsub1_reg_wire_clr == 1) && (multiplier1_direction == "UNUSED")) - addsub1_reg <= 0; - else if ((addsub1_reg_wire_clk == 1) && (addsub1_reg_wire_en == 1)) - addsub1_reg <= addsub1_int; - end - - - // ------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addsub1_pipe) - // Signal Registered : addsub1_reg - // - // Register is controlled by posedge addsub1_pipe_wire_clk - // Register has a clock enable addsub1_pipe_wire_en - // Register has an asynchronous clear signal, addsub1_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub_multiplier_pipeline_register1 is unregistered and addsub1_reg changes value - // ------------------------------------------------------------------------------------------ - - assign addsub1_pipe_wire = (addnsub_multiplier_pipeline_register1 == "UNREGISTERED")? - addsub1_wire : addsub1_pipe_reg; - always @(posedge addsub1_pipe_wire_clk or posedge addsub1_pipe_wire_clr) - begin - if ((addsub1_pipe_wire_clr == 1) && (multiplier1_direction == "UNUSED")) - addsub1_pipe_reg <= 0; - else if ((addsub1_pipe_wire_clk == 1) && (addsub1_pipe_wire_en == 1)) - addsub1_pipe_reg <= addsub1_wire; - end - - - // --------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addsub3_reg) - // Signal Registered : addsub3_int - // - // Register is controlled by posedge addsub3_reg_wire_clk - // Register has a clock enable addsub3_reg_wire_en - // Register has an asynchronous clear signal, addsub3_reg_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub_multiplier_register3 is unregistered and addsub3_int changes value - // --------------------------------------------------------------------------------- - assign addsub3_wire = (addnsub_multiplier_register3=="UNREGISTERED")? - addsub3_int : addsub3_reg; - - - always @(posedge addsub3_reg_wire_clk or posedge addsub3_reg_wire_clr) - begin - if ((addsub3_reg_wire_clr == 1) && (multiplier3_direction == "UNUSED")) - addsub3_reg <= 0; - else if ((addsub3_reg_wire_clk == 1) && (addsub3_reg_wire_en == 1)) - addsub3_reg <= addsub3_int; - end - - - // ------------------------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set addsub3_pipe) - // Signal Registered : addsub3_reg - // - // Register is controlled by posedge addsub3_pipe_wire_clk - // Register has a clock enable addsub3_pipe_wire_en - // Register has an asynchronous clear signal, addsub3_pipe_wire_clr - // NOTE : The combinatorial block will be executed if - // addnsub_multiplier_pipeline_register3 is unregistered and addsub3_reg changes value - // ------------------------------------------------------------------------------------------ - assign addsub3_pipe_wire = (addnsub_multiplier_pipeline_register3 == "UNREGISTERED")? - addsub3_wire : addsub3_pipe_reg; - - always @(posedge addsub3_pipe_wire_clk or posedge addsub3_pipe_wire_clr) - begin - if ((addsub3_pipe_wire_clr == 1) && (multiplier3_direction == "UNUSED")) - addsub3_pipe_reg <= 0; - else if ((addsub3_pipe_wire_clk == 1) && (addsub3_pipe_wire_en == 1)) - addsub3_pipe_reg <= addsub3_wire; - end - - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_a_reg) - // Signal Registered : sign_a_int - // - // Register is controlled by posedge sign_reg_a_wire_clk - // Register has a clock enable sign_reg_a_wire_en - // Register has an asynchronous clear signal, sign_reg_a_wire_clr - // NOTE : The combinatorial block will be executed if - // signed_register_a is unregistered and sign_a_int changes value - // ---------------------------------------------------------------------------- - - assign sign_a_wire = (signed_register_a == "UNREGISTERED")? sign_a_int : sign_a_reg; - always @(posedge sign_reg_a_wire_clk or posedge sign_reg_a_wire_clr) - begin - if ((sign_reg_a_wire_clr == 1) && (representation_a == "UNUSED")) - sign_a_reg <= 0; - else if ((sign_reg_a_wire_clk == 1) && (sign_reg_a_wire_en == 1)) - sign_a_reg <= sign_a_int; - end - - - // ------------------------------------------------------------------------------ - // This block contains 1 register and 1 combinatorial block (to set sign_a_pipe) - // Signal Registered : sign_a_reg - // - // Register is controlled by posedge sign_pipe_a_wire_clk - // Register has a clock enable sign_pipe_a_wire_en - // Register has an asynchronous clear signal, sign_pipe_a_wire_clr - // NOTE : The combinatorial block will be executed if - // signed_pipeline_register_a is unregistered and sign_a_reg changes value - // ------------------------------------------------------------------------------ - - assign sign_a_pipe_wire = (signed_pipeline_register_a == "UNREGISTERED")? sign_a_wire : sign_a_pipe_reg; - always @(posedge sign_pipe_a_wire_clk or posedge sign_pipe_a_wire_clr) - begin - if ((sign_pipe_a_wire_clr == 1) && (representation_a == "UNUSED")) - sign_a_pipe_reg <= 0; - else if ((sign_pipe_a_wire_clk == 1) && (sign_pipe_a_wire_en == 1)) - sign_a_pipe_reg <= sign_a_wire; - end - - - // ---------------------------------------------------------------------------- - // This block contains 1 register and 1 combinatorial block (to set sign_b_reg) - // Signal Registered : sign_b_int - // - // Register is controlled by posedge sign_reg_b_wire_clk - // Register has a clock enable sign_reg_b_wire_en - // Register has an asynchronous clear signal, sign_reg_b_wire_clr - // NOTE : The combinatorial block will be executed if - // signed_register_b is unregistered and sign_b_int changes value - // ---------------------------------------------------------------------------- - - assign sign_b_wire = (signed_register_b == "UNREGISTERED")? sign_b_int : sign_b_reg; - - always @(posedge sign_reg_b_wire_clk or posedge sign_reg_b_wire_clr) - begin - if ((sign_reg_b_wire_clr == 1) && (representation_b == "UNUSED")) - sign_b_reg <= 0; - else if ((sign_reg_b_wire_clk == 1) && (sign_reg_b_wire_en == 1)) - sign_b_reg <= sign_b_int; - - end - - - // ------------------------------------------------------------------------------ - // This block contains 1 register and 1 combinatorial block (to set sign_b_pipe) - // Signal Registered : sign_b_reg - // - // Register is controlled by posedge sign_pipe_b_wire_clk - // Register has a clock enable sign_pipe_b_wire_en - // Register has an asynchronous clear signal, sign_pipe_b_wire_clr - // NOTE : The combinatorial block will be executed if - // signed_pipeline_register_b is unregistered and sign_b_reg changes value - // ------------------------------------------------------------------------------ - assign sign_b_pipe_wire = (signed_pipeline_register_b == "UNREGISTERED")? sign_b_wire : sign_b_pipe_reg; - always @(posedge sign_pipe_b_wire_clk or posedge sign_pipe_b_wire_clr) - - begin - if ((sign_pipe_b_wire_clr == 1) && (representation_b == "UNUSED")) - sign_b_pipe_reg <= 0; - else if ((sign_pipe_b_wire_clk == 1) && (sign_pipe_b_wire_en == 1)) - sign_b_pipe_reg <= sign_b_wire; - - end - - - // -------------------------------------------------------- - // This block basically calls the task do_multiply() to set - // the value of mult_res_0[(int_width_a + int_width_b) -1 :0] - // - // If multiplier_register0 is registered, the call of the task - // will be triggered by a posedge multiplier_reg0_wire_clk. - // It also has an asynchronous clear signal multiplier_reg0_wire_clr - // - // If multiplier_register0 is unregistered, a change of value - // in either mult_a[int_width_a-1:0], mult_b[int_width_a-1:0], - // sign_a_reg or sign_b_reg will trigger the task call. - // -------------------------------------------------------- - assign mult_res_wire[(int_width_a + int_width_b - 1) :0] = (multiplier_register0 == "UNREGISTERED")? - mult0_result[(int_width_a + int_width_b - 1) :0] : - mult_res_reg[(int_width_a + int_width_b - 1) :0]; - - assign mult_saturate_overflow_vec[0] = (multiplier_register0 == "UNREGISTERED")? - mult0_saturate_overflow : mult_saturate_overflow_reg[0]; - - - // This always block is to perform the rounding and saturation operations (StratixII only) - always @(mult_res_0 or mult01_round_wire or mult01_saturate_wire) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - // ------------------------------------------------------- - // Stratix II Rounding support - // This block basically carries out the rounding for the - // mult_res_0. The equation to get the mult0_round_out is - // obtained from the Stratix II Mac FFD which is below: - // round_adder_constant = (1 << (wfraction - wfraction_round - 1)) - // roundout[] = datain[] + round_adder_constant - // For Stratix II rounding, we round up the bits to 15 bits - // or in another word wfraction_round = 15. - // -------------------------------------------------------- - - if ((multiplier01_rounding == "YES") || - ((multiplier01_rounding == "VARIABLE") && (mult01_round_wire == 1))) - begin - mult0_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_0[(int_width_a + int_width_b) -1 :0] + ( 1 << (`MULT_ROUND_BITS - 1)); - end - else - begin - mult0_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_0[(int_width_a + int_width_b) -1 :0]; - end - - mult0_round_out[((int_width_a + int_width_b) + 2) : (int_width_a + int_width_b)] = {2{1'b0}}; - - // ------------------------------------------------------- - // Stratix II Saturation support - // This carries out the saturation for mult0_round_out. - // The equation to get the saturated result is obtained - // from Stratix II MAC FFD which is below: - // satoverflow = 1 if sign bit is different - // satvalue[wtotal-1 : wfraction] = roundout[wtotal-1] - // satvalue[wfraction-1 : 0] = !roundout[wtotal-1] - // ------------------------------------------------------- - - if ((multiplier01_saturation == "YES") || - (( multiplier01_saturation == "VARIABLE") && (mult01_saturate_wire == 1))) - begin - - mult0_saturate_overflow_stat = (~mult0_round_out[int_width_a + int_width_b - 1]) && mult0_round_out[int_width_a + int_width_b - 2]; - - if (mult0_saturate_overflow_stat == 0) - begin - mult0_saturate_out = mult0_round_out; - mult0_saturate_overflow = mult0_round_out[0]; - end - else - begin - - // We are doing Q2.31 saturation - for (num_bit_mult0 = (int_width_a + int_width_b - 1); num_bit_mult0 >= (int_width_a + int_width_b - 2); num_bit_mult0 = num_bit_mult0 - 1) - begin - mult0_saturate_out[num_bit_mult0] = mult0_round_out[int_width_a + int_width_b - 1]; - end - - for (num_bit_mult0 = sat_ini_value; num_bit_mult0 >= 3; num_bit_mult0 = num_bit_mult0 - 1) - begin - mult0_saturate_out[num_bit_mult0] = ~mult0_round_out[int_width_a + int_width_b - 1]; - end - - mult0_saturate_out[2 : 0] = mult0_round_out[2:0]; - - mult0_saturate_overflow = mult0_saturate_overflow_stat; - end - end - else - begin - mult0_saturate_out = mult0_round_out; - mult0_saturate_overflow = 1'b0; - end - - if ((multiplier01_rounding == "YES") || - ((multiplier01_rounding == "VARIABLE") && (mult01_round_wire == 1))) - begin - - for (num_bit_mult0 = (`MULT_ROUND_BITS - 1); num_bit_mult0 >= 0; num_bit_mult0 = num_bit_mult0 - 1) - begin - mult0_saturate_out[num_bit_mult0] = 1'b0; - end - - end - end - end - - always @(mult0_saturate_out or mult_res_0) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - mult0_result <= mult0_saturate_out[(int_width_a + int_width_b) -1 :0]; - end - else - begin - mult0_result <= mult_res_0; - end - - end - - - - always @(posedge multiplier_reg0_wire_clk or posedge multiplier_reg0_wire_clr) - begin - if (multiplier_reg0_wire_clr == 1) - begin - mult_res_reg[(int_width_a + int_width_b) -1 :0] <= 0; - mult_saturate_overflow_reg[0] <= 0; - end - else if ((multiplier_reg0_wire_clk == 1) && (multiplier_reg0_wire_en == 1)) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) - mult_res_reg[(int_width_a + int_width_b) - 1 : 0] <= mult_res_0[(int_width_a + int_width_b) -1 :0]; - else - begin - mult_res_reg[(int_width_a + int_width_b - 1) : 0] <= mult0_result; - mult_saturate_overflow_reg[0] <= mult0_saturate_overflow; - end - end - end - - - - always @(mult_a_wire[(int_width_a *1) -1 : (int_width_a*0)] or mult_b_wire[(int_width_b *1) -1 : (int_width_b *0)] or - sign_a_wire or sign_b_wire) - begin - mult_res_0 = do_multiply (0, sign_a_wire, sign_b_wire); - end - - - - - // ------------------------------------------------------------------------ - // This block basically calls the task do_multiply() to set the value of - // mult_res_1[(int_width_a + int_width_b) -1 :0] - // - // If multiplier_register1 is registered, the call of the task - // will be triggered by a posedge multiplier_reg1_wire_clk. - // It also has an asynchronous clear signal multiplier_reg1_wire_clr - // - // If multiplier_register1 is unregistered, a change of value - // in either mult_a[(2*int_width_a)-1:int_width_a], mult_b[(2*int_width_a)-1:int_width_a], - // sign_a_reg or sign_b_reg will trigger the task call. - // ----------------------------------------------------------------------- - - assign mult_res_wire[(((int_width_a + int_width_b) *2) - 1) : (int_width_a + int_width_b)] = (multiplier_register1 == "UNREGISTERED")? - mult1_result[(int_width_a + int_width_b - 1) : 0]: - mult_res_reg[((int_width_a + int_width_b) *2) - 1: (int_width_a + int_width_b)]; - - assign mult_saturate_overflow_vec[1] = (multiplier_register1 == "UNREGISTERED")? - mult1_saturate_overflow : mult_saturate_overflow_reg[1]; - - - // This always block is to perform the rounding and saturation operations (StratixII only) - always @(mult_res_1 or mult01_round_wire or mult01_saturate_wire) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - // ------------------------------------------------------- - // Stratix II Rounding support - // This block basically carries out the rounding for the - // mult_res_1. The equation to get the mult1_round_out is - // obtained from the Stratix II Mac FFD which is below: - // round_adder_constant = (1 << (wfraction - wfraction_round - 1)) - // roundout[] = datain[] + round_adder_constant - // For Stratix II rounding, we round up the bits to 15 bits - // or in another word wfraction_round = 15. - // -------------------------------------------------------- - - if ((multiplier01_rounding == "YES") || - ((multiplier01_rounding == "VARIABLE") && (mult01_round_wire == 1))) - begin - mult1_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_1[(int_width_a + int_width_b) -1 :0] + ( 1 << (`MULT_ROUND_BITS - 1)); - end - else - begin - mult1_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_1[(int_width_a + int_width_b) -1 :0]; - end - - mult1_round_out[((int_width_a + int_width_b) + 2) : (int_width_a + int_width_b)] = {2{1'b0}}; - - - // ------------------------------------------------------- - // Stratix II Saturation support - // This carries out the saturation for mult1_round_out. - // The equation to get the saturated result is obtained - // from Stratix II MAC FFD which is below: - // satoverflow = 1 if sign bit is different - // satvalue[wtotal-1 : wfraction] = roundout[wtotal-1] - // satvalue[wfraction-1 : 0] = !roundout[wtotal-1] - // ------------------------------------------------------- - - - if ((multiplier01_saturation == "YES") || - (( multiplier01_saturation == "VARIABLE") && (mult01_saturate_wire == 1))) - begin - mult1_saturate_overflow_stat = (~mult1_round_out[int_width_a + int_width_b - 1]) && mult1_round_out[int_width_a + int_width_b - 2]; - - if (mult1_saturate_overflow_stat == 0) - begin - mult1_saturate_out = mult1_round_out; - mult1_saturate_overflow = mult1_round_out[0]; - end - else - begin - // We are doing Q2.31 saturation. Thus we would insert additional bit - // for the LSB - for (num_bit_mult1 = (int_width_a + int_width_b - 1); num_bit_mult1 >= (int_width_a + int_width_b - 2); num_bit_mult1 = num_bit_mult1 - 1) - begin - mult1_saturate_out[num_bit_mult1] = mult1_round_out[int_width_a + int_width_b - 1]; - end - - for (num_bit_mult1 = sat_ini_value; num_bit_mult1 >= 3; num_bit_mult1 = num_bit_mult1 - 1) - begin - mult1_saturate_out[num_bit_mult1] = ~mult1_round_out[int_width_a + int_width_b - 1]; - end - - mult1_saturate_out[2:0] = mult1_round_out[2:0]; - mult1_saturate_overflow = mult1_saturate_overflow_stat; - end - end - else - begin - mult1_saturate_out = mult1_round_out; - mult1_saturate_overflow = 1'b0; - end - - if ((multiplier01_rounding == "YES") || - ((multiplier01_rounding == "VARIABLE") && (mult01_round_wire == 1))) - begin - - for (num_bit_mult1 = (`MULT_ROUND_BITS - 1); num_bit_mult1 >= 0; num_bit_mult1 = num_bit_mult1 - 1) - begin - mult1_saturate_out[num_bit_mult1] = 1'b0; - end - - end - end - end - - always @(mult1_saturate_out or mult_res_1) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - mult1_result <= mult1_saturate_out[(int_width_a + int_width_b) -1 :0]; - end - else - begin - mult1_result <= mult_res_1; - end - end - - - always @(posedge multiplier_reg1_wire_clk or posedge multiplier_reg1_wire_clr) - begin - if (multiplier_reg1_wire_clr == 1) - begin - mult_res_reg[((int_width_a + int_width_b) *2) -1 : (int_width_a + int_width_b)] <= 0; - mult_saturate_overflow_reg[1] <= 0; - end - else if ((multiplier_reg1_wire_clk == 1) && (multiplier_reg1_wire_en == 1)) - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) - mult_res_reg[((int_width_a + int_width_b) *2) -1 : (int_width_a + int_width_b)] <= - mult_res_1[(int_width_a + int_width_b) -1 :0]; - else - begin - mult_res_reg[((int_width_a + int_width_b) *2) -1 : (int_width_a + int_width_b)] <= mult1_result; - mult_saturate_overflow_reg[1] <= mult1_saturate_overflow; - end - end - - - always @(mult_a_wire[(int_width_a *2) -1 : (int_width_a*1)] or mult_b_wire[(int_width_b *2) -1 : (int_width_b *1)] or - sign_a_wire or sign_b_wire) - begin - - mult_res_1 = do_multiply (1, sign_a_wire, sign_b_wire); - end - - - - - - // ---------------------------------------------------------------------------- - // This block basically calls the task do_multiply() to set the value of - // mult_res_2[(int_width_a + int_width_b) -1 :0] - // - // If multiplier_register2 is registered, the call of the task - // will be triggered by a posedge multiplier_reg2_wire_clk. - // It also has an asynchronous clear signal multiplier_reg2_wire_clr - // - // If multiplier_register2 is unregistered, a change of value - // in either mult_a[(3*int_width_a)-1:2*int_width_a], mult_b[(3*int_width_a)-1:2*int_width_a], - // sign_a_reg or sign_b_reg will trigger the task call. - // --------------------------------------------------------------------------- - - assign mult_res_wire[((int_width_a + int_width_b) *3) -1 : (2*(int_width_a + int_width_b))] = (multiplier_register2 == "UNREGISTERED")? - mult2_result[(int_width_a + int_width_b) -1 :0] : - mult_res_reg[((int_width_a + int_width_b) *3) -1 : (2*(int_width_a + int_width_b))]; - - assign mult_saturate_overflow_vec[2] = (multiplier_register2 == "UNREGISTERED")? - mult2_saturate_overflow : mult_saturate_overflow_reg[2]; - - // This always block is to perform the rounding and saturation operations (StratixII only) - always @(mult_res_2 or mult23_round_wire or mult23_saturate_wire) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - // ------------------------------------------------------- - // Stratix II Rounding support - // This block basically carries out the rounding for the - // mult_res_2. The equation to get the mult2_round_out is - // obtained from the Stratix II Mac FFD which is below: - // round_adder_constant = (1 << (wfraction - wfraction_round - 1)) - // roundout[] = datain[] + round_adder_constant - // For Stratix II rounding, we round up the bits to 15 bits - // or in another word wfraction_round = 15. - // -------------------------------------------------------- - - if ((multiplier23_rounding == "YES") || - ((multiplier23_rounding == "VARIABLE") && (mult23_round_wire == 1))) - begin - mult2_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_2[(int_width_a + int_width_b) -1 :0] + ( 1 << (`MULT_ROUND_BITS - 1)); - end - else - begin - mult2_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_2[(int_width_a + int_width_b) -1 :0]; - end - - mult2_round_out[((int_width_a + int_width_b) + 2) : (int_width_a + int_width_b)] = {2{1'b0}}; - - // ------------------------------------------------------- - // Stratix II Saturation support - // This carries out the saturation for mult2_round_out. - // The equation to get the saturated result is obtained - // from Stratix II MAC FFD which is below: - // satoverflow = 1 if sign bit is different - // satvalue[wtotal-1 : wfraction] = roundout[wtotal-1] - // satvalue[wfraction-1 : 0] = !roundout[wtotal-1] - // ------------------------------------------------------- - - - if ((multiplier23_saturation == "YES") || - (( multiplier23_saturation == "VARIABLE") && (mult23_saturate_wire == 1))) - begin - mult2_saturate_overflow_stat = (~mult2_round_out[int_width_a + int_width_b - 1]) && mult2_round_out[int_width_a + int_width_b - 2]; - - if (mult2_saturate_overflow_stat == 0) - begin - mult2_saturate_out = mult2_round_out; - mult2_saturate_overflow = mult2_round_out[0]; - end - else - begin - // We are doing Q2.31 saturation. Thus we would insert additional bit - // for the LSB - for (num_bit_mult2 = (int_width_a + int_width_b - 1); num_bit_mult2 >= (int_width_a + int_width_b - 2); num_bit_mult2 = num_bit_mult2 - 1) - begin - mult2_saturate_out[num_bit_mult2] = mult2_round_out[int_width_a + int_width_b - 1]; - end - - for (num_bit_mult2 = sat_ini_value; num_bit_mult2 >= 3; num_bit_mult2 = num_bit_mult2 - 1) - begin - mult2_saturate_out[num_bit_mult2] = ~mult2_round_out[int_width_a + int_width_b - 1]; - end - - mult2_saturate_out[2:0] = mult2_round_out[2:0]; - mult2_saturate_overflow = mult2_saturate_overflow_stat; - end - end - else - begin - mult2_saturate_out = mult2_round_out; - mult2_saturate_overflow = 1'b0; - end - - if ((multiplier23_rounding == "YES") || - ((multiplier23_rounding == "VARIABLE") && (mult23_round_wire == 1))) - begin - - for (num_bit_mult2 = (`MULT_ROUND_BITS - 1); num_bit_mult2 >= 0; num_bit_mult2 = num_bit_mult2 - 1) - begin - mult2_saturate_out[num_bit_mult2] = 1'b0; - end - - end - end - end - - always @(mult2_saturate_out or mult_res_2) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - mult2_result <= mult2_saturate_out[(int_width_a + int_width_b) -1 :0]; - end - else - begin - mult2_result <= mult_res_2; - end - end - - - always @(posedge multiplier_reg2_wire_clk or posedge multiplier_reg2_wire_clr) - begin - if (multiplier_reg2_wire_clr == 1) - begin - mult_res_reg[((int_width_a + int_width_b) *3) -1 : (2*(int_width_a + int_width_b))] <= 0; - mult_saturate_overflow_reg[2] <= 0; - end - else if ((multiplier_reg2_wire_clk == 1) && (multiplier_reg2_wire_en == 1)) - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) - mult_res_reg[((int_width_a + int_width_b) *3) -1 : (2*(int_width_a + int_width_b))] <= - mult_res_2[(int_width_a + int_width_b) -1 :0]; - else - begin - mult_res_reg[((int_width_a + int_width_b) *3) -1 : (2*(int_width_a + int_width_b))] <= mult2_result; - mult_saturate_overflow_reg[2] <= mult2_saturate_overflow; - end - end - - always @(mult_a_wire[(int_width_a *3) -1 : (int_width_a*2)] or mult_b_wire[(int_width_b *3) -1 : (int_width_b *2)] or - sign_a_wire or sign_b_wire) - begin - mult_res_2 = do_multiply (2, sign_a_wire, sign_b_wire); - end - - - - - // ---------------------------------------------------------------------------- - // This block basically calls the task do_multiply() to set the value of - // mult_res_3[(int_width_a + int_width_b) -1 :0] - // - // If multiplier_register3 is registered, the call of the task - // will be triggered by a posedge multiplier_reg3_wire_clk. - // It also has an asynchronous clear signal multiplier_reg3_wire_clr - // - // If multiplier_register3 is unregistered, a change of value - // in either mult_a[(4*int_width_a)-1:3*int_width_a], mult_b[(4*int_width_a)-1:3*int_width_a], - // sign_a_reg or sign_b_reg will trigger the task call. - // --------------------------------------------------------------------------- - - assign mult_res_wire[((int_width_a + int_width_b) *4) -1 : 3*(int_width_a + int_width_b)] = (multiplier_register3 == "UNREGISTERED")? - mult3_result[(int_width_a + int_width_b) -1 :0] : - mult_res_reg[((int_width_a + int_width_b) *4) -1 : 3*(int_width_a + int_width_b)]; - - assign mult_saturate_overflow_vec[3] = (multiplier_register3 == "UNREGISTERED")? - mult3_saturate_overflow : mult_saturate_overflow_reg[3]; - - // This always block is to perform the rounding and saturation operations (StratixII only) - always @(mult_res_3 or mult23_round_wire or mult23_saturate_wire) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - // ------------------------------------------------------- - // Stratix II Rounding support - // This block basically carries out the rounding for the - // mult_res_3. The equation to get the mult3_round_out is - // obtained from the Stratix II Mac FFD which is below: - // round_adder_constant = (1 << (wfraction - wfraction_round - 1)) - // roundout[] = datain[] + round_adder_constant - // For Stratix II rounding, we round up the bits to 15 bits - // or in another word wfraction_round = 15. - // -------------------------------------------------------- - - if ((multiplier23_rounding == "YES") || - ((multiplier23_rounding == "VARIABLE") && (mult23_round_wire == 1))) - begin - mult3_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_3[(int_width_a + int_width_b) -1 :0] + ( 1 << (`MULT_ROUND_BITS - 1)); - end - else - begin - mult3_round_out[(int_width_a + int_width_b) -1 :0] = mult_res_3[(int_width_a + int_width_b) -1 :0]; - end - - mult3_round_out[((int_width_a + int_width_b) + 2) : (int_width_a + int_width_b)] = {2{1'b0}}; - - // ------------------------------------------------------- - // Stratix II Saturation support - // This carries out the saturation for mult3_round_out. - // The equation to get the saturated result is obtained - // from Stratix II MAC FFD which is below: - // satoverflow = 1 if sign bit is different - // satvalue[wtotal-1 : wfraction] = roundout[wtotal-1] - // satvalue[wfraction-1 : 0] = !roundout[wtotal-1] - // ------------------------------------------------------- - - - if ((multiplier23_saturation == "YES") || - (( multiplier23_saturation == "VARIABLE") && (mult23_saturate_wire == 1))) - begin - mult3_saturate_overflow_stat = (~mult3_round_out[int_width_a + int_width_b - 1]) && mult3_round_out[int_width_a + int_width_b - 2]; - - if (mult3_saturate_overflow_stat == 0) - begin - mult3_saturate_out = mult3_round_out; - mult3_saturate_overflow = mult3_round_out[0]; - end - else - begin - // We are doing Q2.31 saturation. Thus we would make sure the 3 LSB bits isn't reset - for (num_bit_mult3 = (int_width_a + int_width_b -1); num_bit_mult3 >= (int_width_a + int_width_b - 2); num_bit_mult3 = num_bit_mult3 - 1) - begin - mult3_saturate_out[num_bit_mult3] = mult3_round_out[int_width_a + int_width_b - 1]; - end - - for (num_bit_mult3 = sat_ini_value; num_bit_mult3 >= 3; num_bit_mult3 = num_bit_mult3 - 1) - begin - mult3_saturate_out[num_bit_mult3] = ~mult3_round_out[int_width_a + int_width_b - 1]; - end - - mult3_saturate_out[2:0] = mult3_round_out[2:0]; - mult3_saturate_overflow = mult3_saturate_overflow_stat; - end - end - else - begin - mult3_saturate_out = mult3_round_out; - mult3_saturate_overflow = 1'b0; - end - - if ((multiplier23_rounding == "YES") || - ((multiplier23_rounding == "VARIABLE") && (mult23_round_wire == 1))) - begin - - for (num_bit_mult3 = (`MULT_ROUND_BITS - 1); num_bit_mult3 >= 0; num_bit_mult3 = num_bit_mult3 - 1) - begin - mult3_saturate_out[num_bit_mult3] = 1'b0; - end - - end - end - end - - always @(mult3_saturate_out or mult_res_3) - begin - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - mult3_result <= mult3_saturate_out[(int_width_a + int_width_b) -1 :0]; - end - else - begin - mult3_result <= mult_res_3; - end - end - - - always @(posedge multiplier_reg3_wire_clk or posedge multiplier_reg3_wire_clr) - begin - if (multiplier_reg3_wire_clr == 1) - begin - mult_res_reg[((int_width_a + int_width_b) *4) -1 : (3*(int_width_a + int_width_b))] <= 0; - mult_saturate_overflow_reg[3] <= 0; - end - else if ((multiplier_reg3_wire_clk == 1) && (multiplier_reg3_wire_en == 1)) - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0) - mult_res_reg[((int_width_a + int_width_b) *4) -1 : (3*(int_width_a + int_width_b))] <= - mult_res_3[(int_width_a + int_width_b) -1 :0]; - else - begin - mult_res_reg[((int_width_a + int_width_b) *4) -1: 3*(int_width_a + int_width_b)] <= mult3_result; - mult_saturate_overflow_reg[3] <= mult3_saturate_overflow; - end - - end - - - - - always @(mult_a_wire[(int_width_a *4) -1 : (int_width_a*3)] or mult_b_wire[(int_width_b *4) -1 : (int_width_b *3)] or - sign_a_wire or sign_b_wire) - begin - mult_res_3 = do_multiply (3, sign_a_wire, sign_b_wire); - end - - - //------------------------------ - // Continuous assign statements - //------------------------------ - - // Clock in all the A input registers - assign i_scanina = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0)? - dataa_int[int_width_a-1:0] : scanina_z; - - assign mult_a_pre[int_width_a-1:0] = (input_source_a0 == "DATAA")? dataa_int[int_width_a-1:0] : - (input_source_a0 == "SCANA")? i_scanina : - (sourcea_wire[0] == 1)? scanina_z : dataa_int[int_width_a-1:0]; - - assign mult_a_pre[(2*int_width_a)-1:int_width_a] = (input_source_a1 == "DATAA") ? dataa_int[(2*int_width_a)-1:int_width_a] : - (input_source_a1 == "SCANA")? mult_a_wire[int_width_a-1:0] : - (sourcea_wire[1] == 1)? mult_a_wire[int_width_a-1:0] : dataa_int[(2*int_width_a)-1:int_width_a]; - - assign mult_a_pre[(3*int_width_a)-1:2*int_width_a] = (input_source_a2 == "DATAA") ? dataa_int[(3*int_width_a)-1:2*int_width_a] : - (input_source_a2 == "SCANA")? mult_a_wire[(2*int_width_a)-1:int_width_a] : - (sourcea_wire[2] == 1)? mult_a_wire[(2*int_width_a)-1:int_width_a] : dataa_int[(3*int_width_a)-1:2*int_width_a]; - - assign mult_a_pre[(4*int_width_a)-1:3*int_width_a] = (input_source_a3 == "DATAA") ? dataa_int[(4*int_width_a)-1:3*int_width_a] : - (input_source_a3 == "SCANA")? mult_a_wire[(3*int_width_a)-1:2*int_width_a] : - (sourcea_wire[3] == 1)? mult_a_wire[(3*int_width_a)-1:2*int_width_a] : dataa_int[(4*int_width_a)-1:3*int_width_a]; - - assign scanouta = mult_a_wire[(number_of_multipliers * int_width_a)-1 : ((number_of_multipliers-1) * int_width_a) + (int_width_a - width_a)]; - assign scanoutb = mult_b_wire[(number_of_multipliers * int_width_b)-1 : ((number_of_multipliers-1) * int_width_b) + (int_width_b - width_b)]; - - // Clock in all the B input registers - assign i_scaninb = (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 0)? - datab_int[int_width_b-1:0] : scaninb_z; - - assign mult_b_pre[int_width_b-1:0] = (input_source_b0 == "DATAB")? datab_int[int_width_b-1:0] : - (input_source_b0 == "SCANB")? i_scaninb : - (sourceb_wire[0] == 1)? scaninb_z : datab_int[int_width_b-1:0]; - - assign mult_b_pre[(2*int_width_b)-1:int_width_b] = (input_source_b1 == "DATAB") ? datab_int[(2*int_width_b)-1 : int_width_b ]: - (input_source_b1 == "SCANB")? mult_b_wire[int_width_b -1 : 0] : - (sourceb_wire[1] == 1)? mult_b_wire[int_width_b -1 : 0] : datab_int[(2*int_width_b)-1 : int_width_b ]; - - assign mult_b_pre[(3*int_width_b)-1:2*int_width_b] = (input_source_b2 == "DATAB") ? datab_int[(3*int_width_b)-1:2*int_width_b] : - (input_source_b2 == "SCANB")? mult_b_wire[(2*int_width_b)-1:int_width_b] : - (sourceb_wire[2] == 1)? mult_b_wire[(2*int_width_b)-1:int_width_b] : datab_int[(3*int_width_b)-1:2*int_width_b]; - - assign mult_b_pre[(4*int_width_b)-1:3*int_width_b] = (input_source_b3 == "DATAB") ? datab_int[(4*int_width_b)-1:3*int_width_b] : - (input_source_b3 == "SCANB")? mult_b_wire[(3*int_width_b)-1:2*int_width_b] : - (sourceb_wire[3] == 1)? mult_b_wire[(3*int_width_b)-1:2*int_width_b] : datab_int[(4*int_width_b)-1:3*int_width_b]; - - // clock in all the control signals - assign addsub1_int = ((port_addnsub1 == "PORT_CONNECTIVITY")? - ((multiplier1_direction != "UNUSED")? (multiplier1_direction == "ADD" ? 1 : 0) : addnsub1_z) : - ((port_addnsub1 == "PORT_USED")? addnsub1_z : - (port_addnsub1 == "PORT_UNUSED")? (multiplier1_direction == "ADD" ? 1 : 0) : addnsub1_z)); - - assign addsub3_int = ((port_addnsub3 == "PORT_CONNECTIVITY")? - ((multiplier3_direction != "UNUSED") ? (multiplier3_direction == "ADD" ? 1 : 0) : addnsub3_z) : - ((port_addnsub3 == "PORT_USED")? addnsub3_z : - (port_addnsub3 == "PORT_UNUSED")? (multiplier3_direction == "ADD" ? 1 : 0) : addnsub3_z)); - - assign sign_a_int = ((port_signa == "PORT_CONNECTIVITY")? - ((representation_a != "UNUSED") ? (representation_a == "SIGNED" ? 1 : 0) : signa_z) : - (port_signa == "PORT_USED")? signa_z : - (port_signa == "PORT_UNUSED")? (representation_a == "SIGNED" ? 1 : 0) : signa_z); - - assign sign_b_int = ((port_signb == "PORT_CONNECTIVITY")? - ((representation_b != "UNUSED") ? (representation_b == "SIGNED" ? 1 : 0) : signb_z) : - (port_signb == "PORT_USED")? signb_z : - (port_signb == "PORT_UNUSED")? (representation_b == "SIGNED" ? 1 : 0) : signb_z); - - - - // ----------------------------------------------------------------- - // This is the main block that performs the addition and subtraction - // ----------------------------------------------------------------- - - assign result = (output_register == "UNREGISTERED")? - temp_sum[width_result - 1 + int_mult_diff_bit : int_mult_diff_bit]: temp_sum_reg[width_result - 1 + int_mult_diff_bit:int_mult_diff_bit]; - - assign mult_is_saturate_vec = (output_register == "UNREGISTERED")? - mult_saturate_overflow_vec: mult_saturate_overflow_pipe_reg; - - always @(posedge output_reg_wire_clk or posedge output_reg_wire_clr) - begin - if (output_reg_wire_clr == 1) - begin - temp_sum_reg <= {(int_width_result + 1){1'b0}}; - - for ( num_stor = extra_latency; num_stor >= 0; num_stor = num_stor - 1 ) - begin - result_pipe[num_stor] <= {int_width_result{1'b0}}; - end - - mult_saturate_overflow_pipe_reg <= {4{1'b0}}; - - head_result <= 0; - end - else if ((output_reg_wire_clk ==1) && (output_reg_wire_en ==1)) - begin - - if (extra_latency == 0) - begin - temp_sum_reg[int_width_result-1 :0] <= temp_sum[int_width_result-1 :0]; - end - else - begin - result_pipe [head_result] <= temp_sum[int_width_result-1 :0]; - head_result <= (head_result +1) % (extra_latency + 1); - end - mult_saturate_overflow_pipe_reg <= mult_saturate_overflow_vec; - end - - end - - assign head_result_wire = head_result[31:0]; - - always @(head_result_wire or result_pipe[head_result_wire]) - begin - if (extra_latency != 0) - temp_sum_reg[int_width_result-1 :0] <= result_pipe[head_result_wire]; - end - - always @(mult_res_wire [4 * (int_width_a + int_width_b) -1:0] or - addsub1_pipe_wire or addsub3_pipe_wire or - sign_a_pipe_wire or sign_b_pipe_wire or addnsub1_round_pipe_wire or - addnsub3_round_pipe_wire) - begin - temp_sum =0; - for (num_mult = 0; num_mult < number_of_multipliers; num_mult = num_mult +1) - begin - - mult_res_temp = mult_res_wire >> (num_mult * (int_width_a + int_width_b)); - mult_res_ext = ((int_width_result > (int_width_a + int_width_b))? - {{(int_width_result - int_width_a - int_width_b) - {mult_res_temp [int_width_a + int_width_b - 1] & - (sign_a_pipe_wire | sign_b_pipe_wire)}}, mult_res_temp}:mult_res_temp); - - if (num_mult == 1) - begin - if (addsub1_pipe_wire) - temp_sum = temp_sum + mult_res_ext; - else - temp_sum = temp_sum - mult_res_ext; - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 1) - begin - // ------------------------------------------------------- - // Stratix II Rounding support - // This block basically carries out the rounding for the - // temp_sum. The equation to get the roundout for adder1 and - // adder3 is obtained from the Stratix II Mac FFD which is below: - // round_adder_constant = (1 << (wfraction - wfraction_round - 1)) - // roundout[] = datain[] + round_adder_constant - // For Stratix II rounding, we round up the bits to 15 bits - // or in another word wfraction_round = 15. - // -------------------------------------------------------- - - if ((adder1_rounding == "YES") || - ((adder1_rounding == "VARIABLE") && (addnsub1_round_pipe_wire == 1))) - begin - adder1_round_out = temp_sum + ( 1 << (`ADDER_ROUND_BITS - 1)); - - for (j = (`ADDER_ROUND_BITS - 1); j >= 0; j = j - 1) - begin - adder1_round_out[j] = 1'b0; - end - - end - else - begin - adder1_round_out = temp_sum; - end - - adder1_result = adder1_round_out; - end - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - temp_sum = adder1_result; - end - - end - else if (num_mult == 3) - begin - if (addsub3_pipe_wire) - temp_sum = temp_sum + mult_res_ext; - else - temp_sum = temp_sum - mult_res_ext; - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family) == 1) - begin - // StratixII rounding support - // Please see the description for rounding support in adder1 - - if ((adder3_rounding == "YES") || - ((adder3_rounding == "VARIABLE") && (addnsub3_round_pipe_wire == 1))) - begin - - adder3_round_out = temp_sum + ( 1 << (`ADDER_ROUND_BITS - 1)); - - for (j = (`ADDER_ROUND_BITS - 1); j >= 0; j = j - 1) - begin - adder3_round_out[j] = 1'b0; - end - - end - else - begin - adder3_round_out = temp_sum; - end - - adder3_result = adder3_round_out; - end - - if (dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) - begin - temp_sum = adder3_result; - end - - end - else - begin - temp_sum = temp_sum + mult_res_ext; - end - end - - end - - -endmodule // end of ALTMULT_ADD - - -//START_MODULE_NAME------------------------------------------------------------- -// -// Module Name : altfp_mult -// -// Description : Parameterized floating point multiplier megafunction. -// This module implements IEEE-754 Compliant Floating Poing -// Multiplier.It supports Single Precision, Single Extended -// Precision and Double Precision floating point -// multiplication. -// -// Limitation : Fixed clock latency with 4 clock cycle delay. -// -// Results expected: result of multiplication and the result's status bits -// -//END_MODULE_NAME--------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -module altfp_mult ( - clock, // Clock input to the multiplier.(Required) - clk_en, // Clock enable for the multiplier. - aclr, // Asynchronous clear for the multiplier. - dataa, // Data input to the multiplier.(Required) - datab, // Data input to the multiplier.(Required) - result, // Multiplier output port.(Required) - overflow, // Overflow port for the multiplier. - underflow, // Underflow port for the multiplier. - zero, // Zero port for the multiplier. - denormal, // Denormal port for the multiplier. - indefinite, // Indefinite port for the multiplier. - nan // Nan port for the multiplier. -); - -// GLOBAL PARAMETER DECLARATION - // Specifies the value of the exponent, Minimum = 8, Maximum = 31 - parameter width_exp = 8; - // Specifies the value of the mantissa, Minimum = 23, Maximum = 52 - parameter width_man = 23; - // Specifies whether to use dedicated multiplier circuitry. - parameter dedicated_multiplier_circuitry = "AUTO"; - parameter reduced_functionality = "NO"; - parameter pipeline = 5; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "altfp_mult"; - -// LOCAL PARAMETER DECLARATION - //clock latency - parameter LATENCY = pipeline -1; - // Sum of mantissa's width and exponent's width - parameter WIDTH_MAN_EXP = width_exp + width_man; - -// INPUT PORT DECLARATION - input [WIDTH_MAN_EXP : 0] dataa; - input [WIDTH_MAN_EXP : 0] datab; - input clock; - input clk_en; - input aclr; - -// OUTPUT PORT DECLARATION - output [WIDTH_MAN_EXP : 0] result; - output overflow; - output underflow; - output zero; - output denormal; - output indefinite; - output nan; - -// INTERNAL REGISTERS DECLARATION - reg[width_man : 0] mant_dataa; - reg[width_man : 0] mant_datab; - reg[(2 * width_man) + 1 : 0] mant_result; - reg cout; - reg zero_mant_dataa; - reg zero_mant_datab; - reg zero_dataa; - reg zero_datab; - reg inf_dataa; - reg inf_datab; - reg nan_dataa; - reg nan_datab; - reg den_dataa; - reg den_datab; - reg no_multiply; - reg mant_result_msb; - reg no_rounding; - reg sticky_bit; - reg round_bit; - reg guard_bit; - reg carry; - reg[WIDTH_MAN_EXP : 0] result_pipe[LATENCY : 0]; - reg[LATENCY : 0] overflow_pipe; - reg[LATENCY : 0] underflow_pipe; - reg[LATENCY : 0] zero_pipe; - reg[LATENCY : 0] denormal_pipe; - reg[LATENCY : 0] indefinite_pipe; - reg[LATENCY : 0] nan_pipe; - reg[WIDTH_MAN_EXP : 0] temp_result; - reg overflow_bit; - reg underflow_bit; - reg zero_bit; - reg denormal_bit; - reg indefinite_bit; - reg nan_bit; - -// INTERNAL TRI DECLARATION - tri1 clk_en; - tri0 aclr; - -// LOCAL INTEGER DECLARATION - integer exp_dataa; - integer exp_datab; - integer exp_result; - - // loop counter - integer i0; - integer i1; - integer i2; - integer i3; - integer i4; - integer i5; - -// TASK DECLARATION - - // Add up two bits to get the result( + ) - //Also output the carry bit. - task add_bits; - // Value to be added to the temporary result of mantissa's multiplication. - input [width_man : 0] val1; - // temporary result of mantissa's multiplication. - inout [(2 * width_man) + 1 : 0] temp_mant_result; - output cout; // carry out bit - - reg co; // temporary storage to store the carry out bit - - begin - co = 1'b0; - for(i0 = 0; i0 <= width_man; i0 = i0 + 1) - begin - // if the carry out bit from the previous bit addition is 1'b0 - if (co == 1'b0) - begin - if (val1[i0] != temp_mant_result[i0 + width_man + 1]) - begin - temp_mant_result[i0 + width_man + 1] = 1'b1; - end - else - begin - co = val1[i0] & temp_mant_result[i0 + width_man + 1]; - temp_mant_result[i0 + width_man + 1] = 1'b0; - end - end - else // if (co == 1'b1) - begin - co = val1[i0] | temp_mant_result[i0 + width_man + 1]; - if (val1[i0] != temp_mant_result[i0 + width_man + 1]) - begin - temp_mant_result[i0 + width_man + 1] = 1'b0; - end - else - begin - temp_mant_result[i0 + width_man + 1] = 1'b1; - end - end - end // end of for loop - cout = co; - end - endtask // add_bits - -// FUNCTON DECLARATION - - // Check whether the all the bits from index to is 1'b1 - // Return 1'b1 if true, otherwise return 1'b0 - function bit_all_0; - input [(2 * width_man) + 1: 0] val; - input index1; - integer index1; - input index2; - integer index2; - - reg all_0; //temporary storage to indicate whether all the currently - // checked bits are 1'b0 - begin - begin : LOOP_1 - all_0 = 1'b1; - for (i1 = index1; i1 <= index2; i1 = i1 + 1) - begin - if ((val[i1]) == 1'b1) - begin - all_0 = 1'b0; - disable LOOP_1; //break the loop to stop checking - end - end - end - bit_all_0 = all_0; - end - endfunction // bit_all_0 - - // Calculate the exponential value ( power of ) - function integer exponential_value; - input base_number; - input exponent_number; - integer base_number; - integer exponent_number; - integer value; // temporary storage to store the exponential value - - begin - value = 1; - for (i2 = 0; i2 < exponent_number; i2 = i2 + 1) - begin - value = base_number * value; - end - exponential_value = value; - end - endfunction // exponential_value - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - for(i3 = LATENCY; i3 >= 0; i3 = i3 - 1) - begin - result_pipe[i3] = 0; - overflow_pipe[i3] = 1'b0; - underflow_pipe[i3] = 1'b0; - zero_pipe[i3] = 1'b0; - denormal_pipe[i3] = 1'b0; - indefinite_pipe[i3] = 1'b0; - nan_pipe[i3] = 1'b0; - end - // Check for illegal mode setting - if (WIDTH_MAN_EXP >= 64) - begin - $display("ERROR: The sum of width_exp(%d) and width_man(%d) must be less 64!", width_exp, width_man); - $finish; - end - if (width_exp < 8) - begin - $display("ERROR: width_exp(%d) must be at least 8!", width_exp); - $finish; - end - if (width_man < 23) - begin - $display("ERROR: width_man(%d) must be at least 23!", width_man); - $finish; - end - if (~((width_exp >= 11) || ((width_exp == 8) && (width_man == 23)))) - begin - $display("ERROR: Found width_exp(%d) inside the range of Single Precision. width_exp must be 8 and width_man must be 23 for Single Presicion!", width_exp); - $finish; - end - if (~((width_man >= 31) || ((width_exp == 8) && (width_man == 23)))) - begin - $display("ERROR: Found width_man(%d) inside the range of Single Precision. width_exp must be 8 and width_man must be 23 for Single Presicion!", width_man); - $finish; - end - if (width_exp >= width_man) - begin - $display("ERROR: width_exp(%d) must be less than width_man(%d)!", width_exp, width_man); - $finish; - end - if ((pipeline != 5) && (pipeline != 6)) - begin - $display("ERROR: The legal value for PIPELINE is 5 or 6!"); - $finish; - end - - if ((reduced_functionality != "NO") && (reduced_functionality != "YES")) - begin - $display("ERROR: reduced_functionality value must be \"YES\" or \"NO\"!"); - $finish; - end - - if (reduced_functionality != "NO") - begin - $display("Info: The Clearbox support is available for reduced functionality Floating Point Multiplier."); - end - end // INITIALIZATION - -// ALWAYS CONSTRUCT BLOCK - - // multiplication - always @(dataa or datab) - begin : MULTIPLY_FP - temp_result = {(WIDTH_MAN_EXP + 1){1'b0}}; - overflow_bit = 1'b0; - underflow_bit = 1'b0; - zero_bit = 1'b0; - denormal_bit = 1'b0; - indefinite_bit = 1'b0; - nan_bit = 1'b0; - mant_result = {((2 * width_man) + 2){1'b0}}; - exp_dataa = 0; - exp_datab = 0; - // Set the exponential value - exp_dataa = dataa[width_exp + width_man -1:width_man]; - exp_datab = datab[width_exp + width_man -1:width_man]; - - zero_mant_dataa = 1'b1; - // Check whether the mantissa for dataa is zero - begin : LOOP_3 - for (i4 = 0; i4 <= width_man - 1; i4 = i4 + 1) - begin - if ((dataa[i4]) == 1'b1) - begin - zero_mant_dataa = 1'b0; - disable LOOP_3; - end - end - end // LOOP_3 - zero_mant_datab = 1'b1; - // Check whether the mantissa for datab is zero - begin : LOOP_4 - for (i4 = 0; i4 <= width_man -1; i4 = i4 + 1) - begin - if ((datab[i4]) == 1'b1) - begin - zero_mant_datab = 1'b0; - disable LOOP_4; - end - end - end // LOOP_4 - zero_dataa = 1'b0; - den_dataa = 1'b0; - inf_dataa = 1'b0; - nan_dataa = 1'b0; - // Check whether dataa is special input - if (exp_dataa == 0) - begin - if ((zero_mant_dataa == 1'b1) - || (reduced_functionality != "NO")) - begin - zero_dataa = 1'b1; // dataa is zero - end - else - begin - den_dataa = 1'b1; // dataa is denormalized - end - end - else if (exp_dataa == (exponential_value(2, width_exp) - 1)) - begin - if (zero_mant_dataa == 1'b1) - begin - inf_dataa = 1'b1; // dataa is infinity - end - else - begin - nan_dataa = 1'b1; // dataa is Nan - end - end - zero_datab = 1'b0; - den_datab = 1'b0; - inf_datab = 1'b0; - nan_datab = 1'b0; - // Check whether datab is special input - if (exp_datab == 0) - begin - if ((zero_mant_datab == 1'b1) - || (reduced_functionality != "NO")) - begin - zero_datab = 1'b1; // datab is zero - end - else - begin - den_datab = 1'b1; // datab is denormalized - end - end - else if (exp_datab == (exponential_value(2, width_exp) - 1)) - begin - if (zero_mant_datab == 1'b1) - begin - inf_datab = 1'b1; // datab is infinity - end - else - begin - nan_datab = 1'b1; // datab is Nan - end - end - no_multiply = 1'b0; - // Set status flag if special input exists - if (nan_dataa || nan_datab || (inf_dataa && zero_datab) || - (inf_datab && zero_dataa)) - begin - nan_bit = 1'b1; // NaN - for (i4 = width_man - 1; i4 <= WIDTH_MAN_EXP - 1; i4 = i4 + 1) - begin - temp_result[i4] = 1'b1; - end - no_multiply = 1'b1; // no multiplication is needed. - end - else if (zero_dataa) - begin - zero_bit = 1'b1; // Zero - temp_result[WIDTH_MAN_EXP : 0] = 0; - no_multiply = 1'b1; - end - else if (zero_datab) - begin - zero_bit = 1'b1; // Zero - temp_result[WIDTH_MAN_EXP : 0] = 0; - no_multiply = 1'b1; - end - else if (inf_dataa) - begin - overflow_bit = 1'b1; // Overflow - temp_result[WIDTH_MAN_EXP : 0] = dataa; - no_multiply = 1'b1; - end - else if (inf_datab) - begin - overflow_bit = 1'b1; // Overflow - temp_result[WIDTH_MAN_EXP : 0] = datab; - no_multiply = 1'b1; - end - // if multiplication needed - if (no_multiply == 1'b0) - begin - // Perform exponent operation - exp_result = exp_dataa + exp_datab - (exponential_value(2, width_exp -1) -1); - // First operand for multiplication - mant_dataa[width_man : 0] = {1'b1, dataa[width_man -1 : 0]}; - // Second operand for multiplication - mant_datab[width_man : 0] = {1'b1, datab[width_man -1 : 0]}; - // Multiply the mantissas using add and shift algorithm - for (i4 = 0; i4 <= width_man; i4 = i4 + 1) - begin - cout = 1'b0; - if ((mant_dataa[i4]) == 1'b1) - begin - add_bits(mant_datab, mant_result, cout); - end - mant_result = mant_result >> 1; - mant_result[2*width_man + 1] = cout; - end - sticky_bit = 1'b0; - mant_result_msb = mant_result[2*width_man + 1]; - // Normalize the Result - if (mant_result_msb == 1'b1) - begin - sticky_bit = mant_result[0]; // Needed for rounding operation. - mant_result = mant_result >> 1; - exp_result = exp_result + 1; - end - round_bit = mant_result[width_man - 1]; - guard_bit = mant_result[width_man]; - no_rounding = 1'b0; - // Check whether should perform rounding or not - if (round_bit == 1'b0) - begin - no_rounding = 1'b1; // No rounding is needed - end - else - begin - if (reduced_functionality == "NO") - begin - for(i4 = 0; i4 <= width_man - 2; i4 = i4 + 1) - begin - sticky_bit = sticky_bit | mant_result[i4]; - end - end - else - begin - sticky_bit = (mant_result[width_man - 2] & - mant_result_msb); - end - if ((sticky_bit == 1'b0) && (guard_bit == 1'b0)) - begin - no_rounding = 1'b1; - end - end - // Perform rounding - if (no_rounding == 1'b0) - begin - carry = 1'b1; - for(i4 = width_man; i4 <= 2 * width_man + 1; i4 = i4 + 1) - begin - if (carry == 1'b1) - begin - if (mant_result[i4] == 1'b0) - begin - mant_result[i4] = 1'b1; - carry = 1'b0; - end - else - begin - mant_result[i4] = 1'b0; - end - end - end - // If the mantissa of the result is 10.00.. after rounding, right shift the - // mantissa of the result by 1 bit and increase the exponent of the result by 1. - if (mant_result[(2 * width_man) + 1] == 1'b1) - begin - mant_result = mant_result >> 1; - exp_result = exp_result + 1; - end - end - // Normalize the Result - if ((!bit_all_0(mant_result, 0, (2 * width_man) + 1)) && - (mant_result[2 * width_man] == 1'b0)) - begin - while ((mant_result[2 * width_man] == 1'b0) && - (exp_result != 0)) - begin - mant_result = mant_result << 1; - exp_result = exp_result - 1; - end - end - else if ((exp_result < 0) && (exp_result >= -(2*width_man))) - begin - while(exp_result != 0) - begin - mant_result = mant_result >> 1; - exp_result = exp_result + 1; - end - end - // Set status flag "indefinite" if normal * denormal - // (ignore other status port since we dont care the output - if (den_dataa || den_datab) - begin - indefinite_bit = 1'b1; // Indefinite - end - else if (exp_result >= (exponential_value(2, width_exp) -1)) - begin - overflow_bit = 1'b1; // Overflow - end - else if (exp_result < 0) - begin - underflow_bit = 1'b1; // Underflow - zero_bit = 1'b1; // Zero - end - else if (exp_result == 0) - begin - underflow_bit = 1'b1; // Underflow - - if (bit_all_0(mant_result, width_man + 1, 2 * width_man)) - begin - zero_bit = 1'b1; // Zero - end - else - begin - denormal_bit = 1'b1; // Denormal - end - end - // Get result's mantissa - if (exp_result < 0) // Result underflow - begin - for(i4 = 0; i4 <= width_man - 1; i4 = i4 + 1) - begin - temp_result[i4] = 1'b0; - end - end - else if (exp_result == 0) // Denormalized result - begin - if (reduced_functionality == "NO") - begin - temp_result[width_man - 1 : 0] = mant_result[2 * width_man : width_man + 1]; - end - else - begin - temp_result[width_man - 1 : 0] = 0; - end - end - // Result overflow - else if (exp_result >= exponential_value(2, width_exp) -1) - begin - temp_result[width_man - 1 : 0] = {width_man{1'b0}}; - end - else // Normalized result - begin - temp_result[width_man - 1 : 0] = mant_result[(2 * width_man - 1) : width_man]; - end - // Get result's exponent - if (exp_result == 0) - begin - for(i4 = width_man; i4 <= WIDTH_MAN_EXP - 1; i4 = i4 + 1) - begin - temp_result[i4] = 1'b0; - end - end - else if (exp_result >= (exponential_value(2, width_exp) -1)) - begin - for(i4 = width_man; i4 <= WIDTH_MAN_EXP - 1; i4 = i4 + 1) - begin - temp_result[i4] = 1'b1; - end - end - else - begin - // Convert integer to binary bits - for(i4 = width_man; i4 <= WIDTH_MAN_EXP - 1; i4 = i4 + 1) - begin - if ((exp_result % 2) == 1) - begin - temp_result[i4] = 1'b1; - end - else - begin - temp_result[i4] = 1'b0; - end - exp_result = exp_result / 2; - end - end - end // end of if (no_multiply == 1'b0) - // Get result's sign bit - temp_result[WIDTH_MAN_EXP] = dataa[WIDTH_MAN_EXP] ^ datab[WIDTH_MAN_EXP]; - - end // MULTIPLY_FP - - // Pipelining registers. - always @(posedge clock or posedge aclr) - begin : PIPELINE_REGS - if (aclr == 1'b1) - begin - for (i5 = LATENCY; i5 >= 0; i5 = i5 - 1) - begin - result_pipe[i5] <= {WIDTH_MAN_EXP{1'b0}}; - overflow_pipe[i5] <= 1'b0; - underflow_pipe[i5] <= 1'b0; - zero_pipe[i5] <= 1'b1; - denormal_pipe[i5] <= 1'b0; - indefinite_pipe[i5] <= 1'b0; - nan_pipe[i5] <= 1'b0; - end - // clear all the output ports to 1'b0 - end - else if (clk_en == 1'b1) - begin - result_pipe[0] <= temp_result; - overflow_pipe[0] <= overflow_bit; - underflow_pipe[0] <= underflow_bit; - zero_pipe[0] <= zero_bit; - denormal_pipe[0] <= denormal_bit; - indefinite_pipe[0] <= indefinite_bit; - nan_pipe[0] <= nan_bit; - - // Create latency for the output result - for(i5=LATENCY; i5 >= 1; i5 = i5 - 1) - begin - result_pipe[i5] <= result_pipe[i5 - 1]; - overflow_pipe[i5] <= overflow_pipe[i5 - 1]; - underflow_pipe[i5] <= underflow_pipe[i5 - 1]; - zero_pipe[i5] <= zero_pipe[i5 - 1]; - denormal_pipe[i5] <= denormal_pipe[i5 - 1]; - indefinite_pipe[i5] <= indefinite_pipe[i5 - 1]; - nan_pipe[i5] <= nan_pipe[i5 - 1]; - end - end - end // PIPELINE_REGS - -assign result = result_pipe[LATENCY]; -assign overflow = overflow_pipe[LATENCY]; -assign underflow = underflow_pipe[LATENCY]; -assign zero = (reduced_functionality == "NO") ? zero_pipe[LATENCY] : 1'b0; -assign denormal = (reduced_functionality == "NO") ? denormal_pipe[LATENCY] : 1'b0; -assign indefinite = (reduced_functionality == "NO") ? indefinite_pipe[LATENCY] : 1'b0; -assign nan = nan_pipe[LATENCY]; - -endmodule //altfp_mult - -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------- -// -// Module Name : altsqrt -// -// Description : Parameterized integer square root megafunction. -// This module computes q[] and remainder so that -// q[]^2 + remainder[] == radical[] (remainder <= 2 * q[]) -// It can support the sequential mode(pipeline > 0) or -// combinational mode (pipeline = 0). -// -// Limitation : The radical is assumed to be unsigned integer. -// -// Results expected: Square root of the radical and the remainder. -// -//END_MODULE_NAME--------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -module altsqrt ( - radical, // Input port for the radical - clk, // Clock port - ena, // Clock enable port - aclr, // Asynchronous clear port - q, // Output port for returning the square root of the radical. - remainder // Output port for returning the remainder of the square root. -); - -// GLOBAL PARAMETER DECLARATION - parameter q_port_width = 1; // The width of the q port - parameter r_port_width = 1; // The width of the remainder port - parameter width = 1; // The width of the radical - parameter pipeline = 0; // The latency for the output - parameter lpm_hint= "UNUSED"; - parameter lpm_type = "altsqrt"; - -// INPUT PORT DECLARATION - input [width - 1 : 0] radical; - input clk; - input ena; - input aclr; - -// OUTPUT PORT DECLARATION - output [q_port_width - 1 : 0] q; - output [r_port_width - 1 : 0] remainder; - -// INTERNAL REGISTERS DECLARATION - reg[q_port_width - 1 : 0] q_temp; - reg[q_port_width - 1 : 0] q_pipeline[(pipeline +1) : 0]; - reg[r_port_width - 1 : 0] r_temp; - reg[r_port_width - 1 : 0] remainder_pipeline[(pipeline +1) : 0]; - -// INTERNAL TRI DECLARATION - tri1 clk; - tri1 ena; - tri0 aclr; - -// LOCAL INTEGER DECLARATION - integer value1; - integer value2; - integer index; - integer q_index; - integer q_value_temp; - integer r_value_temp; - integer i1; - integer pipe_ptr; - - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZE - // Check for illegal mode - if(width < 1) - begin - $display("width (%d) must be greater than 0.(ERROR)", width); - $finish; - end - pipe_ptr = 0; - end // INITIALIZE - -// ALWAYS CONSTRUCT BLOCK - - // Perform square root calculation. - // In general, below are the steps to calculate the square root and the - // remainder. - // - // Start of with q = 0 and remainder= 0 - // For every iteration, do the same thing: - // 1) Shift in the next 2 bits of the radical into the remainder - // Eg. if the radical is b"101100". For the first iteration, - // the remainder will be equal to b"10". - // 2) Compare it to the 4* q + 1 - // 3) if the remainder is greater than or equal to 4*q + 1 - // remainder = remainder - (4*q + 1) - // q = 2*q + 1 - // otherwise - // q = 2*q - always @(radical) - begin : SQUARE_ROOT - // Reset variables - value1 = 0; - value2 = 0; - q_index = (width - 1) / 2; - q_value_temp = 0; - r_value_temp = 0; - q_temp = {q_port_width{1'b0}}; - r_temp = {r_port_width{1'b0}}; - - // If the number of the bits of the radical is an odd number, - // Then for the first iteration, only the 1st bit will be shifted - // into the remainder. - // Eg. if the radical is b"11111", then the remainder is b"01". - if((width % 2) == 1) - begin - index = width + 1; - value1 = 0; - value2 = (radical[index - 2] === 1'b1) ? 1'b1 : 1'b0; - end - else if (width > 1) - begin - // Otherwise, for the first iteration, the first two bits will be shifted - // into the remainder. - // Eg. if the radical is b"101111", then the remainder is b"10". - index = width; - value1 = (radical[index - 1] === 1'b1) ? 1'b1 : 1'b0; - value2 = (radical[index - 2] === 1'b1) ? 1'b1 : 1'b0; - end - - // For every iteration - for(index = index - 2; index >= 0; index = index - 2) - begin - // Get the remainder value by shifting in the next 2 bits - // of the radical into the remainder - r_value_temp = (r_value_temp * 4) + (2 * value1) + value2; - - // if remainder >= (4*q + 1) - if (r_value_temp >= ((4 * q_value_temp) + 1)) - begin - // remainder = remainder - (4*q + 1) - r_value_temp = r_value_temp - (4 * q_value_temp) - 1; - // q = 2*q + 1 - q_value_temp = (2 * q_value_temp) + 1; - // set the q[q_index] = 1 - q_temp[q_index] = 1'b1; - end - else // if remainder < (4*q + 1) - begin - // q = 2*q - q_value_temp = 2 * q_value_temp; - // set the q[q_index] = 0 - q_temp[q_index] = 1'b0; - end - - // if not the last iteration, get the next 2 bits of the radical - if(index >= 2) - begin - value1 = (radical[index - 1] === 1'b1)? 1: 0; - value2 = (radical[index - 2] === 1'b1)? 1: 0; - end - - // Reduce the current index of q by 1 - q_index = q_index - 1; - - end - - // Get the binary bits of the remainder by converting integer to - // binary bits - r_temp = r_value_temp; - end - - // store the result to a pipeline(to create the latency) - always @(posedge clk or posedge aclr) - begin - if (aclr) // clear the pipeline for result to 0 - begin - for (i1 = 0; i1 < (pipeline + 1); i1 = i1 + 1) - begin - q_pipeline[i1] <= 0; - remainder_pipeline[i1] <= 0; - end - end - else if (ena == 1) - begin - remainder_pipeline[pipe_ptr] <= r_temp; - q_pipeline[pipe_ptr] <= q_temp; - - if (pipeline > 1) - pipe_ptr <= (pipe_ptr + 1) % pipeline; - end - end - -// CONTINOUS ASSIGNMENT - assign q = (pipeline > 0) ? q_pipeline[pipe_ptr] : q_temp; - assign remainder = (pipeline > 0) ? remainder_pipeline[pipe_ptr] : r_temp; - -endmodule //altsqrt -// END OF MODULE - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTCLKLOCK -// -// Description : Phase-Locked Loop (PLL) behavioral model. Supports basic -// PLL features such as multiplication and division of input -// clock frequency and phase shift. -// -// Limitations : Model supports NORMAL operation mode only. External -// feedback mode and zero-delay-buffer mode are not simulated. -// Applicable to APEX, Mercury and FLEX10KE device families -// only. -// -// Expected results : Up to 4 clock outputs (clock0, clock1, clock2, clock_ext). -// clock2 and clock_ext are for Mercury devices only. -// locked output indicates when PLL locks. -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altclklock ( - inclock, // input reference clock - inclocken, // PLL enable signal - fbin, // feedback input for the PLL - clock0, // output clock 0 - clock1, // output clock 1 - clock2, // output clock 2 (for Mercury only) - clock_ext, // external output clock (for Mercury only) - locked // PLL lock signal -); - -// GLOBAL PARAMETER DECLARATION -parameter inclock_period = 10000; // units in ps -parameter inclock_settings = "UNUSED"; -parameter valid_lock_cycles = 5; -parameter invalid_lock_cycles = 5; -parameter valid_lock_multiplier = 5; -parameter invalid_lock_multiplier = 5; -parameter operation_mode = "NORMAL"; -parameter clock0_boost = 1; -parameter clock0_divide = 1; -parameter clock0_settings = "UNUSED"; -parameter clock0_time_delay = "0"; -parameter clock1_boost = 1; -parameter clock1_divide = 1; -parameter clock1_settings = "UNUSED"; -parameter clock1_time_delay = "0"; -parameter clock2_boost = 1; -parameter clock2_divide = 1; -parameter clock2_settings = "UNUSED"; -parameter clock2_time_delay = "0"; -parameter clock_ext_boost = 1; -parameter clock_ext_divide = 1; -parameter clock_ext_settings = "UNUSED"; -parameter clock_ext_time_delay = "0"; -parameter outclock_phase_shift = 0; // units in ps -parameter intended_device_family = "APEX20KE"; -parameter lpm_type = "altclklock"; -parameter lpm_hint = "UNUSED"; - -// INPUT PORT DECLARATION -input inclock; -input inclocken; -input fbin; - -// OUTPUT PORT DECLARATION -output clock0; -output clock1; -output clock2; -output clock_ext; -output locked; - -// INTERNAL VARIABLE/REGISTER DECLARATION -reg clock0; -reg clock1; -reg clock2; -reg clock_ext; - -reg start_outclk; -reg clk0_tmp; -reg clk1_tmp; -reg clk2_tmp; -reg extclk_tmp; -reg pll_lock; -reg clk_last_value; -reg violation; -reg clk_check; -reg [1:0] next_clk_check; - -reg init; - -real pll_last_rising_edge; -real pll_last_falling_edge; -real actual_clk_cycle; -real expected_clk_cycle; -real pll_duty_cycle; -real inclk_period; -real expected_next_clk_edge; -integer pll_rising_edge_count; -integer stop_lock_count; -integer start_lock_count; -integer clk_per_tolerance; - -time clk0_phase_delay; -time clk1_phase_delay; -time clk2_phase_delay; -time extclk_phase_delay; - -ALTERA_DEVICE_FAMILIES dev (); - -// variables for clock synchronizing -time last_synchronizing_rising_edge_for_clk0; -time last_synchronizing_rising_edge_for_clk1; -time last_synchronizing_rising_edge_for_clk2; -time last_synchronizing_rising_edge_for_extclk; -time clk0_synchronizing_period; -time clk1_synchronizing_period; -time clk2_synchronizing_period; -time extclk_synchronizing_period; -integer input_cycles_per_clk0; -integer input_cycles_per_clk1; -integer input_cycles_per_clk2; -integer input_cycles_per_extclk; -integer clk0_cycles_per_sync_period; -integer clk1_cycles_per_sync_period; -integer clk2_cycles_per_sync_period; -integer extclk_cycles_per_sync_period; -integer input_cycle_count_to_sync0; -integer input_cycle_count_to_sync1; -integer input_cycle_count_to_sync2; -integer input_cycle_count_to_sync_extclk; - -// variables for shedule_clk0-2, clk_ext -reg schedule_clk0; -reg schedule_clk1; -reg schedule_clk2; -reg schedule_extclk; -reg output_value0; -reg output_value1; -reg output_value2; -reg output_value_ext; -time sched_time0; -time sched_time1; -time sched_time2; -time sched_time_ext; -integer rem0; -integer rem1; -integer rem2; -integer rem_ext; -integer tmp_rem0; -integer tmp_rem1; -integer tmp_rem2; -integer tmp_rem_ext; -integer clk_cnt0; -integer clk_cnt1; -integer clk_cnt2; -integer clk_cnt_ext; -integer cyc0; -integer cyc1; -integer cyc2; -integer cyc_ext; -integer inc0; -integer inc1; -integer inc2; -integer inc_ext; -integer cycle_to_adjust0; -integer cycle_to_adjust1; -integer cycle_to_adjust2; -integer cycle_to_adjust_ext; -time tmp_per0; -time tmp_per1; -time tmp_per2; -time tmp_per_ext; -time ori_per0; -time ori_per1; -time ori_per2; -time ori_per_ext; -time high_time0; -time high_time1; -time high_time2; -time high_time_ext; -time low_time0; -time low_time1; -time low_time2; -time low_time_ext; - -// Default inclocken and fbin ports to 1 if unused -tri1 inclocken_int; -tri1 fbin_int; - -assign inclocken_int = inclocken; -assign fbin_int = fbin; - -// -// function time_delay - converts time_delay in string format to integer, and -// add result to outclock_phase_shift -// -function time time_delay; -input [8*16:1] s; - -reg [8*16:1] reg_s; -reg [8:1] digit; -reg [8:1] tmp; -integer m; -integer outclock_phase_shift_adj; -integer sign; - -begin - // initialize variables - sign = 1; - outclock_phase_shift_adj = 0; - reg_s = s; - - for (m = 1; m <= 16; m = m + 1) - begin - tmp = reg_s[128:121]; - digit = tmp & 8'b00001111; - reg_s = reg_s << 8; - // Accumulate ascii digits 0-9 only. - if ((tmp >= 48) && (tmp <= 57)) - outclock_phase_shift_adj = outclock_phase_shift_adj * 10 + digit; - if (tmp == 45) - sign = -1; // Found a '-' character, i.e. number is negative. - end - - // add outclock_phase_shift to time delay - outclock_phase_shift_adj = (sign*outclock_phase_shift_adj) + outclock_phase_shift; - - // adjust phase shift so that its value is between 0 and 1 full - // inclock_period - while (outclock_phase_shift_adj < 0) - outclock_phase_shift_adj = outclock_phase_shift_adj + inclock_period; - while (outclock_phase_shift_adj >= inclock_period) - outclock_phase_shift_adj = outclock_phase_shift_adj - inclock_period; - - // assign result - time_delay = outclock_phase_shift_adj; -end -endfunction - -// INITIAL BLOCK -initial -begin - - // check for invalid parameters - if (inclock_period <= 0) - begin - $display("ERROR: The period of the input clock (inclock_period) must be greater than 0"); - $stop; - end - - if ((clock0_boost <= 0) || (clock0_divide <= 0) - || (clock1_boost <= 0) || (clock1_divide <= 0) - || (clock2_boost <= 0) || (clock2_divide <= 0) - || (clock_ext_boost <= 0) || (clock_ext_divide <= 0)) - begin - if ((clock0_boost <= 0) || (clock0_divide <= 0)) - begin - $display("ERROR: The multiplication and division factors for clock0 must be greater than 0."); - end - - if ((clock1_boost <= 0) || (clock1_divide <= 0)) - begin - $display("ERROR: The multiplication and division factors for clock1 must be greater than 0."); - end - - if ((clock2_boost <= 0) || (clock2_divide <= 0)) - begin - $display("ERROR: The multiplication and division factors for clock2 must be greater than 0."); - end - - if ((clock_ext_boost <= 0) || (clock_ext_divide <= 0)) - begin - $display("ERROR: The multiplication and division factors for clock_ext must be greater than 0."); - end - $stop; - end - - if ((!dev.IS_FAMILY_FLEX10KE(intended_device_family)) - && (!dev.IS_FAMILY_ACEX1K(intended_device_family)) - && (!dev.IS_FAMILY_APEX20K(intended_device_family)) - && (!dev.IS_FAMILY_APEX20KE(intended_device_family)) - && (!dev.IS_FAMILY_APEX20KC(intended_device_family)) - && (!dev.IS_FAMILY_EXCALIBUR_ARM(intended_device_family)) - && (!dev.IS_FAMILY_APEXII(intended_device_family)) - && (!dev.IS_FAMILY_MERCURY(intended_device_family))) - begin - $display("WARNING: Device family specified by the intended_device_family parameter, %s, may not be supported by altclklock", intended_device_family); - end - - stop_lock_count = 0; - violation = 0; - - // clock synchronizing variables - last_synchronizing_rising_edge_for_clk0 = 0; - last_synchronizing_rising_edge_for_clk1 = 0; - last_synchronizing_rising_edge_for_clk2 = 0; - last_synchronizing_rising_edge_for_extclk = 0; - clk0_synchronizing_period = 0; - clk1_synchronizing_period = 0; - clk2_synchronizing_period = 0; - extclk_synchronizing_period = 0; - input_cycles_per_clk0 = clock0_divide; - input_cycles_per_clk1 = clock1_divide; - input_cycles_per_clk2 = clock2_divide; - input_cycles_per_extclk = clock_ext_divide; - clk0_cycles_per_sync_period = clock0_boost; - clk1_cycles_per_sync_period = clock1_boost; - clk2_cycles_per_sync_period = clock2_boost; - extclk_cycles_per_sync_period = clock_ext_boost; - input_cycle_count_to_sync0 = 0; - input_cycle_count_to_sync1 = 0; - input_cycle_count_to_sync2 = 0; - input_cycle_count_to_sync_extclk = 0; - inc0 = 1; - inc1 = 1; - inc2 = 1; - inc_ext = 1; - cycle_to_adjust0 = 0; - cycle_to_adjust1 = 0; - cycle_to_adjust2 = 0; - cycle_to_adjust_ext = 0; - - if ((clock0_boost % clock0_divide) == 0) - begin - clk0_cycles_per_sync_period = clock0_boost / clock0_divide; - input_cycles_per_clk0 = 1; - end - - if ((clock1_boost % clock1_divide) == 0) - begin - clk1_cycles_per_sync_period = clock1_boost / clock1_divide; - input_cycles_per_clk1 = 1; - end - - if ((clock2_boost % clock2_divide) == 0) - begin - clk2_cycles_per_sync_period = clock2_boost / clock2_divide; - input_cycles_per_clk2 = 1; - end - - if ((clock_ext_boost % clock_ext_divide) == 0) - begin - extclk_cycles_per_sync_period = clock_ext_boost / clock_ext_divide; - input_cycles_per_extclk = 1; - end - - // convert time delays from string to integer - clk0_phase_delay = time_delay(clock0_time_delay); - clk1_phase_delay = time_delay(clock1_time_delay); - clk2_phase_delay = time_delay(clock2_time_delay); - extclk_phase_delay = time_delay(clock_ext_time_delay); - - // 2.5% tolerance of input clock period variation - if(dev.IS_FAMILY_MERCURY(intended_device_family)) - clk_per_tolerance = 0.025 * inclock_period; - else - clk_per_tolerance = 0.1 * inclock_period; -end - -always @(next_clk_check) -begin - if (next_clk_check == 1) - begin - if ((clk_check === 1'b1) || (clk_check === 1'b0)) - #((inclk_period+clk_per_tolerance)/2) clk_check = ~clk_check; - else - #((inclk_period+clk_per_tolerance)/2) clk_check = 1'b1; - end - else if (next_clk_check == 2) - begin - if ((clk_check === 1'b1) || (clk_check === 1'b0)) - #(expected_next_clk_edge - $realtime) clk_check = ~clk_check; - else - #(expected_next_clk_edge - $realtime) clk_check = 1'b1; - end - next_clk_check = 0; -end - -always @(inclock or inclocken_int or clk_check) -begin - - if(init !== 1'b1) - begin - start_lock_count = 0; - pll_rising_edge_count = 0; - pll_last_rising_edge = 0; - pll_last_falling_edge = 0; - pll_lock = 0; - init = 1'b1; - end - - if (inclocken_int == 1'b0) - begin - pll_lock = 0; - pll_rising_edge_count = 0; - end - else if ((inclock == 1'b1) && (clk_last_value !== inclock)) - begin - if (pll_lock === 1) - next_clk_check = 1; - - if (pll_rising_edge_count == 0) // this is first rising edge - begin - inclk_period = inclock_period; - pll_duty_cycle = inclk_period/2; - start_outclk = 0; - end - else if (pll_rising_edge_count == 1) // this is second rising edge - begin - expected_clk_cycle = inclk_period; - actual_clk_cycle = $realtime - pll_last_rising_edge; - if (actual_clk_cycle < (expected_clk_cycle - clk_per_tolerance) || - actual_clk_cycle > (expected_clk_cycle + clk_per_tolerance)) - begin - $display($realtime, "ps Warning: Inclock_Period Violation"); - violation = 1; - if (locked == 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - if ((locked == 1'b1) && (stop_lock_count == invalid_lock_cycles)) - begin - pll_lock = 0; - $display ($realtime, "ps Warning: altclklock out of lock."); - - if(dev.IS_FAMILY_APEX20KE(intended_device_family) || dev.IS_FAMILY_APEX20KC(intended_device_family) || dev.IS_FAMILY_EXCALIBUR_ARM(intended_device_family)) - start_lock_count = 0; - else - start_lock_count = 1; - - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - clk2_tmp = 1'bx; - extclk_tmp = 1'bx; - end - end - else begin - start_lock_count = 1; - end - end - else - begin - if (($realtime - pll_last_falling_edge) < (pll_duty_cycle - clk_per_tolerance/2) || - ($realtime - pll_last_falling_edge) > (pll_duty_cycle + clk_per_tolerance/2)) - begin - $display($realtime, "ps Warning: Duty Cycle Violation"); - violation = 1; - end - else - violation = 0; - end - end - else if (($realtime - pll_last_rising_edge) < (expected_clk_cycle - clk_per_tolerance) || - ($realtime - pll_last_rising_edge) > (expected_clk_cycle + clk_per_tolerance)) - begin - $display($realtime, "ps Warning: Cycle Violation"); - violation = 1; - if (locked == 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - if (stop_lock_count == invalid_lock_cycles) - begin - pll_lock = 0; - $display ($realtime, "ps Warning: altclklock out of lock."); - - if(dev.IS_FAMILY_APEX20KE(intended_device_family) || dev.IS_FAMILY_APEX20KC(intended_device_family) || dev.IS_FAMILY_EXCALIBUR_ARM(intended_device_family)) - start_lock_count = 0; - else - start_lock_count = 1; - - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - clk2_tmp = 1'bx; - extclk_tmp = 1'bx; - end - end - else - begin - start_lock_count = 1; - end - end - else - begin - violation = 0; - actual_clk_cycle = $realtime - pll_last_rising_edge; - end - pll_last_rising_edge = $realtime; - pll_rising_edge_count = pll_rising_edge_count + 1; - if (!violation) - begin - if (pll_lock == 1'b1) - begin - input_cycle_count_to_sync0 = input_cycle_count_to_sync0 + 1; - if (input_cycle_count_to_sync0 == input_cycles_per_clk0) - begin - clk0_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk0; - last_synchronizing_rising_edge_for_clk0 = $realtime; - schedule_clk0 = 1; - input_cycle_count_to_sync0 = 0; - end - input_cycle_count_to_sync1 = input_cycle_count_to_sync1 + 1; - if (input_cycle_count_to_sync1 == input_cycles_per_clk1) - begin - clk1_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk1; - last_synchronizing_rising_edge_for_clk1 = $realtime; - schedule_clk1 = 1; - input_cycle_count_to_sync1 = 0; - end - input_cycle_count_to_sync2 = input_cycle_count_to_sync2 + 1; - if (input_cycle_count_to_sync2 == input_cycles_per_clk2) - begin - clk2_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk2; - last_synchronizing_rising_edge_for_clk2 = $realtime; - schedule_clk2 = 1; - input_cycle_count_to_sync2 = 0; - end - input_cycle_count_to_sync_extclk = input_cycle_count_to_sync_extclk + 1; - if (input_cycle_count_to_sync_extclk == input_cycles_per_extclk) - begin - extclk_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_extclk; - last_synchronizing_rising_edge_for_extclk = $realtime; - schedule_extclk = 1; - input_cycle_count_to_sync_extclk = 0; - end - end - else - begin - if (!dev.IS_FAMILY_APEXII(intended_device_family) || (pll_rising_edge_count-1 > 0)) - begin - start_lock_count = start_lock_count + 1; - if (start_lock_count >= valid_lock_cycles) - begin - pll_lock = 1; - input_cycle_count_to_sync0 = 0; - input_cycle_count_to_sync1 = 0; - input_cycle_count_to_sync2 = 0; - input_cycle_count_to_sync_extclk = 0; - clk0_synchronizing_period = actual_clk_cycle * input_cycles_per_clk0; - clk1_synchronizing_period = actual_clk_cycle * input_cycles_per_clk1; - clk2_synchronizing_period = actual_clk_cycle * input_cycles_per_clk2; - extclk_synchronizing_period = actual_clk_cycle * input_cycles_per_extclk; - last_synchronizing_rising_edge_for_clk0 = $realtime; - last_synchronizing_rising_edge_for_clk1 = $realtime; - last_synchronizing_rising_edge_for_clk2 = $realtime; - last_synchronizing_rising_edge_for_extclk = $realtime; - schedule_clk0 = 1; - schedule_clk1 = 1; - schedule_clk2 = 1; - schedule_extclk = 1; - end - end - end - end - else - if(dev.IS_FAMILY_APEXII(intended_device_family)) - start_lock_count = 0; - else - start_lock_count = 1; - end - else if ((inclock == 1'b0) && (clk_last_value !== inclock)) - begin - if (pll_lock == 1) - begin - next_clk_check = 1; - if (($realtime - pll_last_rising_edge) < (pll_duty_cycle - clk_per_tolerance/2) || - ($realtime - pll_last_rising_edge) > (pll_duty_cycle + clk_per_tolerance/2)) - begin - $display($realtime, "ps Warning: Duty Cycle Violation"); - violation = 1; - if (locked == 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - if (stop_lock_count == invalid_lock_cycles) - begin - pll_lock = 0; - $display ($realtime, "ps Warning: altclklock out of lock."); - - if(dev.IS_FAMILY_APEX20KE(intended_device_family) || dev.IS_FAMILY_APEX20KC(intended_device_family) || dev.IS_FAMILY_EXCALIBUR_ARM(intended_device_family)) - start_lock_count = 0; - else - start_lock_count = 1; - - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - clk2_tmp = 1'bx; - extclk_tmp = 1'bx; - end - end - end - else - violation = 0; - end - else if (!dev.IS_FAMILY_APEXII(intended_device_family) || (pll_rising_edge_count > 0)) - start_lock_count = start_lock_count + 1; - pll_last_falling_edge = $realtime; - end - else if (pll_lock == 1) - begin - if (inclock == 1'b1) - expected_next_clk_edge = pll_last_rising_edge + (inclk_period+clk_per_tolerance)/2; - else if (inclock == 'b0) - expected_next_clk_edge = pll_last_falling_edge + (inclk_period+clk_per_tolerance)/2; - else - expected_next_clk_edge = 0; - violation = 0; - if ($realtime < expected_next_clk_edge) - next_clk_check = 2; - else if ($realtime == expected_next_clk_edge) - next_clk_check = 1; - else - begin - $display($realtime, "ps Warning: Inclock_Period Violation"); - violation = 1; - - if (locked == 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - expected_next_clk_edge = $realtime + (inclk_period/2); - if (stop_lock_count == invalid_lock_cycles) - begin - pll_lock = 0; - $display ($realtime, "ps Warning: altclklock out of lock."); - - if(dev.IS_FAMILY_APEX20KE(intended_device_family) || dev.IS_FAMILY_APEX20KC(intended_device_family) || dev.IS_FAMILY_EXCALIBUR_ARM(intended_device_family)) - start_lock_count = 0; - else - start_lock_count = 1; - - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - clk2_tmp = 1'bx; - extclk_tmp = 1'bx; - end - else - next_clk_check = 2; - end - end - end - clk_last_value = inclock; -end - -// clock0 output -always @(posedge schedule_clk0) -begin - // initialise variables - inc0 = 1; - cycle_to_adjust0 = 0; - output_value0 = 1'b1; - sched_time0 = 0; - rem0 = clk0_synchronizing_period % clk0_cycles_per_sync_period; - ori_per0 = clk0_synchronizing_period / clk0_cycles_per_sync_period; - - // schedule number of clock0 cycles in this - // loop - in order to synchronize the output clock always to the input clock - // to get rid of clock drift for cases where the input clock period is - // not evenly divisible - for (clk_cnt0 = 1; clk_cnt0 <= clk0_cycles_per_sync_period; - clk_cnt0 = clk_cnt0 + 1) - begin - tmp_per0 = ori_per0; - if ((rem0 != 0) && (inc0 <= rem0)) - begin - tmp_rem0 = (clk0_cycles_per_sync_period * inc0) % rem0; - cycle_to_adjust0 = (clk0_cycles_per_sync_period * inc0) / rem0; - if (tmp_rem0 != 0) - cycle_to_adjust0 = cycle_to_adjust0 + 1; - end - - // if this cycle is the one to adjust the output clock period, then - // increment the period by 1 unit - if (cycle_to_adjust0 == clk_cnt0) - begin - tmp_per0 = tmp_per0 + 1; - inc0 = inc0 + 1; - end - - // adjust the high and low cycle period - high_time0 = tmp_per0 / 2; - if ((tmp_per0 % 2) != 0) - high_time0 = high_time0 + 1; - - low_time0 = tmp_per0 - high_time0; - - // schedule the high and low cycle of 1 output clock period - for (cyc0 = 0; cyc0 <= 1; cyc0 = cyc0 + 1) - begin - // Avoid glitch in vcs when high_time0 and low_time0 is 0 - // (due to clk0_synchronizing_period is 0) - if (clk0_synchronizing_period != 0) - clk0_tmp = #(sched_time0) output_value0; - else - clk0_tmp = #(sched_time0) 1'b0; - output_value0 = ~output_value0; - if (output_value0 == 1'b0) - begin - sched_time0 = high_time0; - end - else if (output_value0 == 1'b1) - begin - sched_time0 = low_time0; - end - end - end - - // drop the schedule_clk0 to 0 so that the "always@(inclock)" block can - // trigger this block again when the correct time comes - schedule_clk0 = #1 1'b0; -end - -always @(clk0_tmp) -begin - if (clk0_phase_delay == 0) - clock0 <= clk0_tmp; - else - clock0 <= #(clk0_phase_delay) clk0_tmp; -end - -// clock1 output -always @(posedge schedule_clk1) -begin - // initialize variables - inc1 = 1; - cycle_to_adjust1 = 0; - output_value1 = 1'b1; - sched_time1 = 0; - rem1 = clk1_synchronizing_period % clk1_cycles_per_sync_period; - ori_per1 = clk1_synchronizing_period / clk1_cycles_per_sync_period; - - // schedule number of clock1 cycles in this - // loop - in order to synchronize the output clock always to the input clock, - // to get rid of clock drift for cases where the input clock period is - // not evenly divisible - for (clk_cnt1 = 1; clk_cnt1 <= clk1_cycles_per_sync_period; - clk_cnt1 = clk_cnt1 + 1) - begin - tmp_per1 = ori_per1; - if ((rem1 != 0) && (inc1 <= rem1)) - begin - tmp_rem1 = (clk1_cycles_per_sync_period * inc1) % rem1; - cycle_to_adjust1 = (clk1_cycles_per_sync_period * inc1) / rem1; - if (tmp_rem1 != 0) - cycle_to_adjust1 = cycle_to_adjust1 + 1; - end - - // if this cycle is the one to adjust the output clock period, then - // increment the period by 1 unit - if (cycle_to_adjust1 == clk_cnt1) - begin - tmp_per1 = tmp_per1 + 1; - inc1 = inc1 + 1; - end - - // adjust the high and low cycle period - high_time1 = tmp_per1 / 2; - if ((tmp_per1 % 2) != 0) - high_time1 = high_time1 + 1; - - low_time1 = tmp_per1 - high_time1; - - // schedule the high and low cycle of 1 output clock period - for (cyc1 = 0; cyc1 <= 1; cyc1 = cyc1 + 1) - begin - // Avoid glitch in vcs when high_time1 and low_time1 is 0 - // (due to clk1_synchronizing_period is 0) - if (clk1_synchronizing_period != 0) - clk1_tmp = #(sched_time1) output_value1; - else - clk1_tmp = #(sched_time1) 1'b0; - output_value1 = ~output_value1; - if (output_value1 == 1'b0) - sched_time1 = high_time1; - else if (output_value1 == 1'b1) - sched_time1 = low_time1; - end - end - // drop the schedule_clk1 to 0 so that the "always@(inclock)" block can - // trigger this block again when the correct time comes - schedule_clk1 = #1 1'b0; -end - -always @(clk1_tmp) -begin - if (clk1_phase_delay == 0) - clock1 <= clk1_tmp; - else - clock1 <= #(clk1_phase_delay) clk1_tmp; -end - -// clock2 output -always @(posedge schedule_clk2) -begin - // clock2 is only available for Mercury - if (dev.IS_FAMILY_MERCURY(intended_device_family)) - begin - // initialize variables - inc2 = 1; - cycle_to_adjust2 = 0; - output_value2 = 1'b1; - sched_time2 = 0; - rem2 = clk2_synchronizing_period % clk2_cycles_per_sync_period; - ori_per2 = clk2_synchronizing_period / clk2_cycles_per_sync_period; - - // schedule number of clock2 cycles in this - // loop - in order to synchronize the output clock always to the input clock, - // to get rid of clock drift for cases where the input clock period is - // not evenly divisible - for (clk_cnt2 = 1; clk_cnt2 <= clk2_cycles_per_sync_period; - clk_cnt2 = clk_cnt2 + 1) - begin - tmp_per2 = ori_per2; - if ((rem2 != 0) && (inc2 <= rem2)) - begin - tmp_rem2 = (clk2_cycles_per_sync_period * inc2) % rem2; - cycle_to_adjust2 = (clk2_cycles_per_sync_period * inc2) / rem2; - if (tmp_rem2 != 0) - cycle_to_adjust2 = cycle_to_adjust2 + 1; - end - - // if this cycle is the one to adjust the output clock period, then - // increment the period by 1 unit - if (cycle_to_adjust2 == clk_cnt2) - begin - tmp_per2 = tmp_per2 + 1; - inc2 = inc2 + 1; - end - - // adjust the high and low cycle period - high_time2 = tmp_per2 / 2; - if ((tmp_per2 % 2) != 0) - high_time2 = high_time2 + 1; - - low_time2 = tmp_per2 - high_time2; - - // schedule the high and low cycle of 1 output clock period - for (cyc2 = 0; cyc2 <= 1; cyc2 = cyc2 + 1) - begin - // Avoid glitch in vcs when high_time2 and low_time2 is 0 - // (due to clk2_synchronizing_period is 0) - if (clk2_synchronizing_period != 0) - clk2_tmp = #(sched_time2) output_value2; - else - clk2_tmp = #(sched_time2) 1'b0; - output_value2 = ~output_value2; - if (output_value2 == 1'b0) - sched_time2 = high_time2; - else if (output_value2 == 1'b1) - sched_time2 = low_time2; - end - end - // drop the schedule_clk2 to 0 so that the "always@(inclock)" block can - // trigger this block again when the correct time comes - schedule_clk2 = #1 1'b0; - end -end - -always @(clk2_tmp) -begin - if (clk2_phase_delay == 0) - clock2 <= clk2_tmp; - else - clock2 <= #(clk2_phase_delay) clk2_tmp; -end - -// clock_ext output -always @(posedge schedule_extclk) -begin - // clock_ext is only available for Mercury - if (dev.IS_FAMILY_MERCURY(intended_device_family)) - begin - // initialize variables - inc_ext = 1; - cycle_to_adjust_ext = 0; - output_value_ext = 1'b1; - sched_time_ext = 0; - rem_ext = extclk_synchronizing_period % extclk_cycles_per_sync_period; - ori_per_ext = extclk_synchronizing_period/extclk_cycles_per_sync_period; - - // schedule number of clock_ext cycles in this - // loop - in order to synchronize the output clock always to the input clock, - // to get rid of clock drift for cases where the input clock period is - // not evenly divisible - for (clk_cnt_ext = 1; clk_cnt_ext <= extclk_cycles_per_sync_period; - clk_cnt_ext = clk_cnt_ext + 1) - begin - tmp_per_ext = ori_per_ext; - if ((rem_ext != 0) && (inc_ext <= rem_ext)) - begin - tmp_rem_ext = (extclk_cycles_per_sync_period * inc_ext) % rem_ext; - cycle_to_adjust_ext = (extclk_cycles_per_sync_period * inc_ext) / rem_ext; - if (tmp_rem_ext != 0) - cycle_to_adjust_ext = cycle_to_adjust_ext + 1; - end - - // if this cycle is the one to adjust the output clock period, then - // increment the period by 1 unit - if (cycle_to_adjust_ext == clk_cnt_ext) - begin - tmp_per_ext = tmp_per_ext + 1; - inc_ext = inc_ext + 1; - end - - // adjust the high and low cycle period - high_time_ext = tmp_per_ext/2; - if ((tmp_per_ext % 2) != 0) - high_time_ext = high_time_ext + 1; - - low_time_ext = tmp_per_ext - high_time_ext; - - // schedule the high and low cycle of 1 output clock period - for (cyc_ext = 0; cyc_ext <= 1; cyc_ext = cyc_ext + 1) - begin - // Avoid glitch in vcs when high_time_ext and low_time_ext is 0 - // (due to extclk_synchronizing_period is 0) - if (extclk_synchronizing_period != 0) - extclk_tmp = #(sched_time_ext) output_value_ext; - else - extclk_tmp = #(sched_time_ext) 1'b0; - output_value_ext = ~output_value_ext; - if (output_value_ext == 1'b0) - sched_time_ext = high_time_ext; - else if (output_value_ext == 1'b1) - sched_time_ext = low_time_ext; - end - end - // drop the schedule_extclk to 0 so that the "always@(inclock)" block - // can trigger this block again when the correct time comes - schedule_extclk = #1 1'b0; - end -end - -always @(extclk_tmp) -begin - if (extclk_phase_delay == 0) - clock_ext <= extclk_tmp; - else - clock_ext <= #(extclk_phase_delay) extclk_tmp; -end - -// ACCELERATE OUTPUTS -buf (locked, pll_lock); - -endmodule // altclklock -// END OF MODULE ALTCLKLOCK - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTDDIO_IN -// -// Description : Double Data Rate (DDR) input behavioural model. Receives -// data on both edges of the reference clock. -// -// Limitations : Not available for FLEX, MAX, APEX20K and APEX20KE device -// families. -// -// Expected results : Data sampled from the datain port at the rising edge of -// the reference clock (dataout_h) and at the falling edge of -// the reference clock (dataout_l). -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altddio_in ( - datain, // required port, DDR input data - inclock, // required port, input reference clock to sample data by - inclocken, // enable data clock - aset, // asynchronous set - aclr, // asynchronous clear - dataout_h, // data sampled at the rising edge of inclock - dataout_l // data sampled at the falling edge of inclock -); - -// GLOBAL PARAMETER DECLARATION -parameter width = 1; // required parameter -parameter power_up_high = "OFF"; -parameter invert_input_clocks = "OFF"; -parameter intended_device_family = "MERCURY"; -parameter lpm_type = "altddio_in"; -parameter lpm_hint = "UNUSED"; - -// INPUT PORT DECLARATION -input [width-1:0] datain; -input inclock; -input inclocken; -input aset; -input aclr; - -// OUTPUT PORT DECLARATION -output [width-1:0] dataout_h; -output [width-1:0] dataout_l; - -// REGISTER AND VARIABLE DECLARATION -reg [width-1:0] dataout_h_tmp; -reg [width-1:0] dataout_l_tmp; -reg [width-1:0] datain_latched; - -ALTERA_DEVICE_FAMILIES dev (); - -// pulldown/pullup -tri0 aset; // default aset to 0 -tri0 aclr; // default aclr to 0 -tri1 inclocken; // default inclocken to 1 - -// INITIAL BLOCK -initial -begin - - // Begin of parameter checking - if (width <= 0) - begin - $display("ERROR: The width parameter must be greater than 0"); - $stop; - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $stop; - end - - if (!(dev.IS_FAMILY_MERCURY(intended_device_family) || - dev.IS_FAMILY_APEXII(intended_device_family) || - dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family) || - dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_HARDCOPYSTRATIX(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family))) - begin - $display("ERROR: Megafunction altddio_out is not supported in %s.", intended_device_family); - $stop; - end - // End of parameter checking - - // if power_up_high parameter is turned on, registers power up - // to '1', otherwise '0' - dataout_h_tmp = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; - dataout_l_tmp = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; - datain_latched = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; -end - -// input reference clock, sample data -always @ (posedge inclock or posedge aclr or posedge aset) -begin - if (aclr) - begin - dataout_h_tmp <= {width{1'b0}}; - dataout_l_tmp <= {width{1'b0}}; - end - else if (aset) - begin - dataout_h_tmp <= {width{1'b1}}; - dataout_l_tmp <= {width{1'b1}}; - end - // if not being set or cleared - else if (inclocken == 1'b1) - begin - if (invert_input_clocks == "ON") - datain_latched <= datain; - else - begin - dataout_h_tmp <= datain; - dataout_l_tmp <= datain_latched; - end - end -end - -always @ (negedge inclock or posedge aclr or posedge aset) -begin - if (aclr) - begin - datain_latched <= {width{1'b0}}; - end - else if (aset) - begin - datain_latched <= {width{1'b1}}; - end - // if not being set or cleared - else - begin - if (dev.IS_FAMILY_APEXII(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family) || - dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_HARDCOPYSTRATIX(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) - begin - if (inclocken == 1'b1) - if (invert_input_clocks == "ON") - begin - dataout_h_tmp <= datain; - dataout_l_tmp <= datain_latched; - end - else - datain_latched <= datain; - - end - else if (dev.IS_FAMILY_MERCURY(intended_device_family)) - begin - if (invert_input_clocks == "ON") - begin - dataout_h_tmp <= datain; - dataout_l_tmp <= datain_latched; - end - else - datain_latched <= datain; - end - else - begin - if (invert_input_clocks == "ON") - begin - dataout_h_tmp <= datain; - dataout_l_tmp <= datain_latched; - end - else - datain_latched <= datain; - end - end -end - -// assign registers to output ports -assign dataout_l = dataout_l_tmp; -assign dataout_h = dataout_h_tmp; - -endmodule // altddio_in -// END MODULE ALTDDIO_IN - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTDDIO_OUT -// -// Description : Double Data Rate (DDR) output behavioural model. -// Transmits data on both edges of the reference clock. -// -// Limitations : Not available for FLEX, MAX, APEX20K and APEX20KE device -// families. -// -// Expected results : Double data rate output on dataout. -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altddio_out ( - datain_h, // required port, data input for the rising edge of outclock - datain_l, // required port, data input for the falling edge of outclock - outclock, // required port, input reference clock to output data by - outclocken, // clock enable signal for outclock - aset, // asynchronous set - aclr, // asynchronous clear - oe, // output enable for dataout - dataout // DDR data output -); - -// GLOBAL PARAMETER DECLARATION -parameter width = 1; // required parameter -parameter power_up_high = "OFF"; -parameter oe_reg = "UNUSED"; -parameter extend_oe_disable = "UNUSED"; -parameter intended_device_family = "MERCURY"; -parameter invert_output = "OFF"; -parameter lpm_type = "altddio_out"; -parameter lpm_hint = "UNUSED"; - -// INPUT PORT DECLARATION -input [width-1:0] datain_h; -input [width-1:0] datain_l; -input outclock; -input outclocken; -input aset; -input aclr; -input oe; - -// OUTPUT PORT DECLARATION -output [width-1:0] dataout; - -// REGISTER, NET AND VARIABLE DECLARATION -wire apexii_oe; -wire output_enable; -reg oe_rgd; -reg oe_reg_ext; -reg [width-1:0] dataout; -reg [width-1:0] dataout_h; -reg [width-1:0] dataout_l; -reg [width-1:0] dataout_tmp; - -ALTERA_DEVICE_FAMILIES dev (); - -// pulldown/pullup -tri0 aset; // default aset to 0 -tri0 aclr; // default aclr to 0 -tri1 outclocken; // default outclocken to 1 -tri1 oe; // default oe to 1 - -// INITIAL BLOCK -initial -begin - // Begin of parameter checking - if (width <= 0) - begin - $display("ERROR: The width parameter must be greater than 0"); - $stop; - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $stop; - end - - if (!(dev.IS_FAMILY_MERCURY(intended_device_family) || - dev.IS_FAMILY_APEXII(intended_device_family) || - dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family) || - dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_HARDCOPYSTRATIX(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family))) - begin - $display("ERROR: Megafunction altddio_out is not supported in %s.", intended_device_family); - $stop; - end - // End of parameter checking - - // if power_up_high parameter is turned on, registers power up to '1' - // else to '0' - dataout_h = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; - dataout_l = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; - dataout_tmp = (power_up_high == "ON") ? {width{1'b1}} : {width{1'b0}}; - - if (power_up_high == "ON") - begin - oe_rgd = 1'b1; - oe_reg_ext = 1'b1; - end - else - begin - oe_rgd = 1'b0; - oe_reg_ext = 1'b0; - end -end - - -// input reference clock -always @ (posedge outclock or posedge aclr or posedge aset) -begin - if (aclr) - begin - dataout_h <= {width{1'b0}}; - dataout_l <= {width{1'b0}}; - dataout_tmp <= {width{1'b0}}; - - oe_rgd <= 1'b0; - end - else if (aset) - begin - dataout_h <= {width{1'b1}}; - dataout_l <= {width{1'b1}}; - dataout_tmp <= {width{1'b1}}; - - oe_rgd <= 1'b1; - end - // if clock is enabled - else if (outclocken == 1'b1) - begin - dataout_h <= datain_h; - dataout_l <= datain_l; - dataout_tmp <= datain_h; - - // register the output enable signal - oe_rgd <= oe; - end - else - dataout_tmp <= dataout_h; - -end - -// input reference clock -always @ (negedge outclock or posedge aclr or posedge aset) -begin - if (aclr) - begin - oe_reg_ext <= 1'b0; - end - else if (aset) - begin - oe_reg_ext <= 1'b1; - end - // if not being set or cleared - else - begin - // if clock is enabled - if (outclocken == 1'b1) - begin - // additional register for output enable signal - oe_reg_ext <= oe_rgd; - end - - dataout_tmp <= dataout_l; - end -end - -// data output -always @(dataout_tmp or output_enable) -begin - // if output is enabled - if (output_enable == 1'b1) - begin - if (dev.FEATURE_FAMILY_HAS_INVERTED_OUTPUT_DDIO(intended_device_family) && - (invert_output == "ON")) - dataout = ~dataout_tmp; - else - dataout = dataout_tmp; - end - else // output is disabled - dataout = {width{1'bZ}}; -end - -// output enable signal -// Mercury does not support extend_oe_disable and oe_reg parameters -assign output_enable = (dev.IS_FAMILY_APEXII(intended_device_family) || - dev.IS_FAMILY_STRATIX(intended_device_family)|| - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family) || - dev.FEATURE_FAMILY_STRATIXII(intended_device_family) || - dev.IS_FAMILY_HARDCOPYSTRATIX(intended_device_family) || - dev.IS_FAMILY_CYCLONEII(intended_device_family)) - ? apexii_oe - : oe; - -assign apexii_oe = (extend_oe_disable == "ON") - ? (oe_reg_ext & oe_rgd) - : ((oe_reg == "REGISTERED") && (extend_oe_disable != "ON")) - ? oe_rgd - : oe; - -endmodule // altddio_out -// END MODULE ALTDDIO_OUT - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTDDIO_BIDIR -// -// Description : Double Data Rate (DDR) bi-directional behavioural model. -// Transmits and receives data on both edges of the reference -// clock. -// -// Limitations : Not available for FLEX, MAX, APEX20K and APEX20KE device -// families. -// -// Expected results : Data output sampled from padio port on rising edge of -// inclock signal (dataout_h) and falling edge of inclock -// signal (dataout_l). Combinatorial output fed by padio -// directly (combout). -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altddio_bidir ( - datain_h, // required port, input data to be output of padio port at the - // rising edge of outclock - datain_l, // required port, input data to be output of padio port at the - // falling edge of outclock - inclock, // required port, input reference clock to sample data by - inclocken, // inclock enable - outclock, // required port, input reference clock to register data output - outclocken, // outclock enable - aset, // asynchronour set - aclr, // asynchronous clear - oe, // output enable for padio port - dataout_h, // data sampled from the padio port at the rising edge of inclock - dataout_l, // data sampled from the padio port at the falling edge of - // inclock - combout, // combinatorial output directly fed by padio - dqsundelayedout, // undelayed DQS signal to the PLD core - padio // bidirectional DDR port -); - -// GLOBAL PARAMETER DECLARATION -parameter width = 1; // required parameter -parameter power_up_high = "OFF"; -parameter oe_reg = "UNUSED"; -parameter extend_oe_disable = "UNUSED"; -parameter implement_input_in_lcell = "UNUSED"; -parameter invert_output = "OFF"; -parameter intended_device_family = "MERCURY"; -parameter lpm_type = "altddio_bidir"; -parameter lpm_hint = "UNUSED"; - -// INPUT PORT DECLARATION -input [width-1:0] datain_h; -input [width-1:0] datain_l; -input inclock; -input inclocken; -input outclock; -input outclocken; -input aset; -input aclr; -input oe; - -// OUTPUT PORT DECLARATION -output [width-1:0] dataout_h; -output [width-1:0] dataout_l; -output [width-1:0] combout; -output [width-1:0] dqsundelayedout; -// BIDIRECTIONAL PORT DECLARATION -inout [width-1:0] padio; - -// pulldown/pullup -tri0 inclock; -tri0 aset; -tri0 aclr; -tri1 outclocken; -tri1 inclocken; -tri1 oe; - -// INITIAL BLOCK -initial -begin - - // Begin of parameter checking - if (width <= 0) - begin - $display("ERROR: The width parameter must be greater than 0"); - $stop; - end - // End of parameter checking - -end - -// COMPONENT INSTANTIATION -// ALTDDIO_IN -altddio_in u1 ( - .datain(padio), - .inclock(inclock), - .inclocken(inclocken), - .aset(aset), - .aclr(aclr), - .dataout_h(dataout_h), - .dataout_l(dataout_l) -); -defparam u1.width = width, - u1.intended_device_family = intended_device_family, - u1.power_up_high = power_up_high; - -// ALTDDIO_OUT -altddio_out u2 ( - .datain_h(datain_h), - .datain_l(datain_l), - .outclock(outclock), - .oe(oe), - .outclocken(outclocken), - .aset(aset), - .aclr(aclr), - .dataout(padio) -); -defparam u2.width = width, - u2.power_up_high = power_up_high, - u2.intended_device_family = intended_device_family, - u2.oe_reg = oe_reg, - u2.extend_oe_disable = extend_oe_disable, - u2.invert_output = invert_output; - -// padio feeds combout port directly -assign combout = padio; -assign dqsundelayedout = padio; -endmodule // altddio_bidir -// END MODULE ALTDDIO_BIDIR - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : HSSI_PLL -// -// Description : This is the Phase Locked Loop (PLL) model used by altcdr_rx -// and altcdr_tx. Simple PLL model with 1 clock input (clk) and -// 2 clock outputs (clk0 & clk1). -// -// Limitations : Only capable of multiplying and dividing the input clock -// frequency. There is no support for phase shifts, uneven duty -// cycles or other fancy PLL features, since the Mercury CDR -// does not need these features. -// -// Expected results : 2 output clocks - clk0 and clk1. Locked output indicates -// when the PLL locks. -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module hssi_pll ( - clk, // input clock - areset, // asynchronous reset - clk0, // output clock0 - clk1, // output clock1 - locked // PLL lock signal -); - -// GLOBAL PARAMETER DECLARATION -parameter clk0_multiply_by = 1; -parameter clk1_divide_by = 1; -parameter input_frequency = 1000; // period in ps - -// INPUT PORT DECLARATION -input clk; -input areset; - -// OUTPUT PORT DECLARATION -output clk0; -output clk1; -output locked; - -// INTERNAL SIGNAL/REGISTER DECLARATION -reg start_outclk; -reg clk0_tmp; -reg clk1_tmp; -reg clk0; -reg clk1; -reg pll_lock; -reg clk_last_value; -reg violation; -reg clk_check; -reg [1:0] next_clk_check; -wire clk_in; - -// INTERNAL VARIABLE DECLARATION -real pll_last_rising_edge; -real pll_last_falling_edge; -real actual_clk_cycle; -real expected_clk_cycle; -real pll_duty_cycle; -real inclk_period; -real clk0_period; -real clk1_period; -real expected_next_clk_edge; - -integer pll_rising_edge_count; -integer stop_lock_count; -integer start_lock_count; -integer first_clk0_cycle; -integer first_clk1_cycle; -integer lock_on_rise; -integer lock_on_fall; -integer clk_per_tolerance; -integer lock_low; -integer lock_high; - -// variables for clock synchronizing -integer last_synchronizing_rising_edge_for_clk0; -integer last_synchronizing_rising_edge_for_clk1; -integer clk0_synchronizing_period; -integer clk1_synchronizing_period; -reg schedule_clk0; -reg schedule_clk1; -reg output_value0; -reg output_value1; - -integer input_cycles_per_clk0; -integer input_cycles_per_clk1; -integer clk0_cycles_per_sync_period; -integer clk1_cycles_per_sync_period; -integer input_cycle_count_to_sync0; -integer input_cycle_count_to_sync1; - -integer sched_time0; -integer sched_time1; -integer rem0; -integer rem1; -integer tmp_rem0; -integer tmp_rem1; -integer i0; -integer i1; -integer j0; -integer j1; -integer l0; -integer l1; -integer cycle_to_adjust0; -integer cycle_to_adjust1; -integer tmp_per0; -integer tmp_per1; -integer high_time0; -integer high_time1; -integer low_time0; -integer low_time1; - -buf (clk_in, clk); - -initial -begin - pll_rising_edge_count = 0; - pll_lock = 1'b0; - stop_lock_count = 0; - start_lock_count = 0; - clk_last_value = clk_in; - first_clk0_cycle = 1; - first_clk1_cycle = 1; - violation = 0; - lock_on_rise = 0; - lock_on_fall = 0; - pll_last_rising_edge = 0; - pll_last_falling_edge = 0; - lock_low = 2; - lock_high = 2; - clk_check = 0; - - last_synchronizing_rising_edge_for_clk0 = 0; - last_synchronizing_rising_edge_for_clk1 = 0; - clk0_synchronizing_period = 0; - clk1_synchronizing_period = 0; - schedule_clk0 = 0; - schedule_clk1 = 0; - input_cycles_per_clk0 = 1; - input_cycles_per_clk1 = clk1_divide_by; - clk0_cycles_per_sync_period = clk0_multiply_by; - clk1_cycles_per_sync_period = clk0_multiply_by; - input_cycle_count_to_sync0 = 0; - input_cycle_count_to_sync1 = 0; - l0 = 1; - l1 = 1; - cycle_to_adjust0 = 0; - cycle_to_adjust1 = 0; -end - -// trigger input clock checking for the purpose of detecting an input clock that -// has flatlined or that violates the specified input frequency or 50% duty -// cycle - with tolerance -always @(next_clk_check) -begin - if (next_clk_check == 1) - begin - #((inclk_period+clk_per_tolerance)/2) clk_check = ~clk_check; - end - else if (next_clk_check == 2) - begin - #(expected_next_clk_edge - $realtime) clk_check = ~clk_check; - end - next_clk_check = 0; -end - -// same as initial block -// reset all variables, registers and signals on positive edge of areset -always @(posedge areset) -begin - pll_rising_edge_count = 0; - pll_lock = 1'b0; - stop_lock_count = 0; - start_lock_count = 1; - clk_last_value = 0; - first_clk0_cycle = 1; - first_clk1_cycle = 1; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - violation = 0; - lock_on_rise = 0; - lock_on_fall = 0; - pll_last_rising_edge = 0; - pll_last_falling_edge = 0; - lock_low = 1; - lock_high = 2; -end - -// on change of input clock or clock check trigger, -// monitor for duty cycle/input frequency violation -// schedule clk0 and clk1 output, handles the PLL locking -always @(clk_in or clk_check) -begin - if (areset !== 1'b1) - begin - // rising edge of the clock - if ((clk_in === 1'b1) && (clk_last_value !== clk_in)) - begin - if (pll_lock === 1'b1) - next_clk_check = 1; - if (pll_rising_edge_count == 0) // this is first rising edge - begin - inclk_period = input_frequency; - pll_duty_cycle = inclk_period/2; - clk_per_tolerance = 0.025 * inclk_period; - - clk0_period = inclk_period / clk0_multiply_by; - clk1_period = inclk_period / clk0_multiply_by * clk1_divide_by; - start_outclk = 0; - pll_last_rising_edge = $realtime; - end - else if (pll_rising_edge_count == 1) // this is second rising edge - begin - expected_clk_cycle = inclk_period; - actual_clk_cycle = $realtime - pll_last_rising_edge; - - // input frequency violation check - if (actual_clk_cycle < (expected_clk_cycle - clk_per_tolerance) || - actual_clk_cycle > (expected_clk_cycle + clk_per_tolerance)) - begin - $display($realtime, "Warning: Input frequency Violation"); - violation = 1; - if (locked === 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - // PLL breaks its lock - if ((locked === 1'b1) && (stop_lock_count == lock_low)) - begin - pll_lock = 1'b0; - start_lock_count = 1; - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - end - end - end - else - begin - // Duty cycle violation check - if (($realtime - pll_last_falling_edge) < (pll_duty_cycle - (clk_per_tolerance/2)) || - ($realtime - pll_last_falling_edge) > (pll_duty_cycle + (clk_per_tolerance/2))) - begin - $display($realtime, "Warning: Duty Cycle Violation"); - violation = 1; - end - else - violation = 0; - end - end - // input frequency violation check - else if (($realtime - pll_last_rising_edge) < (expected_clk_cycle - clk_per_tolerance) || - ($realtime - pll_last_rising_edge) > (expected_clk_cycle + clk_per_tolerance)) - begin - $display($realtime, "Warning: Cycle Violation"); - violation = 1; - if (locked === 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - // PLL breaks its lock - if (stop_lock_count == lock_low) - begin - pll_lock = 1'b0; - start_lock_count = 1; - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - end - end - end - else begin - violation = 0; - actual_clk_cycle = $realtime - pll_last_rising_edge; - end - pll_last_rising_edge = $realtime; - pll_rising_edge_count = pll_rising_edge_count + 1; - - // if no violation is detected, schedule clk0 and clk1 - if (!violation) - begin - if (pll_lock === 1'b1) - begin - input_cycle_count_to_sync0 = input_cycle_count_to_sync0 + 1; - if (input_cycle_count_to_sync0 == input_cycles_per_clk0) - begin - clk0_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk0; - last_synchronizing_rising_edge_for_clk0 = $realtime; - schedule_clk0 = 1; - input_cycle_count_to_sync0 = 0; - end - - input_cycle_count_to_sync1 = input_cycle_count_to_sync1 + 1; - if (input_cycle_count_to_sync1 == input_cycles_per_clk1) - begin - clk1_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk1; - last_synchronizing_rising_edge_for_clk1 = $realtime; - schedule_clk1 = 1; - input_cycle_count_to_sync1 = 0; - end - end - else begin - start_lock_count = start_lock_count + 1; - if (start_lock_count >= (lock_high + 1)) - begin - pll_lock = 1'b1; - input_cycle_count_to_sync0 = 0; - input_cycle_count_to_sync1 = 0; - lock_on_rise = 1; - if (last_synchronizing_rising_edge_for_clk0 == 0) - begin - clk0_synchronizing_period = actual_clk_cycle; - end - else - clk0_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk0; - - if (last_synchronizing_rising_edge_for_clk1 == 0) - clk1_synchronizing_period = actual_clk_cycle * clk1_divide_by; - else - clk1_synchronizing_period = $realtime - last_synchronizing_rising_edge_for_clk1; - - last_synchronizing_rising_edge_for_clk0 = $realtime; - last_synchronizing_rising_edge_for_clk1 = $realtime; - schedule_clk0 = 1; - schedule_clk1 = 1; - end - end - end - else - start_lock_count = 1; - end - // falling edge of input clock - else if ((clk_in === 1'b0) && (clk_last_value !== clk_in)) - begin - if (pll_lock === 1'b1) - begin - next_clk_check = 1; - if (($realtime - pll_last_rising_edge) < (pll_duty_cycle - (clk_per_tolerance/2)) || - ($realtime - pll_last_rising_edge) > (pll_duty_cycle + (clk_per_tolerance/2))) - begin - $display($realtime, "Warning: Duty Cycle Violation"); - violation = 1; - if (locked === 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - if (stop_lock_count == lock_low) - begin - pll_lock = 1'b0; - start_lock_count = 1; - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - end - end - end - else - violation = 0; - end - else - start_lock_count = start_lock_count + 1; - - pll_last_falling_edge = $realtime; - end - else if (pll_lock === 1'b1) // perform clock check - begin - if (clk_in === 1'b1) - expected_next_clk_edge = pll_last_rising_edge + ((inclk_period+clk_per_tolerance)/2); - else if (clk_in === 1'b0) - expected_next_clk_edge = pll_last_falling_edge + ((inclk_period+clk_per_tolerance)/2); - else - expected_next_clk_edge = 0; - - violation = 0; - if ($realtime < expected_next_clk_edge) - next_clk_check = 2; - else if ($realtime == expected_next_clk_edge) - next_clk_check = 1; - else - begin - $display($realtime, "Warning: Input frequency Violation"); - violation = 1; - if (locked === 1'b1) - begin - stop_lock_count = stop_lock_count + 1; - expected_next_clk_edge = $realtime + (inclk_period/2); - // PLL breaks its lock - if (stop_lock_count == lock_low) - begin - pll_lock = 1'b0; - start_lock_count = 1; - stop_lock_count = 0; - clk0_tmp = 1'bx; - clk1_tmp = 1'bx; - end - else - next_clk_check = 2; - end - end - end - clk_last_value = clk_in; - end -end - -// schedule clk0 output -always @(posedge schedule_clk0) -begin - l0 = 1; - cycle_to_adjust0 = 0; - output_value0 = 1'b1; - sched_time0 = 0; - rem0 = clk0_synchronizing_period % clk0_cycles_per_sync_period; - for (i0 = 1; i0 <= clk0_cycles_per_sync_period; i0 = i0 + 1) - begin - tmp_per0 = clk0_synchronizing_period/clk0_cycles_per_sync_period; - if (rem0 != 0 && l0 <= rem0) - begin - tmp_rem0 = (clk0_cycles_per_sync_period * l0) % rem0; - cycle_to_adjust0 = (clk0_cycles_per_sync_period * l0) / rem0; - if (tmp_rem0 != 0) - cycle_to_adjust0 = cycle_to_adjust0 + 1; - end - if (cycle_to_adjust0 == i0) - begin - tmp_per0 = tmp_per0 + 1; - l0 = l0 + 1; - end - high_time0 = tmp_per0/2; - if (tmp_per0 % 2 != 0) - high_time0 = high_time0 + 1; - low_time0 = tmp_per0 - high_time0; - for (j0 = 0; j0 <= 1; j0 = j0 + 1) - begin - clk0_tmp = #(sched_time0) output_value0; - output_value0 = ~output_value0; - if (output_value0 === 1'b0) - sched_time0 = high_time0; - else if (output_value0 === 1'b1) - sched_time0 = low_time0; - end - end - schedule_clk0 = #1 1'b0; -end - -always @(clk0_tmp) -begin - clk0 <= clk0_tmp; -end - -// schedule clk1 output -always @(posedge schedule_clk1) -begin - l1 = 1; - cycle_to_adjust1 = 0; - output_value1 = 1'b1; - sched_time1 = 0; - rem1 = clk1_synchronizing_period % clk1_cycles_per_sync_period; - for (i1 = 1; i1 <= clk1_cycles_per_sync_period; i1 = i1 + 1) - begin - tmp_per1 = clk1_synchronizing_period/clk1_cycles_per_sync_period; - if (rem1 != 0 && l1 <= rem1) - begin - tmp_rem1 = (clk1_cycles_per_sync_period * l1) % rem1; - cycle_to_adjust1 = (clk1_cycles_per_sync_period * l1) / rem1; - if (tmp_rem1 != 0) - cycle_to_adjust1 = cycle_to_adjust1 + 1; - end - if (cycle_to_adjust1 == i1) - begin - tmp_per1 = tmp_per1 + 1; - l1 = l1 + 1; - end - high_time1 = tmp_per1/2; - if (tmp_per1 % 2 != 0) - high_time1 = high_time1 + 1; - low_time1 = tmp_per1 - high_time1; - for (j1 = 0; j1 <= 1; j1 = j1 + 1) - begin - clk1_tmp = #(sched_time1) output_value1; - output_value1 = ~output_value1; - if (output_value1 === 1'b0) - sched_time1 = high_time1; - else if (output_value1 === 1'b1) - sched_time1 = low_time1; - end - end - schedule_clk1 <= #1 1'b0; -end - -always @(clk1_tmp) -begin - clk1 <= clk1_tmp; -end - -buf (locked, pll_lock); - -endmodule // hssi_pll - - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : MF_RAM7X20_SYN -// -// Description : This is the RAM model used by HSSI_FIFO for writing and reading -// into the FIFO -// -// Limitations : Reading from the RAM is address-triggered, -// writing is clock-triggered -// RAM depth is fixed to 7, maximum width is 20 -// -// Expected results : data output from the RAM -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1ps / 1ps - -module MF_ram7x20_syn ( - wclk, // write clock - rst_l, // active low asynchronous reset - addr_wr, // write address - addr_rd, // read address - data_in, // data input to the RAM - we, // write enable - re, // read enable - data_out // data output from the RAM -); - -// GLOBAL PARAMETER DECLARATION -parameter ram_width = 20; - -// INPUT PORT DECLARATION -input wclk; -input rst_l; // active low -input [2:0] addr_wr; -input [2:0] addr_rd; -input [19:0] data_in; -input we; -input re; - -// OUTPUT PORT DECLARATION -output [19:0] data_out; - -// INTERNAL REGISTER/SIGNAL DECLARATION -reg [ram_width-1:0] data_out_i; -reg [ram_width-1:0] ram_array_d_0, ram_array_d_1, ram_array_d_2, - ram_array_d_3, ram_array_d_4, ram_array_d_5, - ram_array_d_6, - ram_array_q_0, ram_array_q_1, ram_array_q_2, - ram_array_q_3, ram_array_q_4, ram_array_q_5, - ram_array_q_6; -wire [ram_width-1:0] data_reg_0, data_reg_1, data_reg_2, - data_reg_3, data_reg_4, data_reg_5, data_reg_6; - -// Modelling the read port -// Assuming address triggered operation only -assign - data_reg_0 = ( addr_wr == 3'b000 ) ? data_in : ram_array_q_0, - data_reg_1 = ( addr_wr == 3'b001 ) ? data_in : ram_array_q_1, - data_reg_2 = ( addr_wr == 3'b010 ) ? data_in : ram_array_q_2, - data_reg_3 = ( addr_wr == 3'b011 ) ? data_in : ram_array_q_3, - data_reg_4 = ( addr_wr == 3'b100 ) ? data_in : ram_array_q_4, - data_reg_5 = ( addr_wr == 3'b101 ) ? data_in : ram_array_q_5, - data_reg_6 = ( addr_wr == 3'b110 ) ? data_in : ram_array_q_6; - -assign data_out = re ? data_out_i : 20'b0; - -always @(ram_array_q_0 or ram_array_q_1 or - ram_array_q_2 or ram_array_q_3 or - ram_array_q_4 or ram_array_q_5 or - ram_array_q_6 or addr_rd or we or addr_wr) -begin - case ( addr_rd ) - 3'b000 : data_out_i = ram_array_q_0; - 3'b001 : data_out_i = ram_array_q_1; - 3'b010 : data_out_i = ram_array_q_2; - 3'b011 : data_out_i = ram_array_q_3; - 3'b100 : data_out_i = ram_array_q_4; - 3'b101 : data_out_i = ram_array_q_5; - 3'b110 : data_out_i = ram_array_q_6; - default: data_out_i = data_out_i; - endcase -end - -// Modelling the write port -always @(posedge wclk or negedge rst_l) -begin - if(~rst_l) // reset - begin - ram_array_q_0 <= 0; - ram_array_q_1 <= 0; - ram_array_q_2 <= 0; - ram_array_q_3 <= 0; - ram_array_q_4 <= 0; - ram_array_q_5 <= 0; - ram_array_q_6 <= 0; - end - else - begin - ram_array_q_0 <= ram_array_d_0; - ram_array_q_1 <= ram_array_d_1; - ram_array_q_2 <= ram_array_d_2; - ram_array_q_3 <= ram_array_d_3; - ram_array_q_4 <= ram_array_d_4; - ram_array_q_5 <= ram_array_d_5; - ram_array_q_6 <= ram_array_d_6; - end -end - -always @(we or - data_reg_0 or data_reg_1 or - data_reg_2 or data_reg_3 or - data_reg_4 or data_reg_5 or - data_reg_6 or - ram_array_q_0 or ram_array_q_1 or - ram_array_q_2 or ram_array_q_3 or - ram_array_q_4 or ram_array_q_5 or - ram_array_q_6) - begin - if (we) // write enabled - begin - ram_array_d_0 <= data_reg_0; - ram_array_d_1 <= data_reg_1; - ram_array_d_2 <= data_reg_2; - ram_array_d_3 <= data_reg_3; - ram_array_d_4 <= data_reg_4; - ram_array_d_5 <= data_reg_5; - ram_array_d_6 <= data_reg_6; - end - else - begin - ram_array_d_0 <= ram_array_q_0; - ram_array_d_1 <= ram_array_q_1; - ram_array_d_2 <= ram_array_q_2; - ram_array_d_3 <= ram_array_q_3; - ram_array_d_4 <= ram_array_q_4; - ram_array_d_5 <= ram_array_q_5; - ram_array_d_6 <= ram_array_q_6; - end -end - -endmodule // MF_ram7x20_syn - - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : HSSI_FIFO -// -// Description : The FIFO model used by altcdr_rx and altcdr_tx to synchronize -// data between 2 clock domains -// -// Limitations : FIFO depth is limited to 7 words only, -// the overflow and empty signals are active low in this model -// -// Expected results : data read from the FIFO, empty and overflow signals -// (active low) to indicate when FIFO is empty or full -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps -`define CNTBIT 3 // 3 bit counter for FIFO read/write addresses - -module hssi_fifo ( - datain, // data input to the FIFO - clk0, // FIFO write clock - clk1, // FIFO read clock - we, // FIFO write enable - re, // FIFO read enable - reset, // FIFO asynchronous reset - dataout, // data output from the FIFO - empty, // active low FIFO empty signal - overflow // active low FIFO full signal -); - -// GLOBAL PARAMETER DECLARATION -parameter channel_width = 1; - -// INPUT PORT DECLARATION -input [channel_width-1:0] datain; -input clk0; -input clk1; -input we; -input re; -input reset; - -// OUTPUT PORT DECLARATION -output [channel_width-1:0] dataout; -output empty; -output overflow; - -// INTERNAL REGISTER/SIGNAL DECLARATION -wire [19:0] ram_dataout; -wire [19:0] data_out; -reg [19:0] ram_datain; -reg [19:0] dataout_tmp; -wire clk0_in; -wire clk1_in; -wire we_in; -wire re_in; -wire reset_in; - -// The following are for asynchronous fifo use -reg [`CNTBIT-1:0] wrPtr0; // write pointer synchronizer -reg [`CNTBIT-1:0] wrPtr1; // write pointer synchronizer -reg [`CNTBIT-1:0] wrPtr2; // write pointer synchronizer -reg [`CNTBIT-1:0] wrPtr,rdPtr; // writer pointer, read pointer -reg [`CNTBIT-1:0] wrAddr; // writer address -reg [`CNTBIT-1:0] preRdPtr,preRdPtr1,preRdPtr2; -wire [`CNTBIT-1:0] rdAddr = rdPtr; // read address -reg ram_we; // we for ram - -// Empty/Full checking -wire fullFlag = (wrPtr0 == preRdPtr2)? 1 : 0; -wire emptyFlag = (rdPtr == wrPtr2 && fullFlag == 'b0)? 1: 0; -wire overflow_tmp_b; -wire empty_tmp_b = !emptyFlag; - -// pullup/pulldown -tri1 we, re; -tri0 reset; - -integer i; - -buf (clk0_in, clk0); -buf (clk1_in, clk1); -buf (we_in, we); -buf (re_in, re); -buf (reset_in, reset); - -assign overflow_tmp_b = (reset_in)? 1'b0 : !fullFlag; - -// instantiate the 7x20 RAM for reading and writing data -MF_ram7x20_syn ram_7x20_syn( - .wclk (clk0_in), - .rst_l (!reset_in), - .addr_wr (wrAddr), - .addr_rd (rdAddr), - .data_in (ram_datain), - .we (ram_we), - .re (re && empty_tmp_b), - .data_out (ram_dataout) -); -defparam ram_7x20_syn.ram_width = channel_width; - -// initialize the FIFO read and write pointers -initial -begin - dataout_tmp = 20'b0; - for (i = 0; i < `CNTBIT; i = i + 1) - begin - wrPtr0[i] = 1'b0; - wrPtr1[i] = 1'b0; - wrPtr2[i] = 1'b0; - wrPtr[i] = 1'b0; - rdPtr[i] = 1'b0; - preRdPtr[i] = 1'b0; - preRdPtr1[i] = 1'b0; - preRdPtr2[i] = 1'b0; - end - preRdPtr1 = 6; - preRdPtr2 = 6; -end - -// output data on postive edge of read clock (clk1) -always @(posedge clk1_in or posedge reset_in ) -begin - if (reset_in === 1'b1) - dataout_tmp <= 0; - else if ((re_in === 1'b1) && (empty_tmp_b === 1'b1)) - dataout_tmp <= ram_dataout; // memory output latch - else - dataout_tmp <= dataout_tmp; -end - -// Update the write pointer and send input data to the RAM -// Delay the write pointer update until we have given the RAM the -// write strobe. This prevents the not empty flag from going true -// before the data actually makes it safely into the RAM -always @(posedge clk0_in or posedge reset_in) -begin - if(reset_in === 1'b1) // reset - begin - wrAddr <= 0; - ram_datain <= 20'b0; - wrPtr0 <= 0; - end - else if ((we_in === 1'b1) && (overflow_tmp_b === 1'b1)) - begin - ram_datain <= datain; - wrAddr <= wrPtr0; // wrLow for memory - wrPtr0 <= wrPtr0 + 1; - if (wrPtr0 == 6) - wrPtr0 <= 0; - end - else - begin - wrAddr <= wrAddr; - ram_datain <= ram_datain; - wrPtr0 <= wrPtr0; - end -end - -// write pointer -always @(posedge clk0_in or posedge reset_in) -begin - if(reset_in === 1'b1) - wrPtr <= 0; - else - wrPtr <= wrPtr0; -end - -// write enable -always @(posedge clk0_in or posedge reset_in) -begin - if (reset_in === 1'b1) - ram_we <= 1'b0; - else if ((we_in === 1'b1) && (overflow_tmp_b === 1'b1)) - ram_we <= 1'b1; - else - ram_we <= 1'b0; -end - -// update read pointer -always @(posedge clk1_in or posedge reset_in) -begin - if(reset_in === 1'b1) - begin - rdPtr <= 0; - preRdPtr <= 0; - end - else if ((re_in === 1'b1) && (empty_tmp_b === 1'b1)) - begin - rdPtr <= rdPtr + 1; - if (rdPtr == 6) - rdPtr <= 0; - preRdPtr <= rdPtr; - end -end - -// the following lines are for async. fifo. -always @(posedge clk1_in or posedge reset_in) -begin - if (reset_in === 1'b1) - begin - wrPtr1 <= 0; - wrPtr2 <= 0; - end - else - begin - wrPtr1 <= wrPtr; // sync. wrPtr to read clock - wrPtr2 <= wrPtr1; - end -end - -always @(posedge clk0_in or posedge reset_in) -begin - if (reset_in === 1'b1) - begin - preRdPtr1 <= 6; - preRdPtr2 <= 6; - end - else - begin - preRdPtr1 <= preRdPtr; // sync. RdPtr to write clock - preRdPtr2 <= preRdPtr1; - end -end - -assign dataout = dataout_tmp; - -and (empty, empty_tmp_b, 1'b1); -and (overflow, overflow_tmp_b, 1'b1); - -endmodule // hssi_fifo - - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : HSSI_RX -// -// Description : This is the receiver model used by altcdr_rx. Performs -// deserialization of input data. -// -// Limitations : Assumes that the clock is already perfectly synchronized to the -// incoming data -// -// Expected results: data output from the deserializer, slow clock (clkout) -// generated by the RX, run length violation flag (rlv), and -// locked output to indicate when the RX has failed to lock -// onto the input data signal (not simulated) -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -module hssi_rx ( - clk, // fast clock - coreclk, // slow (core) clock - datain, // data input to the RX - areset, // asynchronous reset - feedback,// data feedback port - fbkcntl, // feedback control port - dataout, // data output from the RX - clkout, // slow clock generated by the RX - rlv, // run length violation flag - locked // RX lost of lock indicator -); - -// GLOBAL PARAMETER DECLARATION -parameter channel_width = 1; -parameter operation_mode = "CDR"; -parameter run_length = 1; - -// INPUT PORT DECLARATION -input clk; -input coreclk; -input datain; -input areset; -input feedback; -input fbkcntl; - -// OUTPUT PORT DECLARATION -output [channel_width-1:0] dataout; -output clkout; -output rlv; -output locked; - -// INTERNAL VARIABLE/SIGNAL/REGISTER DECLARATION -integer i; -integer clk_count; -integer rlv_count; -reg clk_last_value; -reg coreclk_last_value; -reg clkout_last_value; -reg [channel_width-1:0] deser_data_arr; -reg clkout_tmp; -reg rlv_tmp; -reg locked_tmp; -reg rlv_flag; -reg rlv_set; -reg [19:0] dataout_tmp; -reg datain_in; -reg last_datain; -reg data_changed; -wire [19:0] data_out; -wire clk_in; -wire coreclk_in; -wire datain_buf; -wire fbin_in; -wire fbena_in; -wire areset_in; - -// pulldown -tri0 areset, feedback, fbkcntl; - -buf (clk_in, clk); -buf (coreclk_in, coreclk); -buf (datain_buf, datain); -buf (fbin_in, feedback); -buf (fbena_in, fbkcntl); -buf (areset_in, areset); - -initial -begin - i = 0; - rlv_count = 0; - clk_count = channel_width; - clk_last_value = 0; - coreclk_last_value = 0; - clkout_tmp = 1'b0; - rlv_tmp = 1'b0; - rlv_flag = 1'b0; - rlv_set = 1'b0; - locked_tmp = 1'b0; - dataout_tmp = 20'b0; - last_datain = 1'bx; - data_changed = 1'b0; -end - -// deserialize incoming data, generate clkout and check for run length violation -always @(clk_in or coreclk_in or areset_in or fbena_in) -begin - if (areset_in === 1'b1) // reset - begin - rlv_set = 1'b0; - dataout_tmp = 20'b0; - clkout_tmp = 1'b0; - rlv_tmp = 1'b0; - rlv_flag = 1'b0; - last_datain = 1'bx; - rlv_count = 0; - data_changed = 1'b0; - clk_count = channel_width; - for (i = channel_width - 1; i >= 0; i = i - 1) - deser_data_arr[i] = 1'b0; - end - else - begin - if (fbena_in === 1'b1) - datain_in = fbin_in; - else - datain_in = datain_buf; - if ((clk_in === 1'b1) && (clk_last_value !== clk_in)) - begin - if (clk_count == channel_width) - begin - clk_count = 0; - clkout_tmp = !clkout_last_value; - end - else if (clk_count == (channel_width+1)/2) - clkout_tmp = !clkout_last_value; - else if (clk_count < channel_width) - clkout_tmp = clkout_last_value; - clk_count = clk_count + 1; - - //rlv (run length violation) checking - if (operation_mode == "CDR") - begin - if (last_datain !== datain_in) - begin - data_changed = 1'b1; - last_datain = datain_in; - end - else // data not changed - increment rlv_count - begin - rlv_count = rlv_count + 1; - data_changed = 1'b0; - end - - if (rlv_count > run_length) - begin - rlv_flag = 1'b1; - rlv_set = 1'b1; - end - else - rlv_set = 1'b0; - - if (data_changed) - rlv_count = 1; - end - end - if ((coreclk_in === 1'b1) && (coreclk_last_value !== coreclk_in)) - begin - // output the rlv status with the rising edge of the coreclk - if (operation_mode == "CDR") - begin - if (rlv_flag === 1'b1) - begin - rlv_tmp = 1'b1; - if (rlv_set === 1'b0) - rlv_flag = 1'b0; - end - else - rlv_tmp = 1'b0; - end - end - - // deserialize the data - if ((clk_in === 1'b0) && (clk_last_value !== clk_in)) - begin - if ((clk_count == 3)) - dataout_tmp[channel_width-1:0] = deser_data_arr; - - for (i = channel_width - 1; i >= 1; i = i - 1) - deser_data_arr[i] = deser_data_arr[i-1]; - - deser_data_arr[0] = datain_in; - end - end - clk_last_value = clk_in; - coreclk_last_value = coreclk_in; - clkout_last_value = clkout_tmp; -end - -assign dataout = dataout_tmp; - -and (rlv, rlv_tmp, 1'b1); -and (locked, locked_tmp, 1'b1); -and (clkout, clkout_tmp, 1'b1); - -endmodule // hssi_rx - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : HSSI_TX -// -// Description : The transmitter module used by altcdr_tx. Performs -// serialization of output data. -// -// Limitations : -// -// Expected results : Serial data output (dataout) and generated slow clock -// (clkout) -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module hssi_tx ( - clk, // fast clock - datain, // parallel input data - areset, // asynchronous reset - dataout, // serial data output - clkout // generated clock -); - -// GLOBAL PARAMETER DECLARATION -parameter channel_width = 1; - -// INPUT PORT DECLARATION -input clk; -input [channel_width-1:0] datain; -input areset; - -// OUTPUT PORT DECLARATION -output dataout; -output clkout; - -// INTERNAL VARIABLE/REGISTER DECLARATION -integer i; -integer fast_clk_count; -reg clk_in_last_value; -reg dataout_tmp; -reg clkout_last_value; -reg clkout_tmp; -reg [19:0] indata; -reg [19:0] regdata; -wire clk_in; -wire areset_in; - -buf (clk_in, clk); -buf (areset_in, areset); - -initial -begin - i = 0; - fast_clk_count = channel_width; - clk_in_last_value = 0; - dataout_tmp = 1'b0; - clkout_last_value = 0; - clkout_tmp = 0; -end - -always @(clk_in or areset_in) -begin - // reset logic - if (areset_in == 1'b1) - begin - dataout_tmp = 1'b0; - clkout_tmp = 1'b0; - fast_clk_count = channel_width; - for (i = channel_width-1; i >= 0; i = i - 1) // resets register - indata[i] = 1'b0; - for (i = channel_width-1; i >= 0; i = i - 1) // resets register - regdata[i] = 1'b0; - end - else // serialize incoming parallel data and generate slow clock - begin - // rising edge of fast clock - if ((clk_in === 1'b1) && (clk_in_last_value !== clk_in)) - begin - // slow clock generation - if (fast_clk_count == channel_width) - begin - fast_clk_count = 0; - clkout_tmp = !clkout_last_value; - end - else if (fast_clk_count == (channel_width+1)/2) - clkout_tmp = !clkout_last_value; - else if (fast_clk_count < channel_width) - clkout_tmp = clkout_last_value; - - fast_clk_count = fast_clk_count + 1; - - // 3rd rising edge, start to shift out - if (fast_clk_count == 3) - begin - for (i = channel_width-1; i >= 0; i = i - 1) - regdata[i] = indata[i]; - end - - // send the MSB of regdata out - dataout_tmp = regdata[channel_width-1]; - // shift data up - for (i = channel_width-1; i > 0; i = i - 1) - regdata[i] = regdata[i-1]; - end - // falling edge of fast clock - if ((clk_in === 1'b0) && (clk_in_last_value !== clk_in)) - begin - if (fast_clk_count == 3) // loading at the 3rd falling edge - begin - indata = datain; - end - end - end - clk_in_last_value = clk_in; - clkout_last_value = clkout_tmp; -end - -and (dataout, dataout_tmp, 1'b1); -and (clkout, clkout_tmp, 1'b1); - -endmodule // hssi_tx - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTCDR_RX -// -// Description : Clock Data Recovery (CDR) Receiver behavioral model. Consists -// of CDR receiver for deserialization, a Phase Locked Loop (PLL) -// and FIFO. -// -// Limitations : Available for the Mercury device family only -// -// Expected results : Deserialized data output (rx_out), recovered global data -// clock (rx_outclock), PLL lock signal, RX lost of lock signal, -// RX run length violation signal, RX FIFO full and empty -// signals (active high), recovered clock per channel -// (rx_rec_clk) -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altcdr_rx ( - rx_in, // required port, data input - rx_inclock, // required port, input reference clock - rx_coreclock, // required port, core clock - rx_aclr, // asynchronous reset for the RX and FIFO - rx_pll_aclr, // asynchronous reset for the PLL - rx_fifo_rden, // FIFO read enable - rx_out, // data output - rx_outclock, // global clock recovered from channel 0 - rx_pll_locked,// PLL lock signal - rx_locklost, // RX lock of lost wrt input data - rx_rlv, // data run length violation flag - rx_full, // FIFO full signal - rx_empty, // FIFO empty signal - rx_rec_clk // recovered clock from each channel -); - -// GLOBAL PARAMETER DECLARATION -parameter number_of_channels = 1; -parameter deserialization_factor = 3; // Valid deserialization_factor -parameter inclock_period = 20000; // 20000ps = 50MHz -parameter inclock_boost = 1; -parameter run_length = 62; // default based on SONET requirements -parameter bypass_fifo = "OFF"; -parameter intended_device_family = "MERCURY"; -parameter lpm_type = "altcdr_rx"; -parameter lpm_hint = "UNUSED"; - -// Constant Declaration - -parameter RUN_LENGTH_MAX = 62; // Mercury Max.Run Length - - -// INPUT PORT DECLARATION -input [number_of_channels-1:0] rx_in; -input rx_inclock; -input rx_coreclock; -input rx_aclr; -input rx_pll_aclr; -input [number_of_channels-1:0] rx_fifo_rden; - -// OUTPUT PORT DECLARATION -output [deserialization_factor*number_of_channels-1:0] rx_out; -output rx_outclock; -output rx_pll_locked; -output [number_of_channels-1:0] rx_locklost; -output [number_of_channels-1:0] rx_rlv; -output [number_of_channels-1:0] rx_full; -output [number_of_channels-1:0] rx_empty; -output [number_of_channels-1:0] rx_rec_clk; - -// INTERNAL SIGNAL/VARIABLE DECLARATION -wire w_rx_inclk0; -wire [17:0] i_rx_full; -wire [17:0] i_rx_empty; -wire [17:0] i_rx_locked; -wire [17:0] w_rx_clkout; -wire [17:0] i_rx_rlv; -wire i_pll_locked; -wire [deserialization_factor-1:0] w_rx_out00; -wire [deserialization_factor-1:0] w_rx_out01; -wire [deserialization_factor-1:0] w_rx_out02; -wire [deserialization_factor-1:0] w_rx_out03; -wire [deserialization_factor-1:0] w_rx_out04; -wire [deserialization_factor-1:0] w_rx_out05; -wire [deserialization_factor-1:0] w_rx_out06; -wire [deserialization_factor-1:0] w_rx_out07; -wire [deserialization_factor-1:0] w_rx_out08; -wire [deserialization_factor-1:0] w_rx_out09; -wire [deserialization_factor-1:0] w_rx_out10; -wire [deserialization_factor-1:0] w_rx_out11; -wire [deserialization_factor-1:0] w_rx_out12; -wire [deserialization_factor-1:0] w_rx_out13; -wire [deserialization_factor-1:0] w_rx_out14; -wire [deserialization_factor-1:0] w_rx_out15; -wire [deserialization_factor-1:0] w_rx_out16; -wire [deserialization_factor-1:0] w_rx_out17; -wire [deserialization_factor-1:0] i_fifo_out00; -wire [deserialization_factor-1:0] i_fifo_out01; -wire [deserialization_factor-1:0] i_fifo_out02; -wire [deserialization_factor-1:0] i_fifo_out03; -wire [deserialization_factor-1:0] i_fifo_out04; -wire [deserialization_factor-1:0] i_fifo_out05; -wire [deserialization_factor-1:0] i_fifo_out06; -wire [deserialization_factor-1:0] i_fifo_out07; -wire [deserialization_factor-1:0] i_fifo_out08; -wire [deserialization_factor-1:0] i_fifo_out09; -wire [deserialization_factor-1:0] i_fifo_out10; -wire [deserialization_factor-1:0] i_fifo_out11; -wire [deserialization_factor-1:0] i_fifo_out12; -wire [deserialization_factor-1:0] i_fifo_out13; -wire [deserialization_factor-1:0] i_fifo_out14; -wire [deserialization_factor-1:0] i_fifo_out15; -wire [deserialization_factor-1:0] i_fifo_out16; -wire [deserialization_factor-1:0] i_fifo_out17; - -tri0 [17:0] i_rx_in; -wire [deserialization_factor*18-1:0] i_rx_out; -wire [deserialization_factor*18-1:0] i_w_rx_out; - -supply0 gnd; -supply1 vcc; - -integer i; - -// pullup/pulldown -// Default values for inputs -tri0 rx_aclr_pulldown, rx_aclr; -tri0 rx_pll_aclr_pulldown, rx_pll_aclr; -tri1 [17:0] rx_fifo_rden_pullup; - -// INITIAL BLOCK -initial -begin - - // Begin of parameter checking - if (number_of_channels <= 0) - begin - $display("ERROR: The number_of_channels parameter must be greater than 0"); - $stop; - end - - if (run_length > RUN_LENGTH_MAX) - begin - $display("ERROR: The run_length parameter must be greater than %d", RUN_LENGTH_MAX); - $stop; - end - - if (!(((deserialization_factor >= 3 ) && (deserialization_factor <= 12)) || - (deserialization_factor == 14) || (deserialization_factor == 16) || - (deserialization_factor == 18) || (deserialization_factor == 20))) - begin - $display("ERROR: Illegal value for deserialization_factor parameter (%d) -- value ", deserialization_factor); - $display(" must be in the range 3 to 12, inclusive, or must be one of 14, 16, 18, or 20"); - $stop; - end - - - // End of parameter checking - -end - - -assign rx_aclr_pulldown = rx_aclr; -assign rx_pll_aclr_pulldown = rx_pll_aclr; -assign rx_fifo_rden_pullup = rx_fifo_rden; - - //----------------------------------------------------------------------- - // Instantiate the HSSI_RX to deserialize data - maximum of 18 channels - hssi_rx rx00 ( - .datain (i_rx_in[00]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[00]), - .dataout (w_rx_out00), .clkout (w_rx_clkout[00]), .rlv (i_rx_rlv[00]) ); - defparam - rx00.channel_width = deserialization_factor, - rx00.operation_mode = "CDR", - rx00.run_length = run_length; - - hssi_rx rx01 ( - .datain (i_rx_in[01]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[01]), - .dataout (w_rx_out01), .clkout (w_rx_clkout[01]), .rlv (i_rx_rlv[01]) ); - defparam - rx01.channel_width = deserialization_factor, - rx01.operation_mode = "CDR", - rx01.run_length = run_length; - - hssi_rx rx02 ( - .datain (i_rx_in[02]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[02]), - .dataout (w_rx_out02), .clkout (w_rx_clkout[02]), .rlv (i_rx_rlv[02]) ); - defparam - rx02.channel_width = deserialization_factor, - rx02.operation_mode = "CDR", - rx02.run_length = run_length; - - hssi_rx rx03 ( - .datain (i_rx_in[03]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[03]), - .dataout (w_rx_out03), .clkout (w_rx_clkout[03]), .rlv (i_rx_rlv[03]) ); - defparam - rx03.channel_width = deserialization_factor, - rx03.operation_mode = "CDR", - rx03.run_length = run_length; - - hssi_rx rx04 ( - .datain (i_rx_in[04]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[04]), - .dataout (w_rx_out04), .clkout (w_rx_clkout[04]), .rlv (i_rx_rlv[04]) ); - defparam - rx04.channel_width = deserialization_factor, - rx04.operation_mode = "CDR", - rx04.run_length = run_length; - - hssi_rx rx05 ( - .datain (i_rx_in[05]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[05]), - .dataout (w_rx_out05), .clkout (w_rx_clkout[05]), .rlv (i_rx_rlv[05]) ); - defparam - rx05.channel_width = deserialization_factor, - rx05.operation_mode = "CDR", - rx05.run_length = run_length; - - hssi_rx rx06 ( - .datain (i_rx_in[06]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[06]), - .dataout (w_rx_out06), .clkout (w_rx_clkout[06]), .rlv (i_rx_rlv[06]) ); - defparam - rx06.channel_width = deserialization_factor, - rx06.operation_mode = "CDR", - rx06.run_length = run_length; - - hssi_rx rx07 ( - .datain (i_rx_in[07]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[07]), - .dataout (w_rx_out07), .clkout (w_rx_clkout[07]), .rlv (i_rx_rlv[07]) ); - defparam - rx07.channel_width = deserialization_factor, - rx07.operation_mode = "CDR", - rx07.run_length = run_length; - - hssi_rx rx08 ( - .datain (i_rx_in[08]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[08]), - .dataout (w_rx_out08), .clkout (w_rx_clkout[08]), .rlv (i_rx_rlv[08]) ); - defparam - rx08.channel_width = deserialization_factor, - rx08.operation_mode = "CDR", - rx08.run_length = run_length; - - hssi_rx rx09 ( - .datain (i_rx_in[09]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[09]), - .dataout (w_rx_out09), .clkout (w_rx_clkout[09]), .rlv (i_rx_rlv[09]) ); - defparam - rx09.channel_width = deserialization_factor, - rx09.operation_mode = "CDR", - rx09.run_length = run_length; - - hssi_rx rx10 ( - .datain (i_rx_in[10]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[10]), - .dataout (w_rx_out10), .clkout (w_rx_clkout[10]), .rlv (i_rx_rlv[10]) ); - defparam - rx10.channel_width = deserialization_factor, - rx10.operation_mode = "CDR", - rx10.run_length = run_length; - - hssi_rx rx11 ( - .datain (i_rx_in[11]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[11]), - .dataout (w_rx_out11), .clkout (w_rx_clkout[11]), .rlv (i_rx_rlv[11]) ); - defparam - rx11.channel_width = deserialization_factor, - rx11.operation_mode = "CDR", - rx11.run_length = run_length; - - hssi_rx rx12 ( - .datain (i_rx_in[12]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[12]), - .dataout (w_rx_out12), .clkout (w_rx_clkout[12]), .rlv (i_rx_rlv[12]) ); - defparam - rx12.channel_width = deserialization_factor, - rx12.operation_mode = "CDR", - rx12.run_length = run_length; - - hssi_rx rx13 ( - .datain (i_rx_in[13]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[13]), - .dataout (w_rx_out13), .clkout (w_rx_clkout[13]), .rlv (i_rx_rlv[13]) ); - defparam - rx13.channel_width = deserialization_factor, - rx13.operation_mode = "CDR", - rx13.run_length = run_length; - - hssi_rx rx14 ( - .datain (i_rx_in[14]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[14]), - .dataout (w_rx_out14), .clkout (w_rx_clkout[14]), .rlv (i_rx_rlv[14]) ); - defparam - rx14.channel_width = deserialization_factor, - rx14.operation_mode = "CDR", - rx14.run_length = run_length; - - hssi_rx rx15 ( - .datain (i_rx_in[15]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[15]), - .dataout (w_rx_out15), .clkout (w_rx_clkout[15]), .rlv (i_rx_rlv[15]) ); - defparam - rx15.channel_width = deserialization_factor, - rx15.operation_mode = "CDR", - rx15.run_length = run_length; - - hssi_rx rx16 ( - .datain (i_rx_in[16]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[16]), - .dataout (w_rx_out16), .clkout (w_rx_clkout[16]), .rlv (i_rx_rlv[16]) ); - defparam - rx16.channel_width = deserialization_factor, - rx16.operation_mode = "CDR", - rx16.run_length = run_length; - - hssi_rx rx17 ( - .datain (i_rx_in[17]), .clk (w_rx_inclk0), .areset (rx_aclr_pulldown), - .feedback (gnd), .fbkcntl (gnd), .coreclk (rx_coreclock), - .locked (i_rx_locked[17]), - .dataout (w_rx_out17), .clkout (w_rx_clkout[17]), .rlv (i_rx_rlv[17]) ); - defparam - rx17.channel_width = deserialization_factor, - rx17.operation_mode = "CDR", - rx17.run_length = run_length; - - - //---------------------------------------------------------- - // Instantiate HSSI_PLL - use the same PLL for all channels - - hssi_pll pll ( - .clk (rx_inclock), .areset (rx_pll_aclr_pulldown), - .clk0 (w_rx_inclk0), .clk1 (), .locked (i_pll_locked) ); - defparam - pll.clk0_multiply_by = inclock_boost, - pll.input_frequency = inclock_period; - - //---------------------------------------------------------- - // Instantiate HSSI_FIFOs - - hssi_fifo fifo00 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[00]), - .clk0 (w_rx_clkout[00]), .datain (w_rx_out00), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[00]), .empty (i_rx_empty[00]), - .dataout (i_fifo_out00) ); - defparam - fifo00.channel_width = deserialization_factor; - - hssi_fifo fifo01 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[01]), - .clk0 (w_rx_clkout[01]), .datain (w_rx_out01), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[01]), .empty (i_rx_empty[01]), - .dataout (i_fifo_out01) ); - defparam - fifo01.channel_width = deserialization_factor; - - hssi_fifo fifo02 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[02]), - .clk0 (w_rx_clkout[02]), .datain (w_rx_out02), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[02]), .empty (i_rx_empty[02]), - .dataout (i_fifo_out02) ); - defparam - fifo02.channel_width = deserialization_factor; - - hssi_fifo fifo03 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[03]), - .clk0 (w_rx_clkout[03]), .datain (w_rx_out03), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[03]), .empty (i_rx_empty[03]), - .dataout (i_fifo_out03) ); - defparam - fifo03.channel_width = deserialization_factor; - - hssi_fifo fifo04 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[04]), - .clk0 (w_rx_clkout[04]), .datain (w_rx_out04), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[04]), .empty (i_rx_empty[04]), - .dataout (i_fifo_out04) ); - defparam - fifo04.channel_width = deserialization_factor; - - hssi_fifo fifo05 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[05]), - .clk0 (w_rx_clkout[05]), .datain (w_rx_out05), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[05]), .empty (i_rx_empty[05]), - .dataout (i_fifo_out05) ); - defparam - fifo05.channel_width = deserialization_factor; - - hssi_fifo fifo06 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[06]), - .clk0 (w_rx_clkout[06]), .datain (w_rx_out06), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[06]), .empty (i_rx_empty[06]), - .dataout (i_fifo_out06) ); - defparam - fifo06.channel_width = deserialization_factor; - - hssi_fifo fifo07 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[07]), - .clk0 (w_rx_clkout[07]), .datain (w_rx_out07), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[07]), .empty (i_rx_empty[07]), - .dataout (i_fifo_out07) ); - defparam - fifo07.channel_width = deserialization_factor; - - hssi_fifo fifo08 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[08]), - .clk0 (w_rx_clkout[08]), .datain (w_rx_out08), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[08]), .empty (i_rx_empty[08]), - .dataout (i_fifo_out08) ); - defparam - fifo08.channel_width = deserialization_factor; - - hssi_fifo fifo09 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[09]), - .clk0 (w_rx_clkout[09]), .datain (w_rx_out09), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[09]), .empty (i_rx_empty[09]), - .dataout (i_fifo_out09) ); - defparam - fifo09.channel_width = deserialization_factor; - - hssi_fifo fifo10 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[10]), - .clk0 (w_rx_clkout[10]), .datain (w_rx_out10), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[10]), .empty (i_rx_empty[10]), - .dataout (i_fifo_out10) ); - defparam - fifo10.channel_width = deserialization_factor; - - hssi_fifo fifo11 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[11]), - .clk0 (w_rx_clkout[11]), .datain (w_rx_out11), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[11]), .empty (i_rx_empty[11]), - .dataout (i_fifo_out11) ); - defparam - fifo11.channel_width = deserialization_factor; - - hssi_fifo fifo12 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[12]), - .clk0 (w_rx_clkout[12]), .datain (w_rx_out12), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[12]), .empty (i_rx_empty[12]), - .dataout (i_fifo_out12) ); - defparam - fifo12.channel_width = deserialization_factor; - - hssi_fifo fifo13 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[13]), - .clk0 (w_rx_clkout[13]), .datain (w_rx_out13), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[13]), .empty (i_rx_empty[13]), - .dataout (i_fifo_out13) ); - defparam - fifo13.channel_width = deserialization_factor; - - hssi_fifo fifo14 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[14]), - .clk0 (w_rx_clkout[14]), .datain (w_rx_out14), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[14]), .empty (i_rx_empty[14]), - .dataout (i_fifo_out14) ); - defparam - fifo14.channel_width = deserialization_factor; - - hssi_fifo fifo15 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[15]), - .clk0 (w_rx_clkout[15]), .datain (w_rx_out15), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[15]), .empty (i_rx_empty[15]), - .dataout (i_fifo_out15) ); - defparam - fifo15.channel_width = deserialization_factor; - - hssi_fifo fifo16 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[16]), - .clk0 (w_rx_clkout[16]), .datain (w_rx_out16), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[16]), .empty (i_rx_empty[16]), - .dataout (i_fifo_out16) ); - defparam - fifo16.channel_width = deserialization_factor; - - hssi_fifo fifo17 ( - .clk1 (rx_coreclock), .re (rx_fifo_rden_pullup[17]), - .clk0 (w_rx_clkout[17]), .datain (w_rx_out17), - .we (vcc), .reset (rx_aclr_pulldown), - .overflow (i_rx_full[17]), .empty (i_rx_empty[17]), - .dataout (i_fifo_out17) ); - defparam - fifo17.channel_width = deserialization_factor; - - -//-------------------------- -// Inputs -assign i_rx_in[number_of_channels - 1 : 0] = rx_in[number_of_channels - 1 : 0]; - -//-------------------------- -// Outputs -// assign FIFO outputs to i_rx_out wire - for the case when FIFO is not bypassed -assign i_rx_out[01*deserialization_factor-1:00*deserialization_factor] - = i_fifo_out00; -assign i_rx_out[02*deserialization_factor-1:01*deserialization_factor] - = i_fifo_out01; -assign i_rx_out[03*deserialization_factor-1:02*deserialization_factor] - = i_fifo_out02; -assign i_rx_out[04*deserialization_factor-1:03*deserialization_factor] - = i_fifo_out03; -assign i_rx_out[05*deserialization_factor-1:04*deserialization_factor] - = i_fifo_out04; -assign i_rx_out[06*deserialization_factor-1:05*deserialization_factor] - = i_fifo_out05; -assign i_rx_out[07*deserialization_factor-1:06*deserialization_factor] - = i_fifo_out06; -assign i_rx_out[08*deserialization_factor-1:07*deserialization_factor] - = i_fifo_out07; -assign i_rx_out[09*deserialization_factor-1:08*deserialization_factor] - = i_fifo_out08; -assign i_rx_out[10*deserialization_factor-1:09*deserialization_factor] - = i_fifo_out09; -assign i_rx_out[11*deserialization_factor-1:10*deserialization_factor] - = i_fifo_out10; -assign i_rx_out[12*deserialization_factor-1:11*deserialization_factor] - = i_fifo_out11; -assign i_rx_out[13*deserialization_factor-1:12*deserialization_factor] - = i_fifo_out12; -assign i_rx_out[14*deserialization_factor-1:13*deserialization_factor] - = i_fifo_out13; -assign i_rx_out[15*deserialization_factor-1:14*deserialization_factor] - = i_fifo_out14; -assign i_rx_out[16*deserialization_factor-1:15*deserialization_factor] - = i_fifo_out15; -assign i_rx_out[17*deserialization_factor-1:16*deserialization_factor] - = i_fifo_out16; -assign i_rx_out[18*deserialization_factor-1:17*deserialization_factor] - = i_fifo_out17; - -// assign RX outputs to i_w_rx_out wire - for the case when FIFO is bypassed -assign i_w_rx_out[01*deserialization_factor-1:00*deserialization_factor] - = w_rx_out00; -assign i_w_rx_out[02*deserialization_factor-1:01*deserialization_factor] - = w_rx_out01; -assign i_w_rx_out[03*deserialization_factor-1:02*deserialization_factor] - = w_rx_out02; -assign i_w_rx_out[04*deserialization_factor-1:03*deserialization_factor] - = w_rx_out03; -assign i_w_rx_out[05*deserialization_factor-1:04*deserialization_factor] - = w_rx_out04; -assign i_w_rx_out[06*deserialization_factor-1:05*deserialization_factor] - = w_rx_out05; -assign i_w_rx_out[07*deserialization_factor-1:06*deserialization_factor] - = w_rx_out06; -assign i_w_rx_out[08*deserialization_factor-1:07*deserialization_factor] - = w_rx_out07; -assign i_w_rx_out[09*deserialization_factor-1:08*deserialization_factor] - = w_rx_out08; -assign i_w_rx_out[10*deserialization_factor-1:09*deserialization_factor] - = w_rx_out09; -assign i_w_rx_out[11*deserialization_factor-1:10*deserialization_factor] - = w_rx_out10; -assign i_w_rx_out[12*deserialization_factor-1:11*deserialization_factor] - = w_rx_out11; -assign i_w_rx_out[13*deserialization_factor-1:12*deserialization_factor] - = w_rx_out12; -assign i_w_rx_out[14*deserialization_factor-1:13*deserialization_factor] - = w_rx_out13; -assign i_w_rx_out[15*deserialization_factor-1:14*deserialization_factor] - = w_rx_out14; -assign i_w_rx_out[16*deserialization_factor-1:15*deserialization_factor] - = w_rx_out15; -assign i_w_rx_out[17*deserialization_factor-1:16*deserialization_factor] - = w_rx_out16; -assign i_w_rx_out[18*deserialization_factor-1:17*deserialization_factor] - = w_rx_out17; - -// assign the correct signals to the output ports -assign rx_out = (deserialization_factor == 1) ? rx_in : - (bypass_fifo == "OFF") ? i_rx_out[deserialization_factor*number_of_channels-1:0] : i_w_rx_out; -assign rx_outclock = (deserialization_factor > 1) ? w_rx_clkout[00] : rx_inclock; -assign rx_locklost = (deserialization_factor > 1) ? i_rx_locked[number_of_channels-1:0] : {(number_of_channels){1'b1}}; -assign rx_full = (deserialization_factor == 1) ? 0 : - (bypass_fifo == "OFF") ? ~ i_rx_full[number_of_channels-1:0] : {number_of_channels{1'bX}}; -assign rx_empty = (deserialization_factor == 1) ? 0 : - (bypass_fifo == "OFF") ? ~ i_rx_empty[number_of_channels-1:0] : {number_of_channels{1'bX}}; -assign rx_rlv = (deserialization_factor > 1) ? i_rx_rlv : 0; -assign rx_pll_locked = i_pll_locked; -assign rx_rec_clk = w_rx_clkout; - -endmodule // altcdr_rx - -// START MODULE NAME ----------------------------------------------------------- -// -// Module Name : ALTCDR_TX -// -// Description : The Clock Data Recovery (CDR) transmitter behavioral -// model. Consists of CDR transmitter for serialization, -// a PLL and FIFO. -// -// Limitations : Available for the Mercury device family only -// -// Expected results : Serial data output (tx_out), generated slow clock -// (tx_clkout), FIFO full signal (tx_full), FIFO empty signal -// (tx_empty), PLL lock signal (tx_pll_locked) -// -//END MODULE NAME -------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altcdr_tx ( - tx_in, // required port, parallel data input - tx_inclock, // required port, input reference clock - tx_coreclock, // required port, input core clock - tx_aclr, // asynchronous clear for TX and FIFO - tx_pll_aclr, // asynchronous clear for the PLL - tx_fifo_wren, // write enable for the FIFO - tx_out, // serial data output - tx_outclock, // generated slow clock - tx_pll_locked, // PLL lock signal - tx_full, // FIFO full indicator - tx_empty // FIFO empty indicator -); - -// GLOBAL PARAMETER DECLARATION -parameter number_of_channels = 1; -parameter deserialization_factor = 3; // Valid deserialization_factor -parameter inclock_period = 0; // units in ps -parameter inclock_boost = 1; -parameter bypass_fifo = "OFF"; -parameter intended_device_family = "MERCURY"; -parameter lpm_type = "altcdr_tx"; -parameter lpm_hint = "UNUSED"; - -// LOCAL PARAMETER DECLARATION -parameter MAX_DATA_WIDTH = deserialization_factor - 1; - -// INPUT PORT DECLARATION -input [deserialization_factor*number_of_channels-1:0] tx_in; -input tx_inclock; -input tx_coreclock; -input tx_aclr; -input tx_pll_aclr; -input [number_of_channels-1:0] tx_fifo_wren; - -// OUTPUT PORT DECLARATION -output [number_of_channels-1:0] tx_out; -output tx_outclock; -output tx_pll_locked; -output [number_of_channels-1:0] tx_full; -output [number_of_channels-1:0] tx_empty; - -// Default values for inputs -- pullup/pulldown -tri0 tx_aclr_pulldown; -tri0 tx_pll_aclr_pulldown; -tri1 [17:0] tx_fifo_wren_pullup; - -// INTERNAL VARIABLE/REGISTER DECLARATION -wire w_tx_clk; -wire w_tx_clk1; -wire i_tx_pll_locked; -wire [17:0] i_tx_full; -wire [17:0] i_tx_empty; -wire [17:0] w_tx_out; -wire [17:0] w_tx_clkout; -wire [MAX_DATA_WIDTH:0] txin00; -wire [MAX_DATA_WIDTH:0] txin01; -wire [MAX_DATA_WIDTH:0] txin02; -wire [MAX_DATA_WIDTH:0] txin03; -wire [MAX_DATA_WIDTH:0] txin04; -wire [MAX_DATA_WIDTH:0] txin05; -wire [MAX_DATA_WIDTH:0] txin06; -wire [MAX_DATA_WIDTH:0] txin07; -wire [MAX_DATA_WIDTH:0] txin08; -wire [MAX_DATA_WIDTH:0] txin09; -wire [MAX_DATA_WIDTH:0] txin10; -wire [MAX_DATA_WIDTH:0] txin11; -wire [MAX_DATA_WIDTH:0] txin12; -wire [MAX_DATA_WIDTH:0] txin13; -wire [MAX_DATA_WIDTH:0] txin14; -wire [MAX_DATA_WIDTH:0] txin15; -wire [MAX_DATA_WIDTH:0] txin16; -wire [MAX_DATA_WIDTH:0] txin17; -wire [MAX_DATA_WIDTH:0] i_fifo_out00; -wire [MAX_DATA_WIDTH:0] i_fifo_out01; -wire [MAX_DATA_WIDTH:0] i_fifo_out02; -wire [MAX_DATA_WIDTH:0] i_fifo_out03; -wire [MAX_DATA_WIDTH:0] i_fifo_out04; -wire [MAX_DATA_WIDTH:0] i_fifo_out05; -wire [MAX_DATA_WIDTH:0] i_fifo_out06; -wire [MAX_DATA_WIDTH:0] i_fifo_out07; -wire [MAX_DATA_WIDTH:0] i_fifo_out08; -wire [MAX_DATA_WIDTH:0] i_fifo_out09; -wire [MAX_DATA_WIDTH:0] i_fifo_out10; -wire [MAX_DATA_WIDTH:0] i_fifo_out11; -wire [MAX_DATA_WIDTH:0] i_fifo_out12; -wire [MAX_DATA_WIDTH:0] i_fifo_out13; -wire [MAX_DATA_WIDTH:0] i_fifo_out14; -wire [MAX_DATA_WIDTH:0] i_fifo_out15; -wire [MAX_DATA_WIDTH:0] i_fifo_out16; -wire [MAX_DATA_WIDTH:0] i_fifo_out17; -wire [MAX_DATA_WIDTH:0] i_tx_in00; -wire [MAX_DATA_WIDTH:0] i_tx_in01; -wire [MAX_DATA_WIDTH:0] i_tx_in02; -wire [MAX_DATA_WIDTH:0] i_tx_in03; -wire [MAX_DATA_WIDTH:0] i_tx_in04; -wire [MAX_DATA_WIDTH:0] i_tx_in05; -wire [MAX_DATA_WIDTH:0] i_tx_in06; -wire [MAX_DATA_WIDTH:0] i_tx_in07; -wire [MAX_DATA_WIDTH:0] i_tx_in08; -wire [MAX_DATA_WIDTH:0] i_tx_in09; -wire [MAX_DATA_WIDTH:0] i_tx_in10; -wire [MAX_DATA_WIDTH:0] i_tx_in11; -wire [MAX_DATA_WIDTH:0] i_tx_in12; -wire [MAX_DATA_WIDTH:0] i_tx_in13; -wire [MAX_DATA_WIDTH:0] i_tx_in14; -wire [MAX_DATA_WIDTH:0] i_tx_in15; -wire [MAX_DATA_WIDTH:0] i_tx_in16; -wire [MAX_DATA_WIDTH:0] i_tx_in17; -wire [359:0] tx_in_int; // 360 = 18 channels * 20 bits (18=maximum number of channels, 20=maximum channel width) - -// INITIAL BLOCK -initial -begin - - // Begin of parameter checking - if (number_of_channels <= 0) - begin - $display("ERROR: The number_of_channels parameter must be greater than 0"); - $stop; - end - - if (!(((deserialization_factor >= 3 ) && (deserialization_factor <= 12)) || - (deserialization_factor == 14) || (deserialization_factor == 16) || - (deserialization_factor == 18) || (deserialization_factor == 20))) - begin - $display("ERROR: Illegal value for deserialization_factor parameter (%d) -- value ", deserialization_factor); - $display(" must be in the range 3 to 12, inclusive, or must be one of 14, 16, 18, or 20"); - $stop; - end - - - // End of parameter checking - -end - - - -assign tx_aclr_pulldown = tx_aclr; -assign tx_pll_aclr_pulldown = tx_pll_aclr; -assign tx_fifo_wren_pullup = tx_fifo_wren; - -// COMPONENT INSTANTIATION - - //------------------------------------------------------------- - // Instantiate HSSI_TX - maximum of 18 channels - hssi_tx tx00 ( - .datain (txin00), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[00]), .clkout (w_tx_clkout[00]) ); - defparam - tx00.channel_width = deserialization_factor; - - hssi_tx tx01 ( - .datain (txin01), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[01]), .clkout (w_tx_clkout[01]) ); - defparam - tx01.channel_width = deserialization_factor; - - hssi_tx tx02 ( - .datain (txin02), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[02]), .clkout (w_tx_clkout[02]) ); - defparam - tx02.channel_width = deserialization_factor; - - hssi_tx tx03 ( - .datain (txin03), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[03]), .clkout (w_tx_clkout[03]) ); - defparam - tx03.channel_width = deserialization_factor; - - hssi_tx tx04 ( - .datain (txin04), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[04]), .clkout (w_tx_clkout[04]) ); - defparam - tx04.channel_width = deserialization_factor; - - hssi_tx tx05 ( - .datain (txin05), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[05]), .clkout (w_tx_clkout[05]) ); - defparam - tx05.channel_width = deserialization_factor; - - hssi_tx tx06 ( - .datain (txin06), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[06]), .clkout (w_tx_clkout[06]) ); - defparam - tx06.channel_width = deserialization_factor; - - hssi_tx tx07 ( - .datain (txin07), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[07]), .clkout (w_tx_clkout[07]) ); - defparam - tx07.channel_width = deserialization_factor; - - hssi_tx tx08 ( - .datain (txin08), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[08]), .clkout (w_tx_clkout[08]) ); - defparam - tx08.channel_width = deserialization_factor; - - hssi_tx tx09 ( - .datain (txin09), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[09]), .clkout (w_tx_clkout[09]) ); - defparam - tx09.channel_width = deserialization_factor; - - hssi_tx tx10 ( - .datain (txin10), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[10]), .clkout (w_tx_clkout[10]) ); - defparam - tx10.channel_width = deserialization_factor; - - hssi_tx tx11 ( - .datain (txin11), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[11]), .clkout (w_tx_clkout[11]) ); - defparam - tx11.channel_width = deserialization_factor; - - hssi_tx tx12 ( - .datain (txin12), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[12]), .clkout (w_tx_clkout[12]) ); - defparam - tx12.channel_width = deserialization_factor; - - hssi_tx tx13 ( - .datain (txin13), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[13]), .clkout (w_tx_clkout[13]) ); - defparam - tx13.channel_width = deserialization_factor; - - hssi_tx tx14 ( - .datain (txin14), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[14]), .clkout (w_tx_clkout[14]) ); - defparam - tx14.channel_width = deserialization_factor; - - hssi_tx tx15 ( - .datain (txin15), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[15]), .clkout (w_tx_clkout[15]) ); - defparam - tx15.channel_width = deserialization_factor; - - hssi_tx tx16 ( - .datain (txin16), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[16]), .clkout (w_tx_clkout[16]) ); - defparam - tx16.channel_width = deserialization_factor; - - hssi_tx tx17 ( - .datain (txin17), .clk (w_tx_clk), .areset (tx_aclr_pulldown), - .dataout (w_tx_out[17]), .clkout (w_tx_clkout[17]) ); - defparam - tx17.channel_width = deserialization_factor; - - - //--------------------------------------------------------- - // Instantiate HSSI_PLL - use the same PLL for all channels - - hssi_pll pll0 ( - .clk (tx_inclock), .areset (tx_pll_aclr_pulldown), - .clk0 (w_tx_clk), .clk1 (w_tx_clk1), .locked (i_tx_pll_locked) ); - defparam - pll0.clk0_multiply_by = inclock_boost, - pll0.input_frequency = inclock_period; - - - //-------------------------------------------------------- - // Instantiate HSSI_FIFO - maximum of 18 channels - - hssi_fifo fifo00 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[00]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[00]), .datain (i_tx_in00), - .overflow (i_tx_full[00]), .empty (i_tx_empty[00]), - .dataout (i_fifo_out00) ); - defparam - fifo00.channel_width = deserialization_factor; - - hssi_fifo fifo01 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[01]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[01]), .datain (i_tx_in01), - .overflow (i_tx_full[01]), .empty (i_tx_empty[01]), - .dataout (i_fifo_out01) ); - defparam - fifo01.channel_width = deserialization_factor; - - hssi_fifo fifo02 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[02]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[02]), .datain (i_tx_in02), - .overflow (i_tx_full[02]), .empty (i_tx_empty[02]), - .dataout (i_fifo_out02) ); - defparam - fifo02.channel_width = deserialization_factor; - - hssi_fifo fifo03 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[03]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[03]), .datain (i_tx_in03), - .overflow (i_tx_full[03]), .empty (i_tx_empty[03]), - .dataout (i_fifo_out03) ); - defparam - fifo03.channel_width = deserialization_factor; - - hssi_fifo fifo04 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[04]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[04]), .datain (i_tx_in04), - .overflow (i_tx_full[04]), .empty (i_tx_empty[04]), - .dataout (i_fifo_out04) ); - defparam - fifo04.channel_width = deserialization_factor; - - hssi_fifo fifo05 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[05]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[05]), .datain (i_tx_in05), - .overflow (i_tx_full[05]), .empty (i_tx_empty[05]), - .dataout (i_fifo_out05) ); - defparam - fifo05.channel_width = deserialization_factor; - - hssi_fifo fifo06 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[06]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[06]), .datain (i_tx_in06), - .overflow (i_tx_full[06]), .empty (i_tx_empty[06]), - .dataout (i_fifo_out06) ); - defparam - fifo06.channel_width = deserialization_factor; - - hssi_fifo fifo07 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[07]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[07]), .datain (i_tx_in07), - .overflow (i_tx_full[07]), .empty (i_tx_empty[07]), - .dataout (i_fifo_out07) ); - defparam - fifo07.channel_width = deserialization_factor; - - hssi_fifo fifo08 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[08]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[08]), .datain (i_tx_in08), - .overflow (i_tx_full[08]), .empty (i_tx_empty[08]), - .dataout (i_fifo_out08) ); - defparam - fifo08.channel_width = deserialization_factor; - - hssi_fifo fifo09 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[09]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[09]), .datain (i_tx_in09), - .overflow (i_tx_full[09]), .empty (i_tx_empty[09]), - .dataout (i_fifo_out09) ); - defparam - fifo09.channel_width = deserialization_factor; - - hssi_fifo fifo10 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[10]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[10]), .datain (i_tx_in10), - .overflow (i_tx_full[10]), .empty (i_tx_empty[10]), - .dataout (i_fifo_out10) ); - defparam - fifo10.channel_width = deserialization_factor; - - hssi_fifo fifo11 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[11]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[11]), .datain (i_tx_in11), - .overflow (i_tx_full[11]), .empty (i_tx_empty[11]), - .dataout (i_fifo_out11) ); - defparam - fifo11.channel_width = deserialization_factor; - - hssi_fifo fifo12 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[12]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[12]), .datain (i_tx_in12), - .overflow (i_tx_full[12]), .empty (i_tx_empty[12]), - .dataout (i_fifo_out12) ); - defparam - fifo12.channel_width = deserialization_factor; - - hssi_fifo fifo13 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[13]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[13]), .datain (i_tx_in13), - .overflow (i_tx_full[13]), .empty (i_tx_empty[13]), - .dataout (i_fifo_out13) ); - defparam - fifo13.channel_width = deserialization_factor; - - hssi_fifo fifo14 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[14]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[14]), .datain (i_tx_in14), - .overflow (i_tx_full[14]), .empty (i_tx_empty[14]), - .dataout (i_fifo_out14) ); - defparam - fifo14.channel_width = deserialization_factor; - - hssi_fifo fifo15 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[15]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[15]), .datain (i_tx_in15), - .overflow (i_tx_full[15]), .empty (i_tx_empty[15]), - .dataout (i_fifo_out15) ); - defparam - fifo15.channel_width = deserialization_factor; - - hssi_fifo fifo16 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[16]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[16]), .datain (i_tx_in16), - .overflow (i_tx_full[16]), .empty (i_tx_empty[16]), - .dataout (i_fifo_out16) ); - defparam - fifo16.channel_width = deserialization_factor; - - hssi_fifo fifo17 ( - .clk0 (tx_coreclock), .we (tx_fifo_wren_pullup[17]), - .reset (tx_aclr_pulldown), .re (1'b1), - .clk1 (w_tx_clkout[17]), .datain (i_tx_in17), - .overflow (i_tx_full[17]), .empty (i_tx_empty[17]), - .dataout (i_fifo_out17) ); - defparam - fifo17.channel_width = deserialization_factor; - - - //-------------------------- - // Inputs - - assign tx_in_int[deserialization_factor*number_of_channels-1: 0] = - tx_in[deserialization_factor*number_of_channels-1:0]; - - assign i_tx_in00 = - tx_in_int[(01*deserialization_factor)-1:00*deserialization_factor]; - assign i_tx_in01 = - tx_in_int[(02*deserialization_factor)-1:01*deserialization_factor]; - assign i_tx_in02 = - tx_in_int[(03*deserialization_factor)-1:02*deserialization_factor]; - assign i_tx_in03 = - tx_in_int[(04*deserialization_factor)-1:03*deserialization_factor]; - assign i_tx_in04 = - tx_in_int[(05*deserialization_factor)-1:04*deserialization_factor]; - assign i_tx_in05 = - tx_in_int[(06*deserialization_factor)-1:05*deserialization_factor]; - assign i_tx_in06 = - tx_in_int[(07*deserialization_factor)-1:06*deserialization_factor]; - assign i_tx_in07 = - tx_in_int[(08*deserialization_factor)-1:07*deserialization_factor]; - assign i_tx_in08 = - tx_in_int[(09*deserialization_factor)-1:08*deserialization_factor]; - assign i_tx_in09 = - tx_in_int[(10*deserialization_factor)-1:09*deserialization_factor]; - assign i_tx_in10 = - tx_in_int[(11*deserialization_factor)-1:10*deserialization_factor]; - assign i_tx_in11 = - tx_in_int[(12*deserialization_factor)-1:11*deserialization_factor]; - assign i_tx_in12 = - tx_in_int[(13*deserialization_factor)-1:12*deserialization_factor]; - assign i_tx_in13 = - tx_in_int[(14*deserialization_factor)-1:13*deserialization_factor]; - assign i_tx_in14 = - tx_in_int[(15*deserialization_factor)-1:14*deserialization_factor]; - assign i_tx_in15 = - tx_in_int[(16*deserialization_factor)-1:15*deserialization_factor]; - assign i_tx_in16 = - tx_in_int[(17*deserialization_factor)-1:16*deserialization_factor]; - assign i_tx_in17 = - tx_in_int[(18*deserialization_factor)-1:17*deserialization_factor]; - - -//------------------------------------------------------------------ -// select the input for hssi_tx - from FIFO or from data input directly -assign txin00 = (bypass_fifo == "OFF") ? i_fifo_out00 : i_tx_in00; -assign txin01 = (bypass_fifo == "OFF") ? i_fifo_out01 : i_tx_in01; -assign txin02 = (bypass_fifo == "OFF") ? i_fifo_out02 : i_tx_in02; -assign txin03 = (bypass_fifo == "OFF") ? i_fifo_out03 : i_tx_in03; -assign txin04 = (bypass_fifo == "OFF") ? i_fifo_out04 : i_tx_in04; -assign txin05 = (bypass_fifo == "OFF") ? i_fifo_out05 : i_tx_in05; -assign txin06 = (bypass_fifo == "OFF") ? i_fifo_out06 : i_tx_in06; -assign txin07 = (bypass_fifo == "OFF") ? i_fifo_out07 : i_tx_in07; -assign txin08 = (bypass_fifo == "OFF") ? i_fifo_out08 : i_tx_in08; -assign txin09 = (bypass_fifo == "OFF") ? i_fifo_out09 : i_tx_in09; -assign txin10 = (bypass_fifo == "OFF") ? i_fifo_out10 : i_tx_in10; -assign txin11 = (bypass_fifo == "OFF") ? i_fifo_out11 : i_tx_in11; -assign txin12 = (bypass_fifo == "OFF") ? i_fifo_out12 : i_tx_in12; -assign txin13 = (bypass_fifo == "OFF") ? i_fifo_out13 : i_tx_in13; -assign txin14 = (bypass_fifo == "OFF") ? i_fifo_out14 : i_tx_in14; -assign txin15 = (bypass_fifo == "OFF") ? i_fifo_out15 : i_tx_in15; -assign txin16 = (bypass_fifo == "OFF") ? i_fifo_out16 : i_tx_in16; -assign txin17 = (bypass_fifo == "OFF") ? i_fifo_out17 : i_tx_in17; - -//----------------------------------------------- -// assign the correct signals to the output ports - -assign tx_out = (deserialization_factor > 1) ? - w_tx_out[number_of_channels-1:0] - : tx_in; - -assign tx_outclock = (deserialization_factor > 1) ? - w_tx_clkout[00] - : tx_inclock; - -assign tx_full = (deserialization_factor == 1) ? - 0 - : (bypass_fifo == "OFF") ? - ~i_tx_full[number_of_channels-1:0] - : {number_of_channels{1'bX}}; - -assign tx_empty = (deserialization_factor == 1) ? - 0 - : (bypass_fifo == "OFF") ? - ~i_tx_empty[number_of_channels-1:0] - : {number_of_channels{1'bX}}; - -assign tx_pll_locked = i_tx_pll_locked; - -endmodule // altcdr_tx - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : altlvds_rx -// -// Description : Low Voltage Differential Signaling (LVDS) receiver -// megafunction. The altlvds_rx megafunction implements a -// deserialization receiver. LVDS is a high speed IO interface -// that uses inputs without a reference voltage. LVDS uses -// two wires carrying differential values to create a single -// channel. These wires are connected to two pins on -// supported device to create a single LVDS channel -// -// Limitation : Only available for APEX20KE, APEXII, MERCURY, STRATIX, -// STRATIX GX, Stratix II, Cyclone and Cyclone II families. -// -// Results expected: output clock, deserialized output data and pll locked -// signal. -// -//END_MODULE_NAME---------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altlvds_rx ( - rx_in, - rx_inclock, - rx_enable, - rx_deskew, - rx_pll_enable, - rx_data_align, - rx_reset, - rx_dpll_reset, - rx_dpll_hold, - rx_dpll_enable, - rx_fifo_reset, - rx_channel_data_align, - rx_cda_reset, - rx_coreclk, - pll_areset, - rx_out, - rx_outclock, - rx_locked, - rx_dpa_locked, - rx_cda_max -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - parameter registered_output = "ON"; - parameter inclock_period = 10000; - parameter inclock_boost = deserialization_factor; - parameter cds_mode = "UNUSED"; - parameter intended_device_family = "APEX20KE"; - parameter input_data_rate =0; - parameter inclock_data_alignment = "EDGE_ALIGNED"; - parameter registered_data_align_input = "ON"; - parameter common_rx_tx_pll = "ON"; - parameter enable_dpa_mode = "OFF"; - parameter enable_dpa_fifo = "ON"; - parameter use_dpll_rawperror = "OFF"; - parameter use_coreclock_input = "OFF"; - parameter dpll_lock_count = 0; - parameter dpll_lock_window = 0; - parameter outclock_resource = "AUTO"; - parameter data_align_rollover = deserialization_factor; - parameter lose_lock_on_one_change ="OFF" ; - parameter reset_fifo_at_first_lock ="ON" ; - parameter use_external_pll = "OFF"; - parameter implement_in_les = "OFF"; - parameter port_rx_data_align = "PORT_CONNECTIVITY"; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "altlvds_rx"; - - // Specifies whether the source of the input clock is from a PLL - parameter clk_src_is_pll = "off"; - -// LOCAL PARAMETER DECLARATION - - // A APEX20KE type of LVDS? - parameter APEX20KE_RX_STYLE = ((intended_device_family == "APEX20KE") || - (intended_device_family == "APEX20KC") || - (intended_device_family == "EXCALIBUR_ARM") || - (intended_device_family == "EXCALIBUR_MIPS")) - ? 1 : 0; - - // A APEXII type of LVDS? - parameter APEXII_RX_STYLE = ((intended_device_family == "APEXII") || - (intended_device_family == "APEX II")) - ? 1 : 0; - - // A MERCURY type of LVDS? - parameter MERCURY_RX_STYLE = ((intended_device_family == "MERCURY") || - (intended_device_family == "Mercury")) - ? 1 : 0; - - // A STRATIX type of LVDS? - parameter STRATIX_RX_STYLE = (((intended_device_family == "Stratix") || - (intended_device_family == "STRATIX") || - (intended_device_family == "HardCopy Stratix") || - (intended_device_family == "HARDCOPY STRATIX") || - (intended_device_family == "hardcopy stratix") || - (intended_device_family == "HardcopyStratix") || - (intended_device_family == "HARDCOPYSTRATIX") || - (intended_device_family == "hardcopystratix")) || - (((intended_device_family == "STRATIXGX") || - (intended_device_family == "STRATIX-GX") || - (intended_device_family == "Stratix GX")) && - (enable_dpa_mode == "OFF"))) - ? 1 : 0; - - // A STRATIXGX DPA type of LVDS? - parameter STRATIXGX_DPA_RX_STYLE = - (((intended_device_family == "STRATIXGX") || - (intended_device_family == "STRATIX-GX") || - (intended_device_family == "Stratix GX")) && - (enable_dpa_mode == "ON")) - ? 1 : 0; - - // A STRATIX II type of LVDS? - parameter STRATIXII_RX_STYLE = ((intended_device_family == "Stratix II") || - (intended_device_family == "StratixII") || - (intended_device_family == "HardCopy II") || - (intended_device_family == "HardCopyII") || - (intended_device_family == "HARDCOPY II") || - (intended_device_family == "HARDCOPYII") || - (intended_device_family == "hardcopy ii") || - (intended_device_family == "hardcopyii") || - (intended_device_family == "Stratix II GX") || - (intended_device_family == "STRATIX II GX") || - (intended_device_family == "stratix ii gx") || - (intended_device_family == "StratixIIGX") || - (intended_device_family == "STRATIXIIGX") || - (intended_device_family == "stratixiigx")) - ? 1 : 0; - - // A Cyclone type of LVDS? - parameter CYCLONE_RX_STYLE = ((intended_device_family == "Cyclone") || - (intended_device_family == "CYCLONE") || - (intended_device_family == "cyclone")) - ? 1 : 0; - - // A Cyclone II type of LVDS? - parameter CYCLONEII_RX_STYLE = ((intended_device_family == "Cyclone II") || - (intended_device_family == "CYCLONE II") || - (intended_device_family == "cyclone ii") || - (intended_device_family == "Cycloneii") || - (intended_device_family == "CYCLONEII") || - (intended_device_family == "cycloneii")) - ? 1 : 0; - - // Is the device family has flexible LVDS? - parameter FAMILY_HAS_FLEXIBLE_LVDS = ((CYCLONE_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1) || - (((STRATIX_RX_STYLE == 1) || - (STRATIXII_RX_STYLE == 1)) && - (implement_in_les == "ON"))) - ? 1 : 0; - - // Is the family has Stratix style PLL - parameter FAMILY_HAS_STRATIX_STYLE_PLL = ((STRATIX_RX_STYLE == 1) || - (STRATIXGX_DPA_RX_STYLE == 1) || - (CYCLONE_RX_STYLE == 1)) - ? 1 : 0; - - // Is the family has Stratix style PLL - parameter FAMILY_HAS_STRATIXII_STYLE_PLL = ((STRATIXII_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1)) - ? 1 : 0; - - // Parameter to check whether the selected lvds trasmitter use hold register - // or not - parameter RX_NEED_HOLD_REG = (((APEX20KE_RX_STYLE == 1) && - (deserialization_factor == 4 )) || - ((APEXII_RX_STYLE == 1) && - (deserialization_factor == 4)) || - ((MERCURY_RX_STYLE == 1) && - (deserialization_factor > 2) && - (deserialization_factor < 7))) - ? 1 : 0; - - // calculate clock boost for device family other than STRATIX, STRATIX GX - // and STRATIX II - parameter INT_CLOCK_BOOST = (APEX20KE_RX_STYLE == 1) - ? deserialization_factor : - ( (inclock_boost == 0) - ? deserialization_factor - : inclock_boost); - - // M value for stratix/stratix II/Cyclone/Cyclone II PLL - parameter PLL_M_VALUE = (((input_data_rate * inclock_period) - + (5 * 100000)) / 1000000); - - // D value for Stratix/Stratix II/Cyclone/Cyclone II PLL - parameter PLL_D_VALUE = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((input_data_rate !=0) && (inclock_period !=0) - ? 2 - : 1) - : 1; - - // calculate clock boost for STRATIX, STRATIX GX and STRATIX II - parameter STRATIX_INCLOCK_BOOST = ((input_data_rate !=0) && - (inclock_period !=0)) - ? PLL_M_VALUE : - ((inclock_boost == 0) - ? deserialization_factor - : inclock_boost); - - // phase_shift delay. Add 0.5 to the calculated result to round up result to - // the nearest integer. - parameter PHASE_SHIFT = - (inclock_data_alignment == "EDGE_ALIGNED") - ? 0 : - (inclock_data_alignment == "CENTER_ALIGNED") - ? (0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "45_DEGREES") - ? (0.125 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "90_DEGREES") - ? (0.25 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "135_DEGREES") - ? (0.375 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "180_DEGREES") - ? (0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "225_DEGREES") - ? (0.625 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "270_DEGREES") - ? (0.75 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 : - (inclock_data_alignment == "315_DEGREES") - ? (0.875 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5 - : 0; - - // parameter for Stratix II inclock phase shift. - parameter STXII_PHASE_SHIFT = PHASE_SHIFT - - (0.5 * inclock_period / STRATIX_INCLOCK_BOOST); - - parameter REGISTER_WIDTH = deserialization_factor * number_of_channels; - - // input clock period for PLL. - parameter CLOCK_PERIOD = (deserialization_factor > 2) - ? inclock_period - : 10000; - -// INPUT PORT DECLARATION - input [number_of_channels -1 :0] rx_in; - input rx_inclock; - input rx_enable; - input rx_deskew; - input rx_pll_enable; - input rx_data_align; - input [number_of_channels -1 :0] rx_reset; - input [number_of_channels -1 :0] rx_dpll_reset; - input [number_of_channels -1 :0] rx_dpll_hold; - input [number_of_channels -1 :0] rx_dpll_enable; - input [number_of_channels -1 :0] rx_fifo_reset; - input [number_of_channels -1 :0] rx_channel_data_align; - input [number_of_channels -1 :0] rx_cda_reset; - input [number_of_channels -1 :0] rx_coreclk; - input pll_areset; - -// OUTPUT PORT DECLARATION - output [REGISTER_WIDTH -1: 0] rx_out; - output rx_outclock; - output rx_locked; - output [number_of_channels -1: 0] rx_dpa_locked; - output [number_of_channels -1: 0] rx_cda_max; - - -// INTERNAL REGISTERS DECLARATION - reg [REGISTER_WIDTH -1 : 0] pattern; - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] rx_parallel_load_reg; - reg [REGISTER_WIDTH -1 : 0] rx_out_reg; - reg [REGISTER_WIDTH -1 : 0] rx_out_hold; - reg [number_of_channels-1 : 0] deskew_done; - reg calibrate; - reg fb; - reg rx_mercury_slow_clock; - reg [deserialization_factor-1 : 0] temp; - reg [9 : 0] deskew_pattern; - reg [number_of_channels -1 : 0] rx_reg_clk_pre; - reg rx_data_align_reg; - - // for x2 mode (deserialization_factor = 2) - reg [REGISTER_WIDTH -1 : 0] rx_ddio_in; - reg [number_of_channels -1 : 0] rx_in_latched; - -// INTERNAL WIRE DECLARATION - wire [REGISTER_WIDTH -1 : 0] rx_out_int; - wire [REGISTER_WIDTH -1 : 0] stratix_dataout; - wire [REGISTER_WIDTH -1 : 0] stratixgx_dataout; - wire [REGISTER_WIDTH -1 : 0] stratixii_dataout; - wire [REGISTER_WIDTH -1 : 0] flvds_dataout; - wire [number_of_channels -1 : 0] stratixgx_dpa_locked; - wire [number_of_channels -1 : 0] stratixii_dpa_locked; - wire rx_fastclk; - wire rx_slowclk; - wire rx_locked_int; - wire rx_outclk_int; - wire rx_hold_clk; - wire rx_data_align_clk; - wire [number_of_channels -1 : 0] rx_reg_clk; - wire altclklock_inclock; - wire altclklock_fastclk; - wire altclklock_slowclk; - wire altclklock_locked; - wire[1:0] stratix_pll_inclock; - wire[1:0] stratixii_pll_inclock; - wire[5:0] stratix_pll_outclock; - wire[5:0] stratixii_pll_outclock; - wire stratix_pll_enable; - wire stratixii_pll_enable; - wire stratix_pll_areset; - wire stratixii_pll_areset; - wire stratixii_sclkout0; - wire stratixii_sclkout1; - wire stratix_locked; - wire stratixii_locked; - wire stratix_enable0; - wire stratix_enable1; - wire stratixii_enable0; - wire stratixii_enable1; - wire unused_clk2; - wire unused_clk_ext; - wire stratix_fastclk; - wire stratix_slowclk; - wire stratixgx_fastclk; - wire stratixgx_slowclk; - wire[number_of_channels -1 :0] stratixgx_coreclk; - wire stratixii_fastclk; - wire stratixii_enable; - wire flvds_fastclk; - wire flvds_slowclk; - wire flvds_syncclk; - wire rx_data_align_int; - wire rx_data_align_pulldown; - wire[number_of_channels -1 :0] rx_channel_data_align_int; - -// INTERNAL TRI DECLARATION - tri0 rx_deskew; - tri1 rx_pll_enable; - tri0[number_of_channels -1 :0] rx_reset; - tri0[number_of_channels -1 :0] rx_dpll_reset; - tri0[number_of_channels -1 :0] rx_dpll_hold; - tri1[number_of_channels -1 :0] rx_dpll_enable; - tri0[number_of_channels -1 :0] rx_fifo_reset; - tri0[number_of_channels -1 :0] rx_cda_reset; - tri0[number_of_channels -1 :0] rx_coreclk; - tri0 pll_areset; - -// LOCAL INTEGER DECLARATION - integer count [number_of_channels-1 : 0]; - integer sample; - integer i; - integer i1; - integer i2; - integer i3; - integer i4; - integer i5; - integer j; - integer j1; - integer x; - integer posedge_count; - integer negedge_count; - integer rxin_cnt; - integer start_data; - integer check_deskew_pattern; - -// COMPONENT INSTANTIATIONS - ALTERA_DEVICE_FAMILIES dev (); - -// FUNCTION DECLARATIONS - - // check whether the same pattern is found in the given input data - // for a particular channel. - function pattern_match; - input input_data, deskrew_pattern, dfactor, channel_num; - integer dfactor, channel_num; - reg[(20*10)-1 : 0] input_data; - reg[9 : 0] deskrew_pattern; - reg[9 : 0] input_pattern; - integer i; - begin - - pattern_match = 1; - - for (i = 0; i < deserialization_factor; i = i + 1) - begin - if(input_data[dfactor*channel_num +i] !== deskrew_pattern[i]) - begin - pattern_match = 0; - end - end - end - endfunction // pattern_match - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - fb = 1'b1; - rxin_cnt = 0; - negedge_count = 0; - posedge_count = 0; - start_data = 0; - rx_data_align_reg = 1'b0; - rx_mercury_slow_clock = 1'b0; - calibrate = 0; - deskew_done = {number_of_channels{1'b1}}; - rx_in_latched = {number_of_channels{1'b0}}; - - for (i = 0; i < number_of_channels; i = i + 1) - count[i] = 0; - - rx_out_reg = {REGISTER_WIDTH{1'b0}}; - rx_out_hold = {REGISTER_WIDTH{1'b0}}; - rx_shift_reg = {REGISTER_WIDTH{1'b0}}; - rx_parallel_load_reg = {REGISTER_WIDTH{1'b0}}; - rx_ddio_in = {REGISTER_WIDTH{1'b0}}; - - // Check for illegal mode settings - if ((APEX20KE_RX_STYLE == 1) && (deserialization_factor != 1) && - (deserialization_factor != 4) && (deserialization_factor != 7) && - (deserialization_factor != 8)) - begin - $display ($time, "ps Error: APEX20KE does not support the specified deserialization factor!"); - $finish; - end - else if ((MERCURY_RX_STYLE == 1) && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (((deserialization_factor > 12) && (deserialization_factor != 14) && - (deserialization_factor != 16) && (deserialization_factor != 18) && - (deserialization_factor != 20)) || (deserialization_factor<3))) - begin - $display ($time, "ps Error: MERCURY does not support the specified deserialization factor!"); - $finish; - end - else if ((APEXII_RX_STYLE == 1) && - ((deserialization_factor > 10) || (deserialization_factor < 4)) && - (deserialization_factor != 1) && (deserialization_factor != 2)) - begin - $display ($time, "ps Error: APEXII does not support the specified deserialization factor!"); - $finish; - end - else if ((STRATIX_RX_STYLE == 1) && - (deserialization_factor != 1) && (deserialization_factor != 2) && - ((deserialization_factor > 10) || (deserialization_factor < 4))) - begin - $display ($time, "ps Error: STRATIX or STRATIXGX in non DPA mode does not support the specified deserialization factor!"); - $finish; - end - else if ((STRATIXGX_DPA_RX_STYLE == 1) && (deserialization_factor != 8) && (deserialization_factor != 10)) - begin - $display ($time, "ps Error: STRATIXGX in DPA mode does not support the specified deserialization factor!"); - $finish; - end - - if ((STRATIXII_RX_STYLE == 1) && - (deserialization_factor > 10)) - begin - $display ($time, "ps Error: STRATIX II does not support the specified deserialization factor!"); - $finish; - end - - if ((STRATIXII_RX_STYLE == 1) && - (data_align_rollover > 11)) - begin - $display ($time, "ps Error: STRATIX II does not support data align rollover values > 11 !"); - $finish; - end - - if (CYCLONE_RX_STYLE == 1) - begin - if ((use_external_pll == "ON") && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (deserialization_factor != 4) && (deserialization_factor != 6) && - (deserialization_factor != 8) && (deserialization_factor != 10)) - begin - $display ($time, "ps Error: Cyclone does not support the specified deserialization factor when use_external_pll is 'ON'!"); - $finish; - end - else if ((deserialization_factor > 10) || (deserialization_factor == 3)) - begin - $display ($time, "ps Error: Cyclone does not support the specified deserialization factor when use_external_pll is 'OFF'!"); - $finish; - end - end - - if (CYCLONEII_RX_STYLE == 1) - begin - if ((use_external_pll == "ON") && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (deserialization_factor != 4) && (deserialization_factor != 6) && - (deserialization_factor != 8) && (deserialization_factor != 10)) - begin - $display ($time, "ps Error: Cyclone II does not support the specified deserialization factor when use_external_pll is 'ON'!"); - $finish; - end - else if ((deserialization_factor > 10) || (deserialization_factor == 3)) - begin - $display ($time, "ps Error: Cyclone II does not support the specified deserialization factor when use_external_pll is 'OFF'!"); - $finish; - end - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $finish; - end - - // Initialise calibration pattern variables. Only for APEX20KE and APEXII - if ((APEX20KE_RX_STYLE == 1) && - ((deserialization_factor == 4) || (deserialization_factor == 7) || - (deserialization_factor == 8))) - begin - check_deskew_pattern = 1; - case (deserialization_factor) - 8: deskew_pattern[7:0] = 8'b00111100; - 7: deskew_pattern[6:0] = 7'b0011100; - 4: deskew_pattern[3:0] = 4'b1100; - default ; - endcase - end - else - if (((APEXII_RX_STYLE == 1)) && (deserialization_factor <= 10) && - (deserialization_factor >= 4)) - begin - check_deskew_pattern = 1; - if (cds_mode == "SINGLE_BIT") - begin - case (deserialization_factor) - 10: deskew_pattern[9:0] = 10'b0000011111; - 9: deskew_pattern[8:0] = 9'b000001111; - 8: deskew_pattern[7:0] = 8'b00001111; - 7: deskew_pattern[6:0] = 7'b0000111; - 6: deskew_pattern[5:0] = 6'b000111; - 5: deskew_pattern[4:0] = 5'b00011; - 4: deskew_pattern[3:0] = 4'b0011; - default ; - endcase - end - else - begin - case (deserialization_factor) - 10: deskew_pattern[9:0] = 10'b0101010101; - 9: deskew_pattern[8:0] = 9'b010101010; - 8: deskew_pattern[7:0] = 8'b01010101; - 7: deskew_pattern[6:0] = 7'b0101010; - 6: deskew_pattern[5:0] = 6'b010101; - 5: deskew_pattern[4:0] = 5'b01010; - 4: deskew_pattern[3:0] = 4'b0101; - default ; - endcase - end - end - else check_deskew_pattern = 0; - - end //INITIALIZATION - - // NCSIM will only assigns 1'bZ to unconnected port at time 0fs + 1 - initial #0 - begin - if ((STRATIXII_RX_STYLE == 1) && - (rx_channel_data_align === {number_of_channels{1'bZ}}) && - (rx_data_align !== 1'bZ)) - begin - $display("Warning : Data alignment on Stratix II devices introduces one bit of latency for each assertion of the data alignment signal. In comparison, Stratix and Stratix GX devices remove one bit of latency for each assertion."); - end - end - -// COMPONENT INSTANTIATIONS - - // pll for device families other than Stratix, Stratix GX and Stratix II - altclklock u0 ( - .inclock(altclklock_inclock), - .inclocken(rx_pll_enable), - .fbin(fb), - .clock0(altclklock_fastclk), - .clock1(altclklock_slowclk), - .clock2(unused_clk2), - .clock_ext(unused_clk_ext), - .locked(altclklock_locked)); - - defparam - u0.inclock_period = CLOCK_PERIOD, - u0.clock0_boost = INT_CLOCK_BOOST, - u0.clock1_boost = INT_CLOCK_BOOST, - u0.clock1_divide = deserialization_factor, - u0.valid_lock_cycles = (APEXII_RX_STYLE == 1) ? 1 : - (MERCURY_RX_STYLE == 1) ? 3 : 5, - u0.intended_device_family = ((APEX20KE_RX_STYLE == 1 ) || - (APEXII_RX_STYLE == 1 ) || - (MERCURY_RX_STYLE == 1 )) - ? intended_device_family - : "APEX20KE"; - - // pll for Stratix and Stratix GX - MF_stratix_pll u1 ( - .inclk(stratix_pll_inclock), // Required - .ena(stratix_pll_enable), - .areset(stratix_pll_areset), - .clkena(6'b111111), - .clk (stratix_pll_outclock), - .locked(stratix_locked), - .fbin(1'b1), - .clkswitch(1'b0), - .pfdena(1'b1), - .extclkena(4'b0), - .scanclk(1'b0), - .scanaclr(1'b0), - .scandata(1'b0), - .comparator(rx_data_align_int), - .extclk(), - .clkbad(), - .enable0(stratix_enable0), - .enable1(stratix_enable1), - .activeclock(), - .clkloss(), - .scandataout()); - - defparam - u1.pll_type = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? "flvds" - : "lvds", - u1.inclk0_input_frequency = CLOCK_PERIOD, - u1.inclk1_input_frequency = CLOCK_PERIOD, - u1.valid_lock_multiplier = 1, - u1.clk0_multiply_by = STRATIX_INCLOCK_BOOST, - u1.clk0_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE - : 1, - u1.clk1_multiply_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? STRATIX_INCLOCK_BOOST - : 1, - u1.clk1_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? PLL_D_VALUE*deserialization_factor - : 1, - u1.clk2_multiply_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? STRATIX_INCLOCK_BOOST *2 - : STRATIX_INCLOCK_BOOST, - u1.clk2_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((deserialization_factor%2 == 0) - ? PLL_D_VALUE*deserialization_factor/2 - : PLL_D_VALUE*deserialization_factor) - : deserialization_factor, - u1.clk0_phase_shift_num = PHASE_SHIFT, - u1.clk1_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? PHASE_SHIFT - : 1, - u1.clk2_phase_shift_num = PHASE_SHIFT, - u1.simulation_type = "functional", - u1.m = 0; - - - // pll for Stratix II - MF_stratixii_pll u2 ( - .inclk(stratixii_pll_inclock), // Required - .ena(stratixii_pll_enable), - .areset(stratixii_pll_areset), - .clk (stratixii_pll_outclock ), - .locked(stratixii_locked), - .fbin(1'b1), - .clkswitch(1'b0), - .pfdena(1'b1), - .scanclk(1'b0), - .scanread(1'b0), - .scanwrite(1'b0), - .scandata(1'b0), - .testin(4'b0), - .clkbad(), - .enable0(stratixii_enable0), - .enable1(stratixii_enable1), - .activeclock(), - .clkloss(), - .scandataout(), - .scandone(), - .sclkout({stratixii_sclkout1, stratixii_sclkout0}), - .testupout(), - .testdownout()); - - defparam - u2.pll_type = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? "flvds" - : "lvds", - u2.vco_multiply_by = STRATIX_INCLOCK_BOOST, - u2.vco_divide_by = 1, - u2.inclk0_input_frequency = CLOCK_PERIOD, - u2.inclk1_input_frequency = CLOCK_PERIOD, - u2.clk0_multiply_by = STRATIX_INCLOCK_BOOST, - u2.clk0_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE - : deserialization_factor, - u2.clk1_multiply_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? STRATIX_INCLOCK_BOOST - : 1, - u2.clk1_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? PLL_D_VALUE*deserialization_factor - : 1, - u2.clk2_multiply_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? STRATIX_INCLOCK_BOOST *2 - : STRATIX_INCLOCK_BOOST, - u2.clk2_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((deserialization_factor%2 == 0) - ? PLL_D_VALUE*deserialization_factor/2 - : PLL_D_VALUE*deserialization_factor) - : deserialization_factor, - u2.clk0_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_SHIFT - : STXII_PHASE_SHIFT, - u2.clk1_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (deserialization_factor%2 == 1) - ? PHASE_SHIFT - : 1, - u2.clk2_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_SHIFT - : STXII_PHASE_SHIFT, - u2.sclkout0_phase_shift = STXII_PHASE_SHIFT, - u2.simulation_type = "functional", - u2.m = 0; - - - // Stratix lvds receiver - stratix_lvds_rx u3 ( - .rx_in(rx_in), - .rx_fastclk(stratix_fastclk), - .rx_enable0(stratix_enable0), - .rx_enable1(stratix_enable1), - .rx_out(stratix_dataout)); - - defparam - u3.number_of_channels = number_of_channels, - u3.deserialization_factor = deserialization_factor; - - // Stratixgx lvds receiver with DPA mode - stratixgx_dpa_lvds_rx u4 ( - .rx_in(rx_in), - .rx_fastclk(stratixgx_fastclk), - .rx_slowclk(stratixgx_slowclk), - .rx_coreclk(stratixgx_coreclk), - .rx_locked(stratix_locked), - .rx_reset(rx_reset), - .rx_dpll_reset(rx_dpll_reset), - .rx_channel_data_align(rx_channel_data_align_int), - .rx_out(stratixgx_dataout), - .rx_dpa_locked(stratixgx_dpa_locked)); - - defparam - u4.number_of_channels = number_of_channels, - u4.deserialization_factor = deserialization_factor, - u4.use_coreclock_input = use_coreclock_input, - u4.enable_dpa_fifo = enable_dpa_fifo, - u4.registered_output = registered_output; - - - // Stratix II lvds receiver - stratixii_lvds_rx u5 ( - .rx_in(rx_in), - .rx_reset(rx_reset), - .rx_fastclk(stratixii_fastclk), - .rx_enable(stratixii_enable), - .rx_locked(stratixii_locked), - .rx_dpll_reset(rx_dpll_reset), - .rx_dpll_hold(rx_dpll_hold), - .rx_dpll_enable(rx_dpll_enable), - .rx_fifo_reset(rx_fifo_reset), - .rx_channel_data_align(rx_channel_data_align_int), - .rx_cda_reset(rx_cda_reset), - .rx_out(stratixii_dataout), - .rx_dpa_locked(stratixii_dpa_locked), - .rx_cda_max(rx_cda_max)); - - defparam - u5.number_of_channels = number_of_channels, - u5.deserialization_factor = deserialization_factor, - u5.enable_dpa_mode = enable_dpa_mode, - u5.data_align_rollover = data_align_rollover, - u5.lose_lock_on_one_change = lose_lock_on_one_change, - u5.reset_fifo_at_first_lock = reset_fifo_at_first_lock; - - // flexible lvds receiver - flexible_lvds_rx u6 ( - .rx_in(rx_in), - .rx_fastclk(flvds_fastclk), - .rx_slowclk(flvds_slowclk), - .rx_syncclk(flvds_syncclk), - .rx_locked(rx_locked_int), - .rx_out(flvds_dataout)); - - defparam - u6.number_of_channels = number_of_channels, - u6.deserialization_factor = deserialization_factor, - u6.use_extra_ddio_register = (CYCLONE_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1) ? "YES" : "NO", - u6.use_extra_pll_clk = (CYCLONE_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1) ? "NO" : "YES"; - - - -// ALWAYS CONSTRUCT BLOCK - - // For x2 mode. Data input is sampled in both the rising edge and falling - // edge of input clock. - always @(posedge rx_inclock) - begin : DDIO_IN - if (deserialization_factor == 2) - begin - for (i1 = 0; i1 <= number_of_channels-1; i1 = i1+1) - begin - rx_ddio_in[(i1*2)+1] <= rx_in[i1]; - rx_ddio_in[(i1*2)] <= rx_in_latched[i1]; - end - end - end // DDIO_IN - - always @(negedge rx_inclock) - begin : DDIO_IN_LATCH - if ((deserialization_factor == 2) && ($time > 0)) - begin - rx_in_latched <= rx_in; - end - end // DDIO_IN_LATCH - - // Activate calibration mode - always @ (posedge rx_deskew) - begin : CALIBRATION - deskew_done <= {number_of_channels{1'b0}}; - calibrate <= 1'b1; - end // CALIBRATION - - // slow clock - always @ (posedge rx_slowclk) - begin : SLOW_CLOCK - negedge_count <= 0; - - // In order to assure that the circuit is capturing data accurately - // the user must calibrate the LVDS data channels by asserting a - // deskew signal and applying the appropriate calibration value for - // 3 clock cycles to deskew the channel after 3 clock cycles. - if (check_deskew_pattern == 1) - begin - if (calibrate == 1'b1) - begin - for (j = 0; j <= number_of_channels-1; j = j+1) - begin - if (pattern_match(pattern, deskew_pattern[deserialization_factor-1:0], deserialization_factor, j) || - (pattern_match(pattern, ~deskew_pattern[deserialization_factor-1:0], deserialization_factor, j) && - (APEXII_RX_STYLE == 1) && - (cds_mode == "MULTIPLE_BIT"))) - begin - count[j] <= count[j] + 1; - - if (count[j] >= 2) - deskew_done[j] <= 1'b1; - - end - else - count[j] <= 0; - - end - end - end - - if (rx_deskew == 0) - calibrate <= 1'b0; - - end // SLOW_CLOCK - - // Fast clock (on falling edge) - always @ (negedge rx_fastclk) - begin : FAST_CLOCK_NEGEDGE - if(rx_locked_int == 1) - begin - - negedge_count <= negedge_count + 1; - - // For APEX and Mercury families, load data on the - // 3rd negative edge of the fast clock - if (negedge_count == 2) - begin - - if (rx_deskew == 0) - rx_parallel_load_reg <= rx_shift_reg; - - sample <= 1; - - for (i4= 0; i4 < number_of_channels; i4 = i4+1) - begin - if (deskew_done[i4] == 1) - begin - if(APEXII_RX_STYLE == 1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - rx_shift_reg[x + (i4 * deserialization_factor)] <= rx_shift_reg [x-1 + (i4 * deserialization_factor)]; - rx_shift_reg[i4 * deserialization_factor] <= rx_in[i4]; - end - else - // Data gets shifted into MSB first - rx_shift_reg[(i4+1)*deserialization_factor-1] <= rx_in[i4]; - end - else - begin - if(APEXII_RX_STYLE == 1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - pattern[x + (i4 * deserialization_factor)] <= pattern [x-1 + (i4 * deserialization_factor)]; - pattern[i4 * deserialization_factor] <= rx_in[i4]; - end - else - pattern[(i4+1)*deserialization_factor-1] <= rx_in[i4]; - rx_shift_reg[(i4+1)*deserialization_factor-1] <= 'bx; - end - end - - end - else - begin - // Loading input data to shift register - sample <= (sample + 1) % deserialization_factor; - - for (i4= 0; i4 < number_of_channels; i4 = i4+1) - begin - if (deskew_done[i4] == 1) - begin - if(APEXII_RX_STYLE == 1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - rx_shift_reg[x + (i4 * deserialization_factor)] <= rx_shift_reg [x-1 + (i4 * deserialization_factor)]; - rx_shift_reg[i4 * deserialization_factor] <= rx_in[i4]; - end - else - // Data gets shifted into MSB first - rx_shift_reg[(i4+1)*deserialization_factor-sample-1] <= rx_in[i4]; - end - else - begin - if(APEXII_RX_STYLE == 1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - pattern[x + (i4 * deserialization_factor)] <= pattern [x-1 + (i4 * deserialization_factor)]; - pattern[i4 * deserialization_factor] <= rx_in[i4]; - end - else - pattern[(i4+1)*deserialization_factor-sample-1] <= rx_in[i4]; - rx_shift_reg[(i4+1)*deserialization_factor-sample-1] <= 'bx; - end - end - end - end - end - - // Fast clock (on rising edge) - always @ (posedge rx_fastclk) - begin : FAST_CLOCK_POSEDGE - if(rx_locked_int == 1) - begin - if (deserialization_factor > 2) - begin - posedge_count <= (posedge_count+1) % deserialization_factor; - - // Generating slow clock for MERCURY - if (posedge_count % ((deserialization_factor+1)/2) == 0) - begin - rx_mercury_slow_clock <= ~rx_mercury_slow_clock; - end - end - end - end // FAST_CLOCK - - // synchronization register - always @ (posedge rx_reg_clk) - begin : SYNC_REGISTER - rx_out_reg <= rx_out_int; - end // SYNC_REGISTER - - // hold register - always @ (negedge rx_hold_clk) - begin : HOLD_REGISTER - if (deserialization_factor > 1) - begin - rx_out_hold <= rx_parallel_load_reg; - end - end // HOLD_REGISTER - - // Registering rx_data_align signal for stratix II lvds_rx. - always @ (posedge rx_data_align_clk) - begin - rx_data_align_reg <= rx_data_align_pulldown; - end - -// CONTINOUS ASSIGNMENT - assign rx_out = (STRATIXGX_DPA_RX_STYLE == 1) - ? stratixgx_dataout : - (registered_output == "ON") - ? rx_out_reg - : rx_out_int; - - assign rx_out_int = (deserialization_factor == 1) - ? rx_in : - (deserialization_factor == 2) - ? rx_ddio_in : - (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? flvds_dataout : - (STRATIX_RX_STYLE == 1) - ? stratix_dataout : - (STRATIXII_RX_STYLE == 1) - ? stratixii_dataout : - (RX_NEED_HOLD_REG == 1) - ? rx_out_hold - : rx_parallel_load_reg; - - assign rx_reg_clk = (use_external_pll == "ON") - ? rx_inclock - : {number_of_channels{rx_outclk_int}}; - - assign rx_hold_clk = rx_outclk_int; - - assign rx_outclock = rx_outclk_int; - - assign rx_outclk_int = (deserialization_factor <= 2) - ? rx_inclock : - (MERCURY_RX_STYLE == 1) - ? rx_mercury_slow_clock - : rx_slowclk; - - assign rx_slowclk = ((STRATIX_RX_STYLE == 1) || - (STRATIXGX_DPA_RX_STYLE == 1) || - (CYCLONE_RX_STYLE == 1)) - ? stratix_pll_outclock[2] : - ((STRATIXII_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1)) - ? stratixii_pll_outclock[2] - : altclklock_slowclk; - - assign rx_fastclk = altclklock_fastclk; - - assign rx_locked = (deserialization_factor > 2) - ? rx_locked_int - : 1'b1; - - assign rx_locked_int = ((STRATIX_RX_STYLE == 1) || - (STRATIXGX_DPA_RX_STYLE == 1) || - (CYCLONE_RX_STYLE == 1)) - ? stratix_locked : - ((STRATIXII_RX_STYLE == 1) || - (CYCLONEII_RX_STYLE == 1)) - ? stratixii_locked - : altclklock_locked; - - assign rx_dpa_locked = (STRATIXGX_DPA_RX_STYLE == 1) - ? stratixgx_dpa_locked : - (STRATIXII_RX_STYLE == 1) - ? stratixii_dpa_locked - : {number_of_channels{1'b1}}; - - assign rx_data_align_pulldown = (port_rx_data_align == "PORT_USED") - ? rx_data_align : - (port_rx_data_align == "PORT_UNUSED") - ? 1'b0 : - (rx_data_align !== 1'bz) - ? rx_data_align : - 1'b0; - - assign rx_data_align_int = (registered_data_align_input == "ON") - ? rx_data_align_reg - : rx_data_align_pulldown; - - assign rx_channel_data_align_int = - (rx_channel_data_align !== {number_of_channels{1'bZ}}) - ? rx_channel_data_align : - (STRATIXII_RX_STYLE == 1) - ? {number_of_channels{rx_data_align_int}} - : {number_of_channels{1'b0}}; - - assign rx_data_align_clk = ((STRATIX_RX_STYLE == 1) || - (STRATIXGX_DPA_RX_STYLE == 1)) - ? stratix_pll_outclock[2] : - (STRATIXII_RX_STYLE == 1) - ? stratixii_pll_outclock[2] - : 1'b0; - - assign altclklock_inclock = (APEX20KE_RX_STYLE == 1) || - (APEXII_RX_STYLE == 1) || - (MERCURY_RX_STYLE == 1) - ? rx_inclock - : 1'b0; - - assign stratix_pll_inclock[1:0] = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? {1'b0, rx_inclock} - : {2{1'b0}}; - - assign stratix_pll_enable = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? rx_pll_enable - : 1'b0; - - assign stratix_pll_areset = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? pll_areset - : 1'b0; - - assign stratix_fastclk = (STRATIX_RX_STYLE == 1) && (implement_in_les == "OFF") - ? stratix_pll_outclock[0] - : 1'b0; - - assign stratix_slowclk = (STRATIX_RX_STYLE == 1) && (implement_in_les == "OFF") - ? stratix_pll_outclock[2] - : 1'b0; - - assign stratixgx_fastclk = (STRATIXGX_DPA_RX_STYLE == 1) && (implement_in_les == "OFF") - ? stratix_pll_outclock[0] - : 1'b0; - - assign stratixgx_slowclk = (STRATIXGX_DPA_RX_STYLE == 1) && (implement_in_les == "OFF") - ? stratix_pll_outclock[2] - : 1'b0; - - assign stratixgx_coreclk = (STRATIXGX_DPA_RX_STYLE == 1) && (implement_in_les == "OFF") - ? rx_coreclk - : {number_of_channels{1'b0}}; - - assign stratixii_pll_inclock[1:0] = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? {1'b0, rx_inclock} - : {2{1'b0}}; - - assign stratixii_pll_enable = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? rx_pll_enable - : 1'b0; - - assign stratixii_pll_areset = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? pll_areset - : 1'b0; - assign stratixii_fastclk = (STRATIXII_RX_STYLE == 0) && (implement_in_les == "OFF") - ? 1'b0 : - (use_external_pll == "ON") - ? rx_inclock - : stratixii_sclkout0; - - assign stratixii_enable = (STRATIXII_RX_STYLE == 0) && (implement_in_les == "OFF") - ? 1'b0 : - (use_external_pll == "ON") - ? rx_enable - : stratixii_enable0; - - assign flvds_fastclk = ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? rx_inclock - : stratix_pll_outclock[0]) : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? rx_inclock - : stratixii_pll_outclock[0]) - : 1'b0; - - assign flvds_slowclk = ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratix_pll_outclock[2]) : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratixii_pll_outclock[2]) - : 1'b0; - - assign flvds_syncclk = ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratix_pll_outclock[1]) : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratixii_pll_outclock[1]) - : 1'b0; - -endmodule // altlvds_rx -// END OF MODULE - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : stratix_lvds_rx -// -// Description : Stratix lvds receiver -// -// Limitation : Only available to Stratix and stratix GX (NON DPA mode) -// families. -// -// Results expected: Deserialized output data. -// -//END_MODULE_NAME---------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module stratix_lvds_rx ( - rx_in, // input serial data - rx_fastclk, // fast clock from pll - rx_enable0, - rx_enable1, - rx_out // deserialized output data -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - -// LOCAL PARAMETER DECLARATION - parameter REGISTER_WIDTH = deserialization_factor*number_of_channels; - -// INPUT PORT DECLARATION - input [number_of_channels -1 :0] rx_in; - input rx_fastclk; - input rx_enable0; - input rx_enable1; - -// OUTPUT PORT DECLARATION - output [REGISTER_WIDTH -1: 0] rx_out; - -// INTERNAL REGISTERS DECLARATION - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] rx_parallel_load_reg; - reg [REGISTER_WIDTH -1 : 0] rx_out_hold; - reg enable0_reg; - reg enable0_reg1; - reg enable0_neg; - reg enable1_reg; - -// INTERNAL WIRE DECLARATION - wire rx_hold_clk; - -// LOCAL INTEGER DECLARATION - integer i1; - integer x; - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - rx_shift_reg = {REGISTER_WIDTH{1'b0}}; - rx_parallel_load_reg = {REGISTER_WIDTH{1'b0}}; - rx_out_hold = {REGISTER_WIDTH{1'b0}}; - end //INITIALIZATION - -// ALWAYS CONSTRUCT BLOCK - - // registering load enable signal - always @ (posedge rx_fastclk) - begin : LOAD_ENABLE - enable0_reg1 <= enable0_reg; - enable0_reg <= rx_enable0; - enable1_reg <= rx_enable1; - end // LOAD_ENABLE - - // Fast clock (on falling edge) - always @ (negedge rx_fastclk) - begin : NEGEDGE_FAST_CLOCK - - // load data when the registered load enable signal is high - if (enable0_neg == 1) - rx_parallel_load_reg <= rx_shift_reg; - - // Loading input data to shift register - for (i1= 0; i1 < number_of_channels; i1 = i1+1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - rx_shift_reg[x + (i1 * deserialization_factor)] <= rx_shift_reg [x-1 + (i1 * deserialization_factor)]; - rx_shift_reg[i1 * deserialization_factor] <= rx_in[i1]; - end - - enable0_neg <= enable0_reg1; - - end // NEGEDGE_FAST_CLOCK - - // Holding register - always @ (posedge rx_hold_clk) - begin : HOLD_REGISTER - rx_out_hold <= rx_parallel_load_reg; - end // HOLD_REGISTER - -// CONTINOUS ASSIGNMENT - assign rx_out = rx_out_hold; - assign rx_hold_clk = enable1_reg; - - -endmodule // stratix_lvds_rx -// END OF MODULE - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : stratixgx_dpa_lvds_rx -// -// Description : Stratix GX lvds receiver. -// -// Limitation : Only available in Stratix GX families. -// -// Results expected: Deserialized output data and dpa locked signal. -// -//END_MODULE_NAME---------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module stratixgx_dpa_lvds_rx ( - rx_in, - rx_fastclk, - rx_slowclk, - rx_locked, - rx_coreclk, - rx_reset, - rx_dpll_reset, - rx_channel_data_align, - rx_out, - rx_dpa_locked -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - parameter use_coreclock_input = "OFF"; - parameter enable_dpa_fifo = "ON"; - parameter registered_output = "ON"; - -// LOCAL PARAMETER DECLARATION - parameter REGISTER_WIDTH = deserialization_factor*number_of_channels; - -// INPUT PORT DECLARATION - input [number_of_channels -1 :0] rx_in; - input rx_fastclk; - input rx_slowclk; - input rx_locked; - input [number_of_channels -1 :0] rx_coreclk; - input [number_of_channels -1 :0] rx_reset; - input [number_of_channels -1 :0] rx_dpll_reset; - input [number_of_channels -1 :0] rx_channel_data_align; - -// OUTPUT PORT DECLARATION - output [REGISTER_WIDTH -1: 0] rx_out; - output [number_of_channels -1: 0] rx_dpa_locked; - -// INTERNAL REGISTERS DECLARATION - - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] rx_parallel_load_reg; - reg [number_of_channels -1 : 0] rx_in_reg; - reg [number_of_channels -1 : 0] dpa_in; - reg [number_of_channels -1 : 0] retime_data; - - reg [REGISTER_WIDTH -1 : 0] ram_array0; - reg [REGISTER_WIDTH -1 : 0] ram_array1; - reg [REGISTER_WIDTH -1 : 0] ram_array2; - reg [REGISTER_WIDTH -1 : 0] ram_array3; - reg [2 : 0] wrPtr [number_of_channels -1 : 0]; - reg [2 : 0] rdPtr [number_of_channels -1 : 0]; - reg [3 : 0] bitslip_count [number_of_channels -1 : 0]; - reg [3 : 0] bitslip_count_pre [number_of_channels -1 : 0]; - - reg [REGISTER_WIDTH -1 : 0] rxpdat2; - reg [REGISTER_WIDTH -1 : 0] rxpdat3; - reg [REGISTER_WIDTH -1 : 0] rxpdatout; - reg [REGISTER_WIDTH -1 : 0] fifo_data_out; - reg [REGISTER_WIDTH -1 : 0] rx_out_reg; - reg [number_of_channels -1 : 0] dpagclk_pre; - reg [number_of_channels -1 : 0] rx_channel_data_align_pre; - reg [number_of_channels -1 : 0] fifo_write_clk_pre; - reg [number_of_channels -1 : 0] clkout_tmp; - reg [number_of_channels -1 : 0] sync_reset; - -// INTERNAL WIRE DECLARATION - wire [number_of_channels -1:0] dpagclk; - wire[number_of_channels -1:0] fifo_write_clk; - wire [REGISTER_WIDTH -1 : 0] rx_out_int; - wire [REGISTER_WIDTH -1 : 0] serdes_data_out; - wire [REGISTER_WIDTH -1 : 0] fifo_data_in; - wire [REGISTER_WIDTH -1 : 0] rxpdat1; - -// INTERNAL TRI DECLARATION - tri0[number_of_channels -1 :0] rx_reset; - tri0[number_of_channels -1 :0] rx_dpll_reset; - tri0[number_of_channels -1 :0] rx_channel_data_align; - tri0[number_of_channels -1 :0] rx_coreclk; - -// LOCAL INTEGER DECLARATION - integer i; - integer i0; - integer i1; - integer i2; - integer i3; - integer i4; - integer i5; - integer i6; - integer i7; - integer i8; - integer j; - integer j1; - integer j2; - integer j3; - integer k; - integer x; - integer negedge_count; - - integer fastclk_posedge_count [number_of_channels -1: 0]; - integer fastclk_negedge_count [number_of_channels - 1 : 0]; - integer bitslip_count_reg [number_of_channels -1: 0]; - - -// COMPONENT INSTANTIATIONS -// ALTERA_DEVICE_FAMILIES dev (); - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - rxpdat2 = {REGISTER_WIDTH{1'b0}}; - rxpdat3 = {REGISTER_WIDTH{1'b0}}; - rxpdatout = {REGISTER_WIDTH{1'b0}}; - rx_out_reg = {REGISTER_WIDTH{1'b0}}; - - ram_array0 = {REGISTER_WIDTH{1'b0}}; - ram_array1 = {REGISTER_WIDTH{1'b0}}; - ram_array2 = {REGISTER_WIDTH{1'b0}}; - ram_array3 = {REGISTER_WIDTH{1'b0}}; - - rx_in_reg = {number_of_channels{1'b0}}; - dpa_in = {number_of_channels{1'b0}}; - retime_data = {number_of_channels{1'b0}}; - - rx_channel_data_align_pre = {number_of_channels{1'b0}}; - clkout_tmp = {number_of_channels{1'b0}}; - sync_reset = {number_of_channels{1'b0}}; - - rx_shift_reg = {REGISTER_WIDTH{1'b0}}; - rx_parallel_load_reg = {REGISTER_WIDTH{1'b0}}; - fifo_data_out = {REGISTER_WIDTH{1'b0}}; - - for (i = 0; i < number_of_channels; i = i + 1) - begin - wrPtr[i] = 0; - rdPtr[i] = 2; - bitslip_count[i] = 0; - bitslip_count_reg[i] = 0; - fastclk_posedge_count[i] = 0; - fastclk_negedge_count[i] = 0; - end - - end //INITIALIZATION - - -// ALWAYS CONSTRUCT BLOCK - - //deserializer logic - always @ (posedge dpagclk) - begin : DPA_SERDES_SLOWCLK - - for(i0 = 0; i0 <=number_of_channels -1; i0=i0+1) - begin - if ((dpagclk[i0] == 1'b1) && (dpagclk_pre[i0] == 1'b0)) - begin - - if ((rx_reset[i0] == 1'b1) || (rx_dpll_reset[i0] == 1'b1)) - sync_reset[i0] <= 1'b1; - else - sync_reset[i0] <= 1'b0; - - // add 1 ps delay to ensure that when the rising edge of - // global clock(core clock) happens at the same time of falling - // edge of fast clock, the count for the next falling edge of - // fast clock is start at 1. - fastclk_negedge_count[i0] <= #1 0; - end - end - end // DPA_SERDES_SLOW_CLOCK - - - always @ (posedge rx_fastclk) - begin : DPA_SERDES_POSEDGE_FASTCLK - for(i1 = 0; i1 <=number_of_channels -1; i1=i1+1) - begin - if (fastclk_negedge_count[i1] == 2) - rx_parallel_load_reg <= rx_shift_reg; - - if (sync_reset[i1] == 1'b1) - begin - fastclk_posedge_count[i1] <= 0; - clkout_tmp[i1] <= 1'b0; - end - else - begin - if (fastclk_posedge_count[i1] % (deserialization_factor / 2) == 0) - begin - fastclk_posedge_count[i1] <= 1; - clkout_tmp[i1] <= !clkout_tmp[i1]; - end - - fastclk_posedge_count[i1] <= (fastclk_posedge_count[i1] + 1) % deserialization_factor; - end - end - end // DPA_SERDES_POSEDGE_FAST_CLOCK - - always @ (negedge rx_fastclk) - begin : DPA_SERDES_NEGEDGE_FAST_CLOCK - if (rx_fastclk == 1'b0) - begin - for (i2 = 0; i2 <= number_of_channels -1; i2 = i2+1) - begin - // Data gets shifted into MSB first. - for (x=deserialization_factor-1; x > 0; x=x-1) - rx_shift_reg[x + (i2 * deserialization_factor)] <= rx_shift_reg [x-1 + (i2 * deserialization_factor)]; - - rx_shift_reg[i2 * deserialization_factor] <= retime_data[i2]; - retime_data <= rx_in; - - fastclk_negedge_count[i2] <= (fastclk_negedge_count[i2] + 1) ; - end - end - end // DPA_SERDES_NEGEDGE_FAST_CLOCK - - //phase compensation FIFO - always @ (posedge fifo_write_clk) - begin : DPA_FIFO_WRITE_CLOCK - if ((enable_dpa_fifo == "ON") && (rx_locked == 1'b1)) - begin - for (i3 = 0; i3 <= number_of_channels-1; i3 = i3+1) - begin - if(sync_reset[i3] == 1'b1) - wrPtr[i3] <= 0; - else if ((fifo_write_clk[i3] == 1'b1) && (fifo_write_clk_pre[i3] == 1'b0)) - begin - case (wrPtr[i3]) - 3'b000: - for (j = i3*deserialization_factor; j <= (i3+1)*deserialization_factor -1; j=j+1) - ram_array0[j] <= fifo_data_in[j]; - - 3'b001: - for (j = i3*deserialization_factor; j <= (i3+1)*deserialization_factor -1; j=j+1) - ram_array1[j] <= fifo_data_in[j]; - 3'b010: - for (j = i3*deserialization_factor; j <= (i3+1)*deserialization_factor -1; j=j+1) - ram_array2[j] <= fifo_data_in[j]; - 3'b011: - for (j = i3*deserialization_factor; j <= (i3+1)*deserialization_factor -1; j=j+1) - ram_array3[j] <= fifo_data_in[j]; - default: - $display ("Error! Invalid wrPtr value."); - endcase - wrPtr[i3] <= (wrPtr[i3] + 1) % 4; - end - end - end - end // DPA_FIFO_WRITE_CLOCK - - always @ (negedge fifo_write_clk) - begin - for (i6 = 0; i6 <= number_of_channels-1; i6 = i6+1) - begin - if (fifo_write_clk[i6] == 1'b0) - fifo_write_clk_pre[i6] <= fifo_write_clk[i6]; - end - end - - always @ (posedge dpagclk) - begin : DPA_FIFO_SLOW_CLOCK - - if((enable_dpa_fifo == "ON") ) - begin - for (i4 = 0; i4 <= number_of_channels-1; i4 = i4+1) - begin - if ((dpagclk[i4] == 1'b1) && (dpagclk_pre[i4] == 1'b0)) - begin - if ((rx_reset[i4] == 1'b1) || (rx_dpll_reset[i4] == 1'b1) || (sync_reset[i4] == 1'b1)) - begin - for (j1 = i4*deserialization_factor; j1 <= (i4+1)*deserialization_factor -1; j1=j1+1) - begin - fifo_data_out[j1] <= 1'b0; - ram_array0[j1] <= 1'b0; - ram_array1[j1] <= 1'b0; - ram_array2[j1] <= 1'b0; - ram_array3[j1] <= 1'b0; - end - - wrPtr[i4] <= 0; - rdPtr[i4] <= 2; - end - else - begin - case (rdPtr[i4]) - 3'b000: - for (j1 = i4*deserialization_factor; j1 <= (i4+1)*deserialization_factor -1; j1=j1+1) - fifo_data_out[j1] <= ram_array0[j1]; - 3'b001: - for (j1 = i4*deserialization_factor; j1 <= (i4+1)*deserialization_factor -1; j1=j1+1) - fifo_data_out[j1] <= ram_array1[j1]; - 3'b010: - for (j1 = i4*deserialization_factor; j1 <= (i4+1)*deserialization_factor -1; j1=j1+1) - fifo_data_out[j1] <= ram_array2[j1]; - 3'b011: - for (j1 = i4*deserialization_factor; j1 <= (i4+1)*deserialization_factor -1; j1=j1+1) - fifo_data_out[j1] <= ram_array3[j1]; - default: - $display ("Error! Invalid rdPtr value."); - endcase - - rdPtr[i4] <= (rdPtr[i4] + 1) % 4; - end - end - end - end - end // DPA_FIFO_SLOW_CLOCK - - - //bit-slipping logic - always @ (posedge dpagclk) - begin : DPA_BIT_SLIP - - for (i5 = 0; i5 <= number_of_channels-1; i5 = i5 + 1) - begin - if ((dpagclk[i5] == 1'b1) && (dpagclk_pre[i5] == 1'b0)) - begin - if ((sync_reset[i5] == 1'b1) || (rx_reset[i5] == 1'b1) || - (rx_dpll_reset[i5] == 1'b1)) - begin - for(j2 = deserialization_factor*i5; j2 <= deserialization_factor*(i5+1) -1; j2=j2+1) - begin - rxpdat2[j2] <= 1'b0; - rxpdat3[j2] <= 1'b0; - rxpdatout[j2] <= 1'b0; - end - bitslip_count[i5] <= 0; - bitslip_count_reg[i5] <= 0; - end - else - begin - if ((rx_channel_data_align[i5] == 1'b1) && (rx_channel_data_align_pre[i5] == 1'b0)) - bitslip_count[i5] <= (bitslip_count[i5] + 1) % deserialization_factor; - - bitslip_count_reg[i5] <= bitslip_count[i5]; - - rxpdat2 <= rxpdat1; - rxpdat3 <= rxpdat2; - - for(j2 = deserialization_factor*i5 + bitslip_count_reg[i5]; j2 <= deserialization_factor*(i5+1) -1; j2=j2+1) - rxpdatout[j2] <= rxpdat3[j2-bitslip_count_reg[i5]]; - - for(j2 = deserialization_factor*i5 ; j2 <= deserialization_factor*i5 + bitslip_count_reg[i5] -1; j2=j2+1) - rxpdatout[j2] <= rxpdat2[j2+ deserialization_factor -bitslip_count_reg[i5]]; - end - rx_channel_data_align_pre[i5] <= rx_channel_data_align[i5]; - end - end - end // DPA_BIT_SLIP - - // synchronization register - always @ (posedge dpagclk) - begin : SYNC_REGISTER - for (i8 = 0; i8 < number_of_channels; i8 = i8+1) - begin - if ((dpagclk[i8] == 1'b1) && (dpagclk_pre[i8] == 1'b0)) - begin - for (j3 = 0; j3 < deserialization_factor; j3 = j3+1) - rx_out_reg[i8*deserialization_factor + j3] <= rxpdatout[i8*deserialization_factor + j3]; - end - end - end // SYNC_REGISTER - - // store previous value of the global clocks - always @ (dpagclk) - begin - dpagclk_pre <= dpagclk; - end - - // CONTINOUS ASSIGNMENT - assign dpagclk = (use_coreclock_input == "ON") ? rx_coreclk : {number_of_channels{rx_slowclk}}; - assign rxpdat1 = (enable_dpa_fifo == "ON") ? fifo_data_out : serdes_data_out; - assign serdes_data_out = rx_parallel_load_reg; - assign fifo_data_in = serdes_data_out; - assign fifo_write_clk = clkout_tmp; - assign rx_dpa_locked = {number_of_channels {1'b1}}; - assign rx_out = (registered_output == "ON") ? rx_out_reg : rxpdatout; - - -endmodule // stratixgx_dpa_lvds_rx -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------- -// -// Module Name : stratixii_lvds_rx -// -// Description : Stratix II lvds receiver. Support both the dpa and non-dpa -// mode. -// -// Limitation : Only available to Stratix II. -// -// Results expected: Deserialized output data, dpa lock signal and status bit -// indicating whether maximum bitslip has been reached. -// -//END_MODULE_NAME--------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module stratixii_lvds_rx ( - rx_in, - rx_reset, - rx_fastclk, - rx_enable, - rx_locked, - rx_dpll_reset, - rx_dpll_hold, - rx_dpll_enable, - rx_fifo_reset, - rx_channel_data_align, - rx_cda_reset, - rx_out, - rx_dpa_locked, - rx_cda_max -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - parameter enable_dpa_mode = "OFF"; - parameter data_align_rollover = deserialization_factor; - parameter lose_lock_on_one_change = "OFF"; - parameter reset_fifo_at_first_lock = "ON"; - -// LOCAL PARAMETER DECLARATION - parameter REGISTER_WIDTH = deserialization_factor*number_of_channels; - parameter MUX_WIDTH = 12; - parameter RAM_WIDTH = 6; - -// INPUT PORT DECLARATION - input [number_of_channels -1 :0] rx_in; - input rx_fastclk; - input rx_enable; - input rx_locked; - input [number_of_channels -1 :0] rx_reset; - input [number_of_channels -1 :0] rx_dpll_reset; - input [number_of_channels -1 :0] rx_dpll_hold; - input [number_of_channels -1 :0] rx_dpll_enable; - input [number_of_channels -1 :0] rx_fifo_reset; - input [number_of_channels -1 :0] rx_channel_data_align; - input [number_of_channels -1 :0] rx_cda_reset; - -// OUTPUT PORT DECLARATION - output [REGISTER_WIDTH -1: 0] rx_out; - output [number_of_channels -1: 0] rx_dpa_locked; - output [number_of_channels -1: 0] rx_cda_max; - - -// INTERNAL REGISTERS DECLARATION - - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] rx_parallel_load_reg; - reg [number_of_channels -1 : 0] rx_in_reg; - reg [number_of_channels -1 : 0] fifo_in_sync_reg; - reg [number_of_channels -1 : 0] fifo_out_sync_reg; - reg [number_of_channels -1 : 0] bitslip_mux_out; - reg [number_of_channels -1 : 0] dpa_in; - reg [number_of_channels -1 : 0] retime_data; - reg [number_of_channels -1 : 0] dpll_lock; - reg [number_of_channels -1 : 0] dpll_first_lock; - reg [number_of_channels -1 : 0] rx_channel_data_align_pre; - reg [number_of_channels -1 : 0] write_side_sync_reset; - reg [number_of_channels -1 : 0] read_side_sync_reset; - - reg ram_array [(RAM_WIDTH*number_of_channels) -1 : 0]; - reg [2 : 0] wrPtr [number_of_channels -1 : 0]; - reg [2 : 0] rdPtr [number_of_channels -1 : 0]; - reg [3 : 0] bitslip_count [number_of_channels -1 : 0]; - reg [number_of_channels -1 : 0] start_corrupt_bits; - reg [1 : 0] num_corrupt_bits [number_of_channels -1 : 0]; - reg [number_of_channels -1 : 0] rx_cda_max; - reg [(MUX_WIDTH*number_of_channels) -1 : 0] shift_reg_chain; - reg enable0_reg; - -// INTERNAL WIRE DECLARATION - wire fifo_write_clk; - wire fifo_read_clk; - wire [number_of_channels -1 : 0] dpa_fifo_in; - wire [number_of_channels -1 : 0] dpa_fifo_out; - wire rx_in_reg_clk; - wire rx_bload; - -// INTERNAL TRI DECLARATION - tri0[number_of_channels -1 :0] rx_reset; - tri0[number_of_channels -1 :0] rx_dpll_reset; - tri0[number_of_channels -1 :0] rx_dpll_hold; - tri1[number_of_channels -1 :0] rx_dpll_enable; - tri0[number_of_channels -1 :0] rx_fifo_reset; - tri0[number_of_channels -1 :0] rx_channel_data_align; - tri0[number_of_channels -1 :0] rx_cda_reset; - -// LOCAL INTEGER DECLARATION - integer i; - integer i1; - integer i2; - integer i3; - integer i4; - integer i5; - integer i6; - integer i7; - integer i8; - integer j; - integer j1; - integer j2; - integer j3; - integer j4; - integer x; - integer dpll_clk_count[number_of_channels -1: 0]; - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - enable0_reg=0; - - for (i = 0; i < number_of_channels; i = i + 1) - begin - rx_in_reg[i] = 1'b0; - rx_cda_max[i] = 1'b0; - fifo_in_sync_reg[i] = 1'b0; - fifo_out_sync_reg[i] = 1'b0; - bitslip_mux_out[i] = 1'b0; - dpa_in[i] = 1'b0; - retime_data[i] = 1'b0; - wrPtr[i] = 0; - rdPtr[i] = 3; - bitslip_count[i] = 0; - dpll_clk_count[i] = 0; - dpll_lock[i] = 1'b0; - dpll_first_lock[i] = 1'b0; - start_corrupt_bits[i] = 0; - num_corrupt_bits[i] = 0; - - for (j = 0; j < RAM_WIDTH; j = j + 1) - ram_array[(i*RAM_WIDTH) + j] = 1'b0; - - for (j = 0; j < MUX_WIDTH; j = j + 1) - shift_reg_chain[(i*MUX_WIDTH) + j] = 1'b0; - end - - for (i = 0; i < REGISTER_WIDTH; i = i + 1) - begin - rx_shift_reg[i] = 0; - rx_parallel_load_reg[i] = 0; - end - - - end //INITIALIZATION - -// ALWAYS CONSTRUCT BLOCK - - // Fast clock (on rising edge) - always @ (posedge rx_fastclk) - begin : STRATIXII_DESER - if (rx_bload == 1) - rx_parallel_load_reg <= rx_shift_reg; - - for (i1 = 0; i1 < number_of_channels; i1 = i1+1) - begin - for (x=deserialization_factor-1; x >0; x=x-1) - rx_shift_reg[x + (i1 * deserialization_factor)] <= rx_shift_reg [x-1 + (i1 * deserialization_factor)]; - - rx_shift_reg[i1 * deserialization_factor] <= bitslip_mux_out[i1]; - end - - // Registering enable0 signal - enable0_reg <= rx_enable; - end // STRATIXII_DESER - - // input synchronization register - always @ (posedge rx_in_reg_clk) - begin : IN_SYNC_REGISTER - rx_in_reg <= rx_in; - end // IN_SYNC_REGISTER - - // Stratix II bitslip logic - always @ (posedge rx_cda_reset) - begin - for (i2 = 0; i2 <= number_of_channels-1; i2 = i2 + 1) - begin - if (rx_cda_reset[i2] == 1'b1) - begin - // reset the bitslipping circuitry. - bitslip_count[i2] <= 0; - rx_cda_max[i2] <= 1'b0; - end - end - end - - always @ (posedge rx_fastclk) - begin : STRATIXII_BITSLIP - for (i3 = 0; i3 <= number_of_channels-1; i3 = i3 + 1) - begin - if (rx_cda_reset[i3] !== 1'b1) - begin - if ((rx_channel_data_align[i3] === 1'b1) && - (rx_channel_data_align_pre[i3] === 1'b0)) - begin - // slipped data byte is corrupted. - start_corrupt_bits[i3] <= 1; - num_corrupt_bits[i3] <= 1; - - // Rollover has occurred. Serial data stream is reset back to 0 latency. - if (bitslip_count[i3] == data_align_rollover) - begin - bitslip_count[i3] <= 0; - rx_cda_max[i3] <= 1'b0; - end - else - begin - // increase the bit slip count. - bitslip_count[i3] <= bitslip_count[i3] + 1; - - // if maximum of bitslip limit has been reach, set rx_cda_max to high. - // Rollover will occur on the next bit slip. - if (bitslip_count[i3] == data_align_rollover - 1) - rx_cda_max[i3] <= 1'b1; - end - end - else if ((rx_channel_data_align[i3] === 1'b0) && - (rx_channel_data_align_pre[i3] === 1'b1)) - begin - start_corrupt_bits[i3] <= 0; - num_corrupt_bits[i3] <= 0; - end - end - - if (start_corrupt_bits[i3] == 1'b1) - begin - if (num_corrupt_bits[i3]+1 == 3) - start_corrupt_bits[i3] <= 0; - else - num_corrupt_bits[i3] <= num_corrupt_bits[i3] + 1; - end - - // load serial data stream into the shift register chain. - if ((enable_dpa_mode == "ON") && (rx_dpll_enable[i3] == 1'b1)) - shift_reg_chain[(i3*MUX_WIDTH) + 0] <= dpa_fifo_out[i3]; - else - shift_reg_chain[(i3*MUX_WIDTH) + 0] <= rx_in_reg[i3]; - - // propagate the serial data stream through the bitslip register chain. - for (j1 = 0; j1 < data_align_rollover; j1 = j1 + 1) - shift_reg_chain[(i3*MUX_WIDTH) + j1 + 1] <= shift_reg_chain[(i3*MUX_WIDTH) + j1]; - - // set the output to 'X' for 3 fast clock cycles after receiving the bitslip signal. - if (((rx_channel_data_align[i3] === 1'b1) && (rx_channel_data_align_pre[i3] === 1'b0)) || - ((start_corrupt_bits[i3] == 1'b1) && (num_corrupt_bits[i3] < 3) && - (rx_channel_data_align[i3] === 1'b1))) - bitslip_mux_out[i3] <= 1'bx; - else - bitslip_mux_out[i3] <= shift_reg_chain[(i3*MUX_WIDTH) + bitslip_count[i3]]; - - rx_channel_data_align_pre[i3] <= rx_channel_data_align[i3]; - end - end //STRATIXII_BITSLIP - - // Stratix II Phase Compensation FIFO - always @ (posedge fifo_write_clk or posedge rx_reset or posedge rx_fifo_reset) - begin : STRATIXII_DPA_FIFO_WRITE - for (i4 = 0; i4 <= number_of_channels-1; i4 = i4 + 1) - begin - if ((rx_reset[i4] == 1'b1) || (rx_fifo_reset[i4] == 1'b1) || - ((reset_fifo_at_first_lock == "ON") && - (dpll_first_lock[i4] == 1'b0))) - begin - wrPtr[i4] <= 0; - for (j2 = 0; j2 < RAM_WIDTH; j2 = j2 + 1) - ram_array[(i4*RAM_WIDTH) + j2] <= 1'b0; - fifo_in_sync_reg[i4] <= 1'b0; - write_side_sync_reset[i4] <= 1'b1; - end - else - begin - if (write_side_sync_reset[i4] <= 1'b0) - begin - wrPtr[i4] <= wrPtr[i4] + 1; - fifo_in_sync_reg[i4] <= dpa_fifo_in[i4]; - ram_array[(i4*RAM_WIDTH) + wrPtr[i4]] <= fifo_in_sync_reg[i4]; - if (wrPtr[i4] == 5) - wrPtr[i4] <= 0; - end - write_side_sync_reset[i4] <= 1'b0; - end - end - end //STRATIXII_DPA_FIFO_WRITE - - // Stratix II Phase Compensation FIFO - always @ (posedge fifo_read_clk or posedge rx_reset or posedge rx_fifo_reset) - begin : STRATIXII_DPA_FIFO_READ - for (i5 = 0; i5 <= number_of_channels-1; i5 = i5 + 1) - begin - if ((rx_reset[i5] == 1'b1) || (rx_fifo_reset[i5] == 1'b1) || - ((reset_fifo_at_first_lock == "ON") && - (dpll_first_lock[i5] == 1'b0))) - begin - rdPtr[i5] <= 3; - fifo_out_sync_reg[i5] <= 1'b0; - read_side_sync_reset[i5] <= 1'b1; - end - else - begin - if (read_side_sync_reset[i5] == 1'b0) - begin - rdPtr[i5] <= rdPtr[i5] + 1; - fifo_out_sync_reg[i5] <= ram_array[(i5*RAM_WIDTH) + rdPtr[i5]]; - if (rdPtr[i5] == 5) - rdPtr[i5] <= 0; - end - read_side_sync_reset[i5] <= 1'b0; - end - end - end //STRATIXII_DPA_FIFO_READ - - // Stratix II DPA Block - always @ (posedge rx_fastclk or posedge rx_reset) - begin : STRATIXII_DPA_BLOCK - for (i6 = 0; i6 <= number_of_channels-1; i6 = i6 + 1) - begin - if (rx_reset[i6] == 1'b1) - begin - dpll_clk_count[i6] <= 0; - dpll_lock[i6] <= 1'b0; - end - else - begin - dpll_clk_count[i6] <= dpll_clk_count[i6] + 1; - - if (dpll_clk_count[i6] == 2) - begin - dpll_lock[i6] <= 1'b1; - dpll_first_lock[i6] <= 1'b1; - end - end - end - end //STRATIXII_DPA_BLOCK - - always @ (posedge rx_fastclk) - begin - dpa_in <= rx_in; - retime_data <= dpa_in; - end - - - // CONTINOUS ASSIGNMENT - assign rx_out = rx_parallel_load_reg; - assign dpa_fifo_in = retime_data; - assign dpa_fifo_out = fifo_out_sync_reg; - assign fifo_write_clk = rx_fastclk; - assign fifo_read_clk = rx_fastclk; - assign rx_in_reg_clk = rx_fastclk; - assign rx_dpa_locked = dpll_lock; - assign rx_bload = enable0_reg; - -endmodule // stratixii_lvds_rx -// END OF MODULE - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : flexible_lvds_rx -// -// Description : flexible lvds receiver -// -// Limitation : Only available to Cyclone and Cyclone II -// families. -// -// Results expected: Deserialized output data. -// -//END_MODULE_NAME---------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module flexible_lvds_rx ( - rx_in, // input serial data - rx_fastclk, // fast clock from PLL - rx_slowclk, // slow clock from PLL - rx_syncclk, // sync clock from PLL - rx_locked, // lock signal from PLL - rx_out // deserialized output data -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - parameter use_extra_ddio_register = "YES"; - parameter use_extra_pll_clk = "NO"; - -// LOCAL PARAMETER DECLARATION - parameter REGISTER_WIDTH = deserialization_factor*number_of_channels; - -// INPUT PORT DECLARATION - input [number_of_channels -1 :0] rx_in; - input rx_fastclk; - input rx_slowclk; - input rx_syncclk; - input rx_locked; - -// OUTPUT PORT DECLARATION - output [REGISTER_WIDTH -1: 0] rx_out; - -// INTERNAL REGISTERS DECLARATION - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg1; - reg [REGISTER_WIDTH -1 : 0] rx_shift_reg2; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg1; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg2; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg1_buf1; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg1_buf1_pipe; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg2_buf1; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg1_buf2; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg1_buf2_pipe; - reg [REGISTER_WIDTH -1 : 0] rx_sync_reg2_buf2; - reg [REGISTER_WIDTH -1 : 0] rx_out_odd; - reg [REGISTER_WIDTH -1 : 0] rx_out_odd_mode; - reg [number_of_channels -1 :0] ddio_h_reg; - reg [number_of_channels -1 :0] ddio_l_reg; - reg [number_of_channels -1 :0] datain_h_reg; - reg [number_of_channels -1 :0] datain_l_reg; - reg [number_of_channels -1 :0] datain_l_latch; - reg select_bit; - reg sync_clock; - -// INTERNAL WIRE DECLARATION - wire [REGISTER_WIDTH -1 : 0] rx_out; - -// LOCAL INTEGER DECLARATION - integer i; - integer x; - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - - rx_shift_reg = {REGISTER_WIDTH{1'b0}}; - rx_shift_reg1 = {REGISTER_WIDTH{1'b0}}; - rx_shift_reg2 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg1 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg2 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg1_buf1 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg1_buf1_pipe = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg2_buf1 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg1_buf2 = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg1_buf2_pipe = {REGISTER_WIDTH{1'b0}}; - rx_sync_reg2_buf2 = {REGISTER_WIDTH{1'b0}}; - rx_out_odd = {REGISTER_WIDTH{1'b0}}; - rx_out_odd_mode = {REGISTER_WIDTH{1'b0}}; - ddio_h_reg = {number_of_channels{1'b0}}; - ddio_l_reg = {number_of_channels{1'b0}}; - datain_h_reg = {number_of_channels{1'b0}}; - datain_l_reg = {number_of_channels{1'b0}}; - datain_l_latch = {number_of_channels{1'b0}}; - - select_bit = 1'b0; - sync_clock = 1'b0; - end //INITIALIZATION - - -// ALWAYS CONSTRUCT BLOCK - - // This always block implements the altddio_in that takes in the input serial - // data of each channel and deserialized it into two parallel data stream - // (ddio_h_reg and ddio_l_reg). Each parallel data stream will be registered - // before send to shift registers. - always @(posedge rx_fastclk) - begin : DDIO_IN - if (use_extra_ddio_register == "YES") - begin - ddio_h_reg <= rx_in; - datain_h_reg <= ddio_h_reg; - end - else - datain_h_reg <= rx_in; - - datain_l_reg <= datain_l_latch; - end // DDIO_IN - - always @(negedge rx_fastclk) - begin : DDIO_IN_LATCH - if (use_extra_ddio_register == "YES") - begin - ddio_l_reg <= rx_in; - datain_l_latch <= ddio_l_reg; - end - else - datain_l_latch <= rx_in; - end // DDIO_IN_LATCH - - // Loading input data to shift register - always @ (posedge rx_fastclk) - begin : SHIFTREG - - // Implementation for even deserialization factor. - if ((deserialization_factor % 2) == 0) - begin - for (i= 0; i < number_of_channels; i = i+1) - begin - for (x=deserialization_factor-1; x >1; x=x-1) - rx_shift_reg[x + (i * deserialization_factor)] <= - rx_shift_reg [x-2 + (i * deserialization_factor)]; - - rx_shift_reg[i * deserialization_factor] <= datain_h_reg[i]; - rx_shift_reg[(i * deserialization_factor)+1] <= datain_l_reg[i]; - end - end - else // Implementation for odd deserialization factor. - begin - for (i= 0; i < number_of_channels; i = i+1) - begin - for (x=deserialization_factor-1; x >1; x=x-1) - begin - rx_shift_reg1[x + (i * deserialization_factor)] <= - rx_shift_reg1[x-2 + (i * deserialization_factor)]; - - rx_shift_reg2[x + (i * deserialization_factor)] <= - rx_shift_reg2[x-2 + (i * deserialization_factor)]; - end - rx_shift_reg1[i * deserialization_factor] <= datain_h_reg[i]; - rx_shift_reg1[(i * deserialization_factor)+1] <= datain_l_reg[i]; - rx_shift_reg2[i * deserialization_factor] <= rx_shift_reg1[((i+1)* deserialization_factor)-2]; - rx_shift_reg2[(i * deserialization_factor)+1] <= rx_shift_reg1[((i+1)* deserialization_factor)-1]; - end - end - end // SHIFTREG - - always @ (posedge rx_slowclk) - begin : BIT_SELECT - rx_sync_reg1 <= rx_shift_reg1; - rx_sync_reg2 <= rx_shift_reg2; - rx_sync_reg1_buf2_pipe <= rx_sync_reg1_buf2; - - if (rx_locked == 1'b1) - begin - sync_clock <= ~sync_clock; - select_bit <= ~select_bit; - end - - if(use_extra_pll_clk == "NO") - begin - if (select_bit) - rx_out_odd_mode <= rx_sync_reg1_buf1_pipe; - else - rx_out_odd_mode <= rx_sync_reg2_buf1; - end - else - begin - if (select_bit) - rx_out_odd_mode <= rx_sync_reg1_buf2_pipe; - else - rx_out_odd_mode <= rx_sync_reg2_buf2; - end - - rx_out_odd <= rx_out_odd_mode; - end // BIT_SELECT - - always @ (posedge sync_clock) - begin : SYNC_REG - rx_sync_reg1_buf1 <= rx_sync_reg1; - rx_sync_reg2_buf1 <= rx_sync_reg2; - rx_sync_reg1_buf1_pipe <= rx_sync_reg1_buf1; - end // SYNC_REG - - always @ (posedge rx_syncclk) - begin : SYNC_REG2 - rx_sync_reg1_buf2 <= rx_sync_reg1; - rx_sync_reg2_buf2 <= rx_sync_reg2; - end // SYNC_REG2 - -// CONTINOUS ASSIGNMENT - assign rx_out = ((deserialization_factor % 2) == 0) ? rx_shift_reg : - rx_out_odd; -endmodule // flexible_lvds_rx -// END OF MODULE - - -//START_MODULE_NAME-------------------------------------------------------------- -// -// Module Name : altlvds_tx - -// Description : Low Voltage Differential Signaling (LVDS) transmitter -// megafunction. The altlvds_tx megafunction implements a -// serialization transmitter. LVDS is a high speed IO -// interface that uses inputs without a reference voltage. -// LVDS uses two wires carrying differential values to -// create a single channel. These wires are connected to two -// pins on supported device to create a single LVDS channel - -// Limitation : Only available for APEX20KE, APEXII, MERCURY, STRATIX, -// STRATIX GX, STRATIX II, CYCLONE and CYCLONEII families. -// -// Results expected: Output clock, serialized output data and pll locked signal. -// -//END_MODULE_NAME---------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -module altlvds_tx ( - tx_in, - tx_inclock, - tx_enable, - sync_inclock, - tx_pll_enable, - pll_areset, - - tx_out, - tx_outclock, - tx_coreclock, - tx_locked -); - - -// GLOBAL PARAMETER DECLARATION - - // No. of LVDS channels (required) - parameter number_of_channels = 1; - - // No. of bits per channel (required) - parameter deserialization_factor = 4; - - // Indicates whether the tx_in[] and tx_outclock ports should be registered. - parameter registered_input = "ON"; - - // "ON" means that sync_inclock is also used - // (not used for Stratix and Stratix GX devices.) - parameter multi_clock = "OFF"; - - // The period of the input clock in ps (Required) - parameter inclock_period = 10000; - - // Specifies the period of the tx_outclock port as - // [INCLOCK_PERIOD * OUTCLOCK_DIVIDE_BY] - parameter outclock_divide_by = deserialization_factor; - - // The effective clock period to sample output data - parameter inclock_boost = deserialization_factor; - - // Aligns the Most Significant Bit(MSB) to the falling edge of the clock - // instead of the rising edge. (only for APEX II devices) - parameter center_align_msb = "OFF"; - - // The device family to be used. - parameter intended_device_family = "APEX20KE"; - - // Data rate out of the PLL. (required and only for Stratix and - // Stratix GX devices) - parameter output_data_rate = 0; - - // The alignment of the input data with respect to the tx_inclock port. - // (required and only for Stratix and Stratix GX devices) - parameter inclock_data_alignment = "EDGE_ALIGNED"; - - // The alignment of the output data with respect to the tx_outclock port. - // (required and only for Stratix and Stratix GX devices) - parameter outclock_alignment = "EDGE_ALIGNED"; - - // Specifies whether the compiler uses the same PLL for both the LVDS - // receiver and the LVDS transmitter - parameter common_rx_tx_pll = "ON"; - - parameter outclock_resource = "AUTO"; - parameter use_external_pll = "OFF"; - parameter implement_in_les = "OFF"; - parameter preemphasis_setting = 0; - parameter vod_setting = 0; - parameter differential_drive = 0; - - parameter lpm_type = "altlvds_tx"; - parameter lpm_hint = "UNUSED"; - - // Specifies whether the source of the input clock is from a PLL - parameter clk_src_is_pll = "off"; - - -// LOCAL PARAMETER DECLARATION - - // A APEX20KE type of LVDS? - parameter APEX20KE_TX_STYLE = (intended_device_family == "APEX20KE") || - (intended_device_family == "EXCALIBUR_ARM") || - (intended_device_family == "EXCALIBUR_MIPS") || - (intended_device_family == "APEX20KC") - ? 1 : 0; - - // A APEXII type of LVDS? - parameter APEXII_TX_STYLE = (intended_device_family == "APEXII") || - (intended_device_family == "APEX II") - ? 1 : 0; - - // A MERCURY type of LVDS? - parameter MERCURY_TX_STYLE = (intended_device_family == "MERCURY") || - (intended_device_family == "Mercury") - ? 1 : 0; - - // A STRATIX type of LVDS? - parameter STRATIX_TX_STYLE = (intended_device_family == "Stratix") || - (intended_device_family == "STRATIX") || - (intended_device_family == "STRATIXGX") || - (intended_device_family == "STRATIX-GX") || - (intended_device_family == "Stratix GX") || - (intended_device_family == "HardCopy Stratix") || - (intended_device_family == "HARDCOPY STRATIX") || - (intended_device_family == "hardcopy stratix") || - (intended_device_family == "HardcopyStratix") || - (intended_device_family == "HARDCOPYSTRATIX") || - (intended_device_family == "hardcopystratix") - ? 1 : 0; - - // A STRATIXII type of LVDS? - parameter STRATIXII_TX_STYLE = ((intended_device_family == "Stratix II") || - (intended_device_family == "StratixII") || - (intended_device_family == "HardCopy II") || - (intended_device_family == "HardCopyII") || - (intended_device_family == "HARDCOPY II") || - (intended_device_family == "HARDCOPYII") || - (intended_device_family == "hardcopy ii") || - (intended_device_family == "hardcopyii") || - (intended_device_family == "Stratix II GX") || - (intended_device_family == "STRATIX II GX") || - (intended_device_family == "stratix ii gx") || - (intended_device_family == "StratixIIGX") || - (intended_device_family == "STRATIXIIGX") || - (intended_device_family == "stratixiigx")) - ? 1 : 0; - - // A Cyclone type of LVDS? - parameter CYCLONE_TX_STYLE = ((intended_device_family == "Cyclone") || - (intended_device_family == "CYCLONE") || - (intended_device_family == "cyclone")) - ? 1 : 0; - - // A Cyclone II type of LVDS? - parameter CYCLONEII_TX_STYLE = ((intended_device_family == "Cyclone II") || - (intended_device_family == "CYCLONE II") || - (intended_device_family == "cyclone ii") || - (intended_device_family == "Cycloneii") || - (intended_device_family == "CYCLONEII") || - (intended_device_family == "cycloneii")) - ? 1 : 0; - - // Is the device family has flexible LVDS? -parameter FAMILY_HAS_FLEXIBLE_LVDS = ((CYCLONE_TX_STYLE == 1) || - (CYCLONEII_TX_STYLE == 1) || - (((STRATIX_TX_STYLE == 1) || (STRATIXII_TX_STYLE == 1)) && - (implement_in_les == "ON"))) - ? 1 : 0; - - // Is the family has Stratix style PLL - parameter FAMILY_HAS_STRATIX_STYLE_PLL = ((STRATIX_TX_STYLE == 1) || - (CYCLONE_TX_STYLE == 1)) - ? 1 : 0; - - // Is the family has Stratix style PLL - parameter FAMILY_HAS_STRATIXII_STYLE_PLL = ((STRATIXII_TX_STYLE == 1) || - (CYCLONEII_TX_STYLE == 1)) - ? 1 : 0; - - // Parameter to check whether the selected lvds trasmitter use - // holding register or not. - parameter TX_NEED_HOLD = (((APEX20KE_TX_STYLE == 1) && - (deserialization_factor >= 7)) || - ((APEXII_TX_STYLE == 1) && - (deserialization_factor >= 5)) || - ((MERCURY_TX_STYLE == 1) && - (deserialization_factor >= 7))) - ? 1 : 0; - - // calculate clock boost for device family other than STRATIX and STRATIX GX - parameter INT_CLOCK_BOOST = (APEX20KE_TX_STYLE == 1) - ? deserialization_factor : - ((inclock_boost == 0) - ? deserialization_factor - : inclock_boost); - - // M value for Stratix/Stratix II/Cyclone/Cyclone II PLL - parameter PLL_M_VALUE = (((output_data_rate * inclock_period) - + (5 * 100000)) / 1000000); - - // D value for Stratix/Stratix II/Cyclone/Cyclone II PLL - parameter PLL_D_VALUE = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((output_data_rate !=0) && (inclock_period !=0) - ? 2 - : 1) - : 1; - - // calculate clock boost for STRATIX, STRATIX GX and STRATIX II - parameter STRATIX_INCLOCK_BOOST = - ((output_data_rate !=0) && (inclock_period !=0)) - ? PLL_M_VALUE : - ((inclock_boost == 0) - ? deserialization_factor - : inclock_boost); - - // parameter for inclock phase shift. Add 0.5 to the calculated result to - // round up result to the nearest integer. - // CENTER_ALIGNED means 180 degrees - parameter PHASE_INCLOCK = (inclock_data_alignment == "EDGE_ALIGNED")? - 0 : - (inclock_data_alignment == "CENTER_ALIGNED") ? - (0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "45_DEGREES") ? - (0.125 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "90_DEGREES") ? - (0.25 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "135_DEGREES") ? - (0.375 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "180_DEGREES") ? - (0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "225_DEGREES") ? - (0.625 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "270_DEGREES") ? - (0.75 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: - (inclock_data_alignment == "315_DEGREES") ? - (0.875 * inclock_period / STRATIX_INCLOCK_BOOST) + 0.5: 0; - - // parameter for Stratix II inclock phase shift. - parameter STXII_PHASE_INCLOCK = PHASE_INCLOCK - (0.5 * inclock_period / STRATIX_INCLOCK_BOOST); - - // parameter for outclock phase shift. Add 0.5 to the calculated result to - // round up result to the nearest integer. - parameter PHASE_OUTCLOCK = (outclock_alignment == "EDGE_ALIGNED") ? - 0: - (outclock_alignment == "CENTER_ALIGNED") ? - ((0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "45_DEGREES") ? - ((0.125 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "90_DEGREES") ? - ((0.25 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "135_DEGREES") ? - ((0.375 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "180_DEGREES") ? - ((0.5 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "225_DEGREES") ? - ((0.625 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "270_DEGREES") ? - ((0.75 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): - (outclock_alignment == "315_DEGREES") ? - ((0.875 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5): 0; - - // parameter for Stratix and Stratix GX outclock phase shift. - // Add 0.5 to the calculated result to round up result to the nearest integer. - parameter STX_PHASE_OUTCLOCK = ((outclock_divide_by == 1) || - (outclock_alignment == "45_DEGREES") || - (outclock_alignment == "90_DEGREES") || - (outclock_alignment == "135_DEGREES")) ? - PHASE_OUTCLOCK + PHASE_INCLOCK: - ((outclock_alignment == "180_DEGREES") || - (outclock_alignment == "CENTER_ALIGNED")) ? - PHASE_INCLOCK : - (outclock_alignment == "225_DEGREES") ? - ((0.125 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5 + PHASE_INCLOCK): - (outclock_alignment == "270_DEGREES") ? - ((0.25 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5 + PHASE_INCLOCK): - (outclock_alignment == "315_DEGREES") ? - ((0.375 * inclock_period / STRATIX_INCLOCK_BOOST) + - 0.5 + PHASE_INCLOCK): PHASE_INCLOCK; - - // parameter for Stratix II outclock phase shift. - parameter STXII_PHASE_OUTCLOCK = STX_PHASE_OUTCLOCK - (0.5 * inclock_period / STRATIX_INCLOCK_BOOST); - - parameter REGISTER_WIDTH = deserialization_factor * number_of_channels; - - // input clock period for PLL. - parameter CLOCK_PERIOD = (deserialization_factor > 2) ? inclock_period : 10000; - - -// INPUT PORT DECLARATION - - // Input data (required) - input [REGISTER_WIDTH -1 : 0] tx_in; - - // Input clock (required) - input tx_inclock; - - input tx_enable; - - // Optional clock for input registers (Required if "multi_clock" parameters - // is turned on) - input sync_inclock; - - // Enable control for the LVDS PLL - input tx_pll_enable; - - // Asynchronously resets all counters to initial values (only for Stratix - // and Stratix GX devices) - input pll_areset; - - - -// OUTPUT PORT DECLARATION - - // Serialized data signal(required) - output [number_of_channels-1 :0] tx_out; - - // External reference clock - output tx_outclock; - - // Output clock used to feed non-peripheral logic. - // Only available for Mercury, Stratix, and Stratix GX devices only. - output tx_coreclock; - - // Gives the status of the LVDS PLL - // (when the PLL is locked, this signal is VCC. GND otherwise) - output tx_locked; - - -// INTERNAL REGISTERS DECLARATION - - reg [REGISTER_WIDTH -1 : 0] tx_hold_reg; - reg [REGISTER_WIDTH -1 : 0] tx_in_reg; - reg [REGISTER_WIDTH -1 : 0] tx_shift_reg; - reg [REGISTER_WIDTH -1 : 0] tx_parallel_load_reg; - reg tx_mercury_core_clock; - reg fb; - reg [number_of_channels-1 :0] tx_out_apex; - reg [number_of_channels-1 :0] tx_out_stratix; - reg [number_of_channels-1 :0] tx_ddio_out; - reg [number_of_channels-1 :0] dataout_l; - reg [number_of_channels-1 :0] dataout_h; - reg enable0_reg1; - reg enable0_reg2; - reg enable0_neg; - reg tx_fastclk_pre; - reg [9 : 0] stx_phase_shift_txdata; - reg [9 : 0] phase_shift_txdata; - - -// INTERNAL WIRE DECLARATION - - wire [REGISTER_WIDTH -1 : 0] tx_in_int; - wire tx_fastclk; - wire tx_slowclk; - wire tx_reg_clk; - wire tx_hold_clk; - wire tx_coreclock_int; - wire tx_locked_int; - wire unused_clk_ext; - wire [2:0] altclklock_clk; - wire altclklock_locked; - wire altclklock_inclock; - wire altclklock_clkena; - wire [1:0] stratix_pll_inclock; - wire [1:0] stratixii_pll_inclock; - wire [5:0] stratix_pll_outclock; - wire [5:0] stratixii_pll_outclock; - wire stratix_pll_enable; - wire stratixii_pll_enable; - wire stratix_pll_areset; - wire stratixii_pll_areset; - wire stratix_locked; - wire stratixii_locked; - wire stratix_enable0; - wire stratixii_enable0; - wire stratix_enable1; - wire stratixii_enable1; - wire stratix_outclock; - wire stratixii_outclock; - wire stratixii_sclkout0; - wire stratixii_sclkout1; - wire stratix_inclock; - wire stratix_enable; - wire stratixii_inclock; - wire stratixii_enable; - wire flvds_fastclk; - wire flvds_slowclk; - wire flvds_regclk; - wire[number_of_channels-1 :0] flvds_dataout; - -// INTERNAL TRI DECLARATION - - tri1 tx_enable; - tri0 sync_inclock; - tri1 tx_pll_enable; - tri0 pll_areset; - -// LOCAL INTEGER DECLARATION - - integer count; - integer i; - integer i1; - integer i2; - integer posedge_count; - integer negedge_count; - integer shift_data; - -// LOCAL TIME DECLARATION - - time tx_out_delay; - -// COMPONENT INSTANTIATIONS - ALTERA_DEVICE_FAMILIES dev (); - -// INITIAL CONSTRUCT BLOCK - - initial - begin : INITIALIZATION - tx_in_reg = {REGISTER_WIDTH{1'b0}}; - tx_hold_reg = {REGISTER_WIDTH{1'b0}}; - tx_parallel_load_reg = {REGISTER_WIDTH{1'b0}}; - tx_shift_reg = {REGISTER_WIDTH{1'b0}}; - - tx_out_apex = {number_of_channels{1'b0}}; - tx_out_stratix = {number_of_channels{1'b0}}; - tx_ddio_out = {number_of_channels{1'b0}}; - dataout_l = {number_of_channels{1'b0}}; - dataout_h = {number_of_channels{1'b0}}; - - fb = 'b1; - count = 0; - shift_data = 0; - negedge_count = 0; - posedge_count = 0; - - tx_out_delay = inclock_period/(deserialization_factor*2); - - // Input data needed by stratix_tx_outclk in order to generate the tx_outclock. - stx_phase_shift_txdata = 0; - if (outclock_divide_by > 1) - begin - if (deserialization_factor == 4) - begin - if ( outclock_divide_by == 2) - stx_phase_shift_txdata[3:0] = 4'b1010; - else if (outclock_divide_by == 4) - stx_phase_shift_txdata[3:0] = 4'b0011; - end - else if (deserialization_factor == 8) - begin - if (outclock_divide_by == 2) - stx_phase_shift_txdata[7:0] = 8'b10101010; - else if (outclock_divide_by == 4) - stx_phase_shift_txdata[7:0] = 8'b00110011; - else if (outclock_divide_by == 8) - stx_phase_shift_txdata[7:0] = 8'b11000011; - end - else if (deserialization_factor == 10) - begin - if (outclock_divide_by == 2) - stx_phase_shift_txdata[9:0] = 10'b1010101010; - else if (outclock_divide_by == 10) - stx_phase_shift_txdata[9:0] = 10'b1110000011; - end - else if (deserialization_factor == 7) - if (outclock_divide_by == 7) - stx_phase_shift_txdata[6:0] = 7'b1100011; - end - - // Input data needed by stratixii_tx_outclk in order to generate the tx_outclock. - phase_shift_txdata = 0; - if (outclock_divide_by > 1) - begin - if (deserialization_factor == 4) - begin - if ( outclock_divide_by == 2) - phase_shift_txdata[3:0] = 4'b1010; - else if (outclock_divide_by == 4) - phase_shift_txdata[3:0] = 4'b1100; - end - else if (deserialization_factor == 6) - begin - if (outclock_divide_by == 2) - phase_shift_txdata[5:0] = 6'b101010; - else if (outclock_divide_by == 6) - phase_shift_txdata[5:0] = 6'b111000; - end - else if (deserialization_factor == 8) - begin - if (outclock_divide_by == 2) - phase_shift_txdata[7:0] = 8'b10101010; - else if (outclock_divide_by == 4) - phase_shift_txdata[7:0] = 8'b11001100; - else if (outclock_divide_by == 8) - phase_shift_txdata[7:0] = 8'b11110000; - end - else if (deserialization_factor == 10) - begin - if (outclock_divide_by == 2) - phase_shift_txdata[9:0] = 10'b1010101010; - else if (outclock_divide_by == 10) - phase_shift_txdata[9:0] = 10'b1111100000; - end - else if (deserialization_factor == 7) - if (outclock_divide_by == 7) - phase_shift_txdata[6:0] = 7'b1111000; - end - - // Check for illegal mode settings - if ((APEX20KE_TX_STYLE == 1) && (deserialization_factor != 1) && - (deserialization_factor != 4) && (deserialization_factor != 7) && - (deserialization_factor != 8)) - begin - $display ($time, "ps Error: APEX20KE does not support the specified deserialization factor!"); - $finish; - end - else if ((MERCURY_TX_STYLE == 1) && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (((deserialization_factor > 12) && - (deserialization_factor != 14) && - (deserialization_factor != 16) && - (deserialization_factor != 18) && - (deserialization_factor != 20)) ||(deserialization_factor < 3))) - begin - $display ($time, "ps Error: MERCURY does not support the specified deserialization factor!"); - $finish; - end - else if (((APEXII_TX_STYLE == 1)) && - ((deserialization_factor > 10) || (deserialization_factor < 4)) && - (deserialization_factor != 1) && (deserialization_factor != 2)) - begin - $display ($time, "ps Error: APEXII does not support the specified deserialization factor!"); - $finish; - end - else if ((STRATIX_TX_STYLE == 1) && - (deserialization_factor != 1) && (deserialization_factor != 2) && - ((deserialization_factor > 10) || (deserialization_factor < 4))) - begin - $display ($time, "ps Error: STRATIX does not support the specified deserialization factor!"); - $finish; - end - else if ((STRATIXII_TX_STYLE == 1) && - (deserialization_factor > 10)) - begin - $display ($time, "ps Error: STRATIX II does not support the specified deserialization factor!"); - $finish; - end - - if (CYCLONE_TX_STYLE == 1) - begin - if ((use_external_pll == "ON") && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (deserialization_factor != 4) && (deserialization_factor != 6) && - (deserialization_factor != 8) && (deserialization_factor != 10)) - begin - $display ($time, "ps Error: Cyclone does not support the specified deserialization factor when use_external_pll is 'ON'!"); - $finish; - end - else if ((deserialization_factor > 10) || (deserialization_factor == 3)) - begin - $display ($time, "ps Error: Cyclone does not support the specified deserialization factor when use_external_pll is 'OFF'!"); - $finish; - end - end - - if (CYCLONEII_TX_STYLE == 1) - begin - if ((use_external_pll == "ON") && - (deserialization_factor != 1) && (deserialization_factor != 2) && - (deserialization_factor != 4) && (deserialization_factor != 6) && - (deserialization_factor != 8) && (deserialization_factor != 10)) - begin - $display ($time, "ps Error: Cyclone II does not support the specified deserialization factor when use_external_pll is 'ON'!"); - $finish; - end - else if ((deserialization_factor > 10) || (deserialization_factor == 3)) - begin - $display ($time, "ps Error: Cyclone II does not support the specified deserialization factor when use_external_pll is 'OFF'!"); - $finish; - end - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $finish; - end - - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - begin - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - $finish; - end - - end // INITIALIZATION - - -// COMPONENT INSTANTIATIONS - - // PLL for device family other than Stratix, Stratix GX and Stratix II - altclklock u0 ( - .inclock(altclklock_inclock), // Required - .inclocken(altclklock_clkena), - .fbin(fb), - .clock0(altclklock_clk[0]), - .clock1(altclklock_clk[1]), - .clock2(altclklock_clk[2]), - .clock_ext(unused_clk_ext), - .locked(altclklock_locked)); - - defparam - u0.inclock_period = CLOCK_PERIOD, - u0.clock0_boost = INT_CLOCK_BOOST, - u0.clock1_boost = INT_CLOCK_BOOST, - u0.clock1_divide = deserialization_factor, - u0.clock2_boost = (MERCURY_TX_STYLE == 1) ? - INT_CLOCK_BOOST : 1, - u0.clock2_divide = (MERCURY_TX_STYLE == 1) ? - outclock_divide_by : 1, - u0.valid_lock_cycles = (APEXII_TX_STYLE == 1) ? 1 : - (MERCURY_TX_STYLE == 1) ? 3 : 5, - u0.intended_device_family = ((APEX20KE_TX_STYLE == 1 ) || - (APEXII_TX_STYLE == 1 ) || - (MERCURY_TX_STYLE == 1 )) - ? intended_device_family - : "APEX20KE"; - - - // PLL for Stratix and Stratix GX - MF_stratix_pll u1 ( - .inclk(stratix_pll_inclock), // Required - .ena(stratix_pll_enable), - .areset(stratix_pll_areset), - .clkena(6'b111111), - .clk (stratix_pll_outclock), - .locked(stratix_locked), - .fbin(1'b1), - .clkswitch(1'b0), - .pfdena(1'b1), - .extclkena(4'b0), - .scanclk(1'b0), - .scanaclr(1'b0), - .scandata(1'b0), - .comparator(1'b0), - .extclk(), - .clkbad(), - .enable0(stratix_enable0), - .enable1(stratix_enable1), - .activeclock(), - .clkloss(), - .scandataout() ); - - defparam - u1.primary_clock = "inclk0", - u1.pll_type = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? "flvds" - : "lvds", - u1.inclk0_input_frequency = CLOCK_PERIOD, - u1.valid_lock_multiplier = 1, - u1.clk0_multiply_by = STRATIX_INCLOCK_BOOST, - u1.clk0_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE - : 1, - u1.clk0_phase_shift_num = PHASE_INCLOCK, - u1.clk1_multiply_by = STRATIX_INCLOCK_BOOST, - u1.clk1_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE*outclock_divide_by - : 1, - u1.clk1_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_OUTCLOCK - : STX_PHASE_OUTCLOCK, - u1.clk2_multiply_by = STRATIX_INCLOCK_BOOST, - u1.clk2_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((deserialization_factor%2 == 0) - ? PLL_D_VALUE*deserialization_factor/2 - : PLL_D_VALUE*deserialization_factor) - : deserialization_factor, - u1.clk2_phase_shift_num = PHASE_INCLOCK, - u1.simulation_type = "functional", - u1.m = 0; - - // PLL for Stratix II - MF_stratixii_pll u2 ( - .inclk(stratixii_pll_inclock), // Required - .ena(stratixii_pll_enable), - .areset(stratixii_pll_areset), - .clk (stratixii_pll_outclock ), - .locked(stratixii_locked), - .fbin(1'b1), - .clkswitch(1'b0), - .pfdena(1'b1), - .scanclk(1'b0), - .scanread(1'b0), - .scanwrite(1'b0), - .scandata(1'b0), - .testin(4'b0), - .clkbad(), - .enable0(stratixii_enable0), - .enable1(stratixii_enable1), - .activeclock(), - .clkloss(), - .scandataout(), - .scandone(), - .sclkout({stratixii_sclkout1, stratixii_sclkout0}), - .testupout(), - .testdownout()); - - defparam - u2.primary_clock = "inclk0", - u2.pll_type = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? "flvds" - : "lvds", - u2.vco_multiply_by = STRATIX_INCLOCK_BOOST, - u2.vco_divide_by = 1, - u2.inclk0_input_frequency = CLOCK_PERIOD, - u2.clk0_multiply_by = STRATIX_INCLOCK_BOOST, - u2.clk0_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE - : deserialization_factor, - u2.clk0_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_INCLOCK - : STXII_PHASE_INCLOCK, - u2.clk1_multiply_by = STRATIX_INCLOCK_BOOST, - u2.clk1_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PLL_D_VALUE*outclock_divide_by - : deserialization_factor, - u2.clk1_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_OUTCLOCK - : STXII_PHASE_OUTCLOCK, - u2.clk2_multiply_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? STRATIX_INCLOCK_BOOST - : 1, - u2.clk2_divide_by = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? ((deserialization_factor%2 == 0) - ? PLL_D_VALUE*deserialization_factor/2 - : PLL_D_VALUE*deserialization_factor) - : 1, - u2.clk2_phase_shift_num = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? PHASE_INCLOCK - : 1, - u2.sclkout0_phase_shift = STXII_PHASE_INCLOCK, - u2.sclkout1_phase_shift = STXII_PHASE_OUTCLOCK, - u2.simulation_type = "functional", - u2.m = 0; - - - // This module produces output clock for Stratix and Stratix GX. - stratix_tx_outclk u3 ( - .tx_in(stx_phase_shift_txdata), - .tx_fastclk(stratix_inclock), - .tx_enable(stratix_enable), - .tx_out(stratix_outclock)); - defparam - u3.deserialization_factor = deserialization_factor, - u3.bypass_serializer = (outclock_divide_by == 1) ? - "TRUE" : "'FALSE", - u3.use_falling_clock_edge = ((outclock_alignment == "180_DEGREES") || - (outclock_alignment == "CENTER_ALIGNED") || - (outclock_alignment == "225_DEGREES") || - (outclock_alignment == "270_DEGREES") || - (outclock_alignment == "315_DEGREES")) ? - "TRUE" : "FALSE"; - - - // This module produces output clock for StratixII. - stratixii_tx_outclk u4 ( - .tx_in(phase_shift_txdata), - .tx_fastclk(stratixii_inclock), - .tx_enable(stratixii_enable), - .tx_out(stratixii_outclock)); - - defparam - u4.deserialization_factor = deserialization_factor, - u4.bypass_serializer = (outclock_divide_by == 1) ? - "TRUE" : "'FALSE", - u4.use_falling_clock_edge = ((outclock_alignment == "180_DEGREES") || - (outclock_alignment == "CENTER_ALIGNED") || - (outclock_alignment == "225_DEGREES") || - (outclock_alignment == "270_DEGREES") || - (outclock_alignment == "315_DEGREES")) ? - "TRUE" : "FALSE"; - - // This module produces output clock for StratixII. - flexible_lvds_tx u5 ( - .tx_in(tx_in), - .tx_fastclk(flvds_fastclk), - .tx_slowclk(flvds_slowclk), - .tx_regclk(flvds_regclk), - .tx_locked(tx_locked_int), - .tx_out(flvds_dataout)); - - defparam - u5.number_of_channels = number_of_channels, - u5.deserialization_factor = deserialization_factor, - u5.registered_input = registered_input; - -// ALWAYS CONSTRUCT BLOCK - - // For x2 mode. For each data channel, input data are separated into 2 data - // stream which will be transmitted on different edge of input clock. - always @ (posedge tx_inclock) - begin : DDIO_OUT_RECEIVE - if (deserialization_factor == 2) - begin - for (i1 = 0; i1 < number_of_channels; i1 = i1 +1) - begin - dataout_l[i1] <= tx_in_int[i1*2]; - dataout_h[i1] <= tx_in_int[i1*2+1]; - end - end - end // DDIO_OUT_RECEIVE - - // Fast Clock - always @ (posedge tx_fastclk) - begin : FAST_CLOCK_POS - if (deserialization_factor > 2) - begin - - // registering load enable signal - enable0_reg2 <= enable0_reg1; - enable0_reg1 <= (use_external_pll == "ON") ? tx_enable : - (STRATIX_TX_STYLE == 1) ? stratix_enable0 : - stratixii_enable0; - - if ((STRATIX_TX_STYLE == 0) && (STRATIXII_TX_STYLE == 0)) - begin - posedge_count <= (posedge_count+1) % deserialization_factor; - if (posedge_count == 2) - begin - // register incoming data on the third edge - tx_shift_reg <= tx_parallel_load_reg; - count <= 2; - for (i = 0; i < number_of_channels; i = i +1) - // Data in MSB gets shifted out first. - // NB: This happens 1/2clk cycle later for APEXII (MSB - // only) when center_align_msb is ON. - begin - if ((i == number_of_channels-1) && - ((APEXII_TX_STYLE == 1)) && - (center_align_msb == "ON")) - begin - tx_out_apex[i] <= #tx_out_delay - tx_parallel_load_reg[(i+1)*deserialization_factor - 1]; - end - else - begin - tx_out_apex[i] <= tx_parallel_load_reg[(i+1)*deserialization_factor - 1]; - end - end - - end - else - begin - count <= count + 1; - for (i = 0; i < number_of_channels; i = i +1) - // Data in MSB gets shifted out first. - // NB: This happens 1/2clk cycle later for APEXII (MSB - // only) when center_align_msb is ON. - begin - if ((i == number_of_channels-1) && - ((APEXII_TX_STYLE == 1)) && - (center_align_msb == "ON")) - begin - tx_out_apex[i] <= #tx_out_delay - tx_shift_reg[(i+1)*deserialization_factor - count]; - end - else - begin - tx_out_apex[i] <= tx_shift_reg[(i+1)*deserialization_factor - count]; - end - end - end - - // Mercury core clock is assymmetrical for odd deserialization - // factor values. - if (posedge_count == ((deserialization_factor+1)/2+1)) - begin - tx_mercury_core_clock <= ~tx_mercury_core_clock; - end - end - else - begin - if(((STRATIX_TX_STYLE == 1) && (enable0_neg == 1)) || - ((STRATIXII_TX_STYLE == 1) && (enable0_reg1 == 1))) - begin - tx_shift_reg <= tx_parallel_load_reg; - count <= 2; - - for (i = 0; i < number_of_channels; i = i +1) - begin - tx_out_stratix[i] <= tx_parallel_load_reg[(i+1)*deserialization_factor - 1]; - end - end - else - begin - count <= (count % deserialization_factor) + 1; - for (i = 0; i < number_of_channels; i = i +1) - begin - tx_out_stratix[i] <= tx_shift_reg[(i+1)*deserialization_factor - count]; - end - end - - // Loading data to parallel load register for Stratix and - // Stratix GX - if (((STRATIX_TX_STYLE == 1) && (stratix_enable0 == 1)) || - (STRATIXII_TX_STYLE == 1)) - begin - tx_parallel_load_reg <= tx_in_int; - end - end - end - end // FAST_CLOCK_POS - - always @ (negedge tx_fastclk) - begin : FAST_CLOCK_NEG - if (deserialization_factor > 2) - begin - // registering load enable signal - enable0_neg <= enable0_reg2; - - negedge_count <= negedge_count + 1; - - // Loading data to parallel load register for non-STRATIX family - if ((negedge_count == 2) && (STRATIX_TX_STYLE == 0) && - (STRATIXII_TX_STYLE == 0) && - (tx_locked_int == 1)) - begin - if (TX_NEED_HOLD == 1) - begin - tx_parallel_load_reg <= tx_hold_reg; - end - else - begin - tx_parallel_load_reg <= tx_in_int; - end - end - end - end // FAST_CLOCK_NEG - - // Slow Clock - always @ (posedge tx_slowclk) - begin : SLOW_CLOCK - negedge_count <= 0; - tx_mercury_core_clock <= tx_slowclk; - end // SLOW_CLOCK - - // synchronization register - always @ (posedge tx_reg_clk) - begin : SYNC_REGISTER - tx_in_reg <= #5 tx_in; - end // SYNC_REGISTER - - // hold register - always @ (negedge tx_hold_clk) - begin : HOLD_REGISTER - if (deserialization_factor > 1) - begin - tx_hold_reg <= tx_in_int; - end - end // HOLD_REGISTER - - - // CONTINOUS ASSIGNMENT - assign tx_out = (deserialization_factor == 1) - ? tx_in_int : - (deserialization_factor == 2) - ? ((tx_inclock == 1) ? dataout_h : dataout_l) : - (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? flvds_dataout : - ((STRATIX_TX_STYLE == 1) || (STRATIXII_TX_STYLE == 1)) - ? tx_out_stratix - : tx_out_apex; - - assign tx_in_int = (registered_input != "OFF") - ? tx_in_reg - : tx_in; - - assign tx_reg_clk = ((STRATIX_TX_STYLE == 1) || - (((STRATIXII_TX_STYLE == 1) || - (CYCLONE_TX_STYLE == 1) || - (CYCLONEII_TX_STYLE == 1)) && - (use_external_pll == "OFF"))) - ? ((registered_input == "TX_CLKIN") - ? tx_inclock - : tx_coreclock_int) : - (((registered_input == "ON") && - (multi_clock == "ON")) - ? sync_inclock - : tx_inclock); - - assign tx_hold_clk = (multi_clock == "ON") - ? sync_inclock : - ((MERCURY_TX_STYLE == 1) - ? tx_coreclock_int - : tx_inclock); - - assign tx_outclock = (deserialization_factor < 3) - ? tx_inclock : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? stratix_pll_outclock[1] : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? stratixii_pll_outclock[1] : - (STRATIX_TX_STYLE == 1) - ? stratix_outclock : - (STRATIXII_TX_STYLE == 1) - ? stratixii_outclock : - (MERCURY_TX_STYLE == 1) - ? altclklock_clk[2] : - (APEXII_TX_STYLE == 1) - ? tx_inclock - : tx_slowclk; - - assign tx_coreclock = tx_coreclock_int; - - assign tx_coreclock_int = (deserialization_factor < 3) - ? 1'b0 : - (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? flvds_slowclk : - (((deserialization_factor % 2) != 0) && - (MERCURY_TX_STYLE == 1)) - ? tx_mercury_core_clock - : tx_slowclk; - - assign tx_locked = (deserialization_factor > 2) - ? tx_locked_int - : 1'b1; - - assign tx_locked_int = ((STRATIX_TX_STYLE == 1) || - (CYCLONE_TX_STYLE == 1)) - ? stratix_locked : - ((STRATIXII_TX_STYLE == 1) || - (CYCLONEII_TX_STYLE == 1)) - ? stratixii_locked - : altclklock_locked; - - assign tx_fastclk = ((deserialization_factor < 3) || - (FAMILY_HAS_FLEXIBLE_LVDS == 1)) - ? 1'b0 : - (use_external_pll == "ON") - ? tx_inclock : - (STRATIX_TX_STYLE == 1) - ? stratix_pll_outclock[0] : - (STRATIXII_TX_STYLE == 1) - ? stratixii_sclkout0 - : altclklock_clk[0]; - - assign tx_slowclk = ((use_external_pll == "ON") || - (FAMILY_HAS_FLEXIBLE_LVDS == 1)) - ? 1'b0 : - (STRATIX_TX_STYLE == 1) - ? stratix_pll_outclock[2] : - (STRATIXII_TX_STYLE == 1) - ? stratixii_pll_outclock[0] - : altclklock_clk[1]; - - assign altclklock_inclock = ((STRATIX_TX_STYLE == 1) || - (STRATIXII_TX_STYLE == 1) || - (FAMILY_HAS_FLEXIBLE_LVDS == 1)) - ? 0 - : tx_inclock; - - assign altclklock_clkena = ((FAMILY_HAS_STRATIX_STYLE_PLL == 1) || - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? 0 - : tx_pll_enable; - - assign stratix_pll_inclock[1:0] = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? {1'b0, tx_inclock} - : 2'b00; - - assign stratixii_pll_inclock[1:0] = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? {1'b0, tx_inclock} - : 2'b00; - - assign stratix_pll_enable = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? tx_pll_enable - : 1'b0; - - assign stratixii_pll_enable = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? tx_pll_enable - : 1'b0; - - assign stratix_pll_areset = (FAMILY_HAS_STRATIX_STYLE_PLL == 1) - ? pll_areset - : 1'b0; - - assign stratixii_pll_areset = (FAMILY_HAS_STRATIXII_STYLE_PLL == 1) - ? pll_areset - : 1'b0; - - assign stratix_inclock = ((STRATIX_TX_STYLE == 1) && - (implement_in_les == "OFF")) - ? stratix_pll_outclock[1] - : 1'b0; - - assign stratix_enable = ((STRATIX_TX_STYLE == 1) && - (implement_in_les == "OFF")) - ? stratix_enable1 - : 1'b0; - - assign stratixii_inclock = ((STRATIXII_TX_STYLE == 1) && - (implement_in_les == "OFF")) - ? ((use_external_pll == "ON") - ? tx_inclock - : stratixii_sclkout1) - : 1'b0; - - assign stratixii_enable = ((STRATIXII_TX_STYLE == 1) && - (implement_in_les == "OFF")) - ? ((use_external_pll == "ON") - ? tx_enable - : stratixii_enable1) - : 1'b0; - - assign flvds_fastclk = ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? tx_inclock - : stratix_pll_outclock[0]) : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? tx_inclock - : stratixii_pll_outclock[0]) - : 1'b0; - - assign flvds_slowclk = ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIX_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratix_pll_outclock[2]) : - ((FAMILY_HAS_FLEXIBLE_LVDS == 1) && - (FAMILY_HAS_STRATIXII_STYLE_PLL == 1)) - ? ((use_external_pll == "ON") - ? 1'b0 - : stratixii_pll_outclock[2]) - : 1'b0; - - assign flvds_regclk = (FAMILY_HAS_FLEXIBLE_LVDS == 1) - ? tx_reg_clk - : 1'b0; - -endmodule // altlvds_tx -// END OF MODULE - - -//START_MODULE_NAME-------------------------------------------------------------- -// -// Module Name : stratix_tx_outclk - -// Description : This module is used to generate the tx_outclock for Stratix -// family. - -// Limitation : Only available STRATIX family. -// -// Results expected: Output clock. -// -//END_MODULE_NAME---------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -module stratix_tx_outclk ( - tx_in, - tx_fastclk, - tx_enable, - tx_out -); - -// GLOBAL PARAMETER DECLARATION - // No. of bits per channel (required) - parameter deserialization_factor = 4; - parameter bypass_serializer = "FALSE"; - parameter use_falling_clock_edge = "FALSE"; - -// INPUT PORT DECLARATION - // Input data (required) - input [9 : 0] tx_in; - // Input clock (required) - input tx_fastclk; - input tx_enable; - -// OUTPUT PORT DECLARATION - // Serialized data signal(required) - output tx_out; - -// INTERNAL REGISTERS DECLARATION - reg [deserialization_factor -1 : 0] tx_shift_reg; - reg [deserialization_factor -1 : 0] tx_parallel_load_reg; - reg tx_out_neg; - reg enable1_reg0; - reg enable1_reg1; - reg enable1_reg2; - -// INTERNAL TRI DECLARATION - tri1 tx_enable; - -// LOCAL INTEGER DECLARATION - integer x; - -// INITIAL CONSTRUCT BLOCK - - initial - begin : INITIALIZATION - tx_parallel_load_reg = {deserialization_factor{1'b0}}; - tx_shift_reg = {deserialization_factor{1'b0}}; - end // INITIALIZATION - -// ALWAYS CONSTRUCT BLOCK - - // registering load enable signal - always @ (posedge tx_fastclk) - begin : LOAD_ENABLE_POS - if (tx_fastclk === 1'b1) - begin - enable1_reg1 <= enable1_reg0; - enable1_reg0 <= tx_enable; - end - end // LOAD_ENABLE_POS - - always @ (negedge tx_fastclk) - begin : LOAD_ENABLE_NEG - enable1_reg2 <= enable1_reg1; - end // LOAD_ENABLE_NEG - - // Fast Clock - always @ (posedge tx_fastclk) - begin : POSEDGE_FAST_CLOCK - if (enable1_reg2 == 1'b1) - tx_shift_reg <= tx_parallel_load_reg; - else// Shift data from shift register to tx_out - begin - for (x=deserialization_factor-1; x >0; x=x-1) - tx_shift_reg[x] <= tx_shift_reg [x-1]; - end - - tx_parallel_load_reg <= tx_in[deserialization_factor-1 : 0]; - end // POSEDGE_FAST_CLOCK - - always @ (negedge tx_fastclk) - begin : NEGEDGE_FAST_CLOCK - tx_out_neg <= tx_shift_reg[deserialization_factor-1]; - end // NEGEDGE_FAST_CLOCK - -// CONTINUOUS ASSIGNMENT - assign tx_out = (bypass_serializer == "TRUE") ? tx_fastclk : - (use_falling_clock_edge == "TRUE") ? tx_out_neg : - tx_shift_reg[deserialization_factor-1]; - -endmodule // stratix_tx_outclk -// END OF MODULE - -//START_MODULE_NAME-------------------------------------------------------------- -// -// Module Name : stratixii_tx_outclk - -// Description : This module is used to generate the tx_outclock for StratixII -// family. - -// Limitation : Only available STRATIX II family. -// -// Results expected: Output clock. -// -//END_MODULE_NAME---------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -module stratixii_tx_outclk ( - tx_in, - tx_fastclk, - tx_enable, - tx_out -); - -// GLOBAL PARAMETER DECLARATION - // No. of bits per channel (required) - parameter deserialization_factor = 4; - parameter bypass_serializer = "FALSE"; - parameter use_falling_clock_edge = "FALSE"; - -// INPUT PORT DECLARATION - // Input data (required) - input [9 : 0] tx_in; - // Input clock (required) - input tx_fastclk; - input tx_enable; - -// OUTPUT PORT DECLARATION - // Serialized data signal(required) - output tx_out; - -// INTERNAL REGISTERS DECLARATION - reg [deserialization_factor -1 : 0] tx_shift_reg; - reg [deserialization_factor -1 : 0] tx_parallel_load_reg; - reg tx_out_reg; - reg tx_out_neg; - reg enable1_reg; - -// INTERNAL TRI DECLARATION - tri1 tx_enable; - -// LOCAL INTEGER DECLARATION - integer i1; - integer i2; - integer x; - -// INITIAL CONSTRUCT BLOCK - - initial - begin : INITIALIZATION - tx_parallel_load_reg = {deserialization_factor{1'b0}}; - tx_shift_reg = {deserialization_factor{1'b0}}; - - enable1_reg = 0; - - end // INITIALIZATION - -// ALWAYS CONSTRUCT BLOCK - - // Fast Clock - always @ (posedge tx_fastclk) - begin : POSEDGE_FAST_CLOCK - // registering enable1 signal - enable1_reg <= tx_enable; - - if (enable1_reg == 1'b1) - tx_shift_reg <= tx_parallel_load_reg; - else// Shift data from shift register to tx_out - begin - for (x=deserialization_factor-1; x >0; x=x-1) - tx_shift_reg[x] <= tx_shift_reg [x-1]; - end - - tx_parallel_load_reg <= tx_in[deserialization_factor-1 : 0]; - end // POSEDGE_FAST_CLOCK - - always @ (negedge tx_fastclk) - begin : NEGEDGE_FAST_CLOCK - tx_out_neg <= tx_shift_reg[deserialization_factor-1]; - end // NEGEDGE_FAST_CLOCK - -// CONTINUOUS ASSIGNMENT - assign tx_out = (bypass_serializer == "TRUE") ? tx_fastclk : - (use_falling_clock_edge == "TRUE") ? tx_out_neg : - tx_shift_reg[deserialization_factor-1]; - -endmodule // stratixii_tx_outclk -// END OF MODULE - - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : flexible_lvds_tx -// -// Description : flexible lvds transmitter -// -// Limitation : Only available to Cyclone and Cyclone II -// families. -// -// Results expected: Serialized output data. -// -//END_MODULE_NAME---------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module flexible_lvds_tx ( - tx_in, // input serial data - tx_fastclk, // fast clock from pll - tx_slowclk, // slow clock from pll - tx_regclk, // clock for registering input data - tx_locked, // locked signal from PLL - tx_out // deserialized output data -); - -// GLOBAL PARAMETER DECLARATION - parameter number_of_channels = 1; - parameter deserialization_factor = 4; - parameter registered_input = "ON"; - -// LOCAL PARAMETER DECLARATION - parameter REGISTER_WIDTH = deserialization_factor*number_of_channels; - parameter DOUBLE_DESER = deserialization_factor*2; - -// INPUT PORT DECLARATION - input [REGISTER_WIDTH -1: 0] tx_in; - input tx_fastclk; - input tx_slowclk; - input tx_regclk; - input tx_locked; - -// OUTPUT PORT DECLARATION - output [number_of_channels -1 :0] tx_out; - -// INTERNAL REGISTERS DECLARATION - reg [REGISTER_WIDTH -1 : 0] tx_reg; - reg [(REGISTER_WIDTH*2) -1 : 0] tx_reg2; - reg [REGISTER_WIDTH -1 : 0] tx_shift_reg; - reg [(REGISTER_WIDTH*2) -1 : 0] tx_shift_reg2; - reg [REGISTER_WIDTH -1 :0] h_sync_a; - reg [(REGISTER_WIDTH*2) -1 :0] sync_b_reg; - reg [number_of_channels -1 :0] dataout_h; - reg [number_of_channels -1 :0] dataout_l; - reg [number_of_channels -1 :0] dataout_tmp; - reg [number_of_channels -1 :0] tx_ddio_out; - -// INTERNAL WIRE DECLARATION - wire [REGISTER_WIDTH -1 : 0] tx_in_int; - wire [(REGISTER_WIDTH*2) -1 : 0] tx_in_int2; - - -// LOCAL INTEGER DECLARATION - integer i1; - integer i2; - integer i3; - integer x; - integer x2; - integer loadcnt; - -// INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZATION - tx_reg = {REGISTER_WIDTH{1'b0}}; - tx_reg2 = {(REGISTER_WIDTH*2){1'b0}}; - - tx_shift_reg = {REGISTER_WIDTH{1'b0}}; - tx_shift_reg2 = {(REGISTER_WIDTH*2){1'b0}}; - - dataout_h = {number_of_channels{1'b0}}; - dataout_l = {number_of_channels{1'b0}}; - dataout_tmp = {number_of_channels{1'b0}}; - tx_ddio_out = {number_of_channels{1'b0}}; - - h_sync_a = {REGISTER_WIDTH{1'b0}}; - sync_b_reg = {(REGISTER_WIDTH*2){1'b0}}; - - loadcnt = 0; - end //INITIALIZATION - - -// ALWAYS CONSTRUCT BLOCK - - // For each data channel, input data are separated into 2 data - // stream which will be transmitted on different edge of input clock. - always @ (posedge tx_fastclk) - begin : DDIO_OUT_POS - if ((deserialization_factor % 2) == 0) - begin - for (i1 = 0; i1 < number_of_channels; i1 = i1 +1) - begin - dataout_h[i1] <= tx_shift_reg[(i1+1)*deserialization_factor-1]; - dataout_l[i1] <= tx_shift_reg[(i1+1)*deserialization_factor-2]; - dataout_tmp[i1] <= tx_shift_reg[(i1+1)*deserialization_factor-1]; - end - end - else - begin - for (i1 = 0; i1 < number_of_channels; i1 = i1 +1) - begin - dataout_h[i1] <= tx_shift_reg2[(i1+1)*DOUBLE_DESER-1]; - dataout_l[i1] <= tx_shift_reg2[(i1+1)*DOUBLE_DESER-2]; - dataout_tmp[i1] <= tx_shift_reg2[(i1+1)*DOUBLE_DESER-1]; - end - end - end // DDIO_OUT_POS - - always @ (negedge tx_fastclk) - begin : DDIO_OUT_NEG - dataout_tmp <= dataout_l; - end // DDIO_OUT_NEG - - // Loading input data to shift register - always @ (posedge tx_fastclk) - begin : SHIFTREG - - // if(tx_locked == 1'b1) - begin - // Implementation for even deserialization factor. - if ((deserialization_factor % 2) == 0) - begin - loadcnt <= (loadcnt + 1) % (deserialization_factor/2); - - if(loadcnt == 0) - tx_shift_reg <= tx_in_int; - else - begin - for (i2= 0; i2 < number_of_channels; i2 = i2+1) - begin - for (x=deserialization_factor-1; x >1; x=x-1) - tx_shift_reg[x + (i2 * deserialization_factor)] <= - tx_shift_reg [x-2 + (i2 * deserialization_factor)]; - end - end - end - else // Implementation for odd deserialization factor. - begin - loadcnt <= (loadcnt + 1) % deserialization_factor; - - if(loadcnt == 0) - tx_shift_reg2 <= tx_in_int2; - else - begin - for (i2= 0; i2 < number_of_channels; i2 = i2+1) - begin - for (x=DOUBLE_DESER-1; x >1; x=x-1) - tx_shift_reg2[x + (i2 * DOUBLE_DESER)] <= - tx_shift_reg2 [x-2 + (i2 * DOUBLE_DESER)]; - end - end - end - end - end // SHIFTREG - - // loading data to synchronization register - always @ (posedge tx_slowclk) - begin : SYNC_REG_POS - h_sync_a <= tx_in; - end // SYNC_REG_POS - - always @ (negedge tx_slowclk) - begin : SYNC_REG_NEG - - for (i3= 0; i3 < number_of_channels; i3 = i3+1) - begin - for (x2=0; x2 < deserialization_factor; x2=x2+1) - begin - sync_b_reg[x2 + (((i3 * 2) + 1) * deserialization_factor)] <= - h_sync_a[x2 + (i3 * deserialization_factor)]; - sync_b_reg[x2 + (i3 * DOUBLE_DESER)] <= - tx_in[x2 + (i3 * deserialization_factor)]; - end - end - end // SYNC_REG_NEG - - // loading data to input register - always @ (posedge tx_regclk) - begin : IN_REG - if ((deserialization_factor % 2) == 0) - tx_reg <= tx_in; - else - tx_reg2 <= sync_b_reg; - end // IN_REG - -// CONTINOUS ASSIGNMENT - assign tx_in_int = (registered_input == "OFF") ? tx_in : tx_reg; - assign tx_in_int2 = (registered_input == "OFF") ? sync_b_reg : tx_reg2; - assign tx_out = dataout_tmp; - - -endmodule // flexible_lvds_tx -// END OF MODULE - - -//START_MODULE_NAME---------------------------------------------------- -// -// Module Name : altcam -// -// Description : Content-addressable memory (CAM) Megafunction. The -// data contained in a CAM is a set of patterns that can be searched in a -// single-clock cycle. The altcam megafunction allows each stored pattern -// bit to be specified as a binary "1" bit, binary "0" bit, or a don't care bit. -// Comparing a stored pattern bit that is specified as don't care with its -// corresponding input pattern bit will always result in a match. -// -// Limitation : Input patterns cannot contain don't care bits. -// -// Results expected: If the input pattern given to the CAM matches one -// of the patterns stored in the CAM, the address of the matching stored -// pattern is generated. -// -//END_MODULE_NAME---------------------------------------------------- - -`timescale 1 ps / 1 ps - - -module altcam (pattern, wrx, wrxused, wrdelete, wraddress, wren, - inclock, inclocken, inaclr, outclock, - outclocken, outaclr, mstart, mnext, maddress, mbits, mfound, mcount, - rdbusy, wrbusy); - - parameter width = 1; - parameter widthad = 1; - parameter numwords = 1; - parameter lpm_file = "UNUSED"; - parameter lpm_filex = "UNUSED"; - parameter lpm_hint = "UNUSED"; - parameter match_mode = "MULTIPLE"; - parameter output_reg = "UNREGISTERED"; - parameter output_aclr = "ON"; - parameter pattern_reg = "INCLOCK"; - parameter pattern_aclr = "ON"; - parameter wraddress_aclr = "ON"; - parameter wrx_reg = "INCLOCK"; - parameter wrx_aclr = "ON"; - parameter wrcontrol_aclr = "ON"; - parameter use_eab = "ON"; - parameter lpm_type = "altcam"; - - // Input ports - input [width-1 : 0] pattern; // Required port - input [width-1 : 0] wrx; - input wrxused; - input wrdelete; - input [widthad-1 : 0] wraddress; - input wren; - input inclock; // Required port - input inclocken; - input inaclr; - input outclock; - input outclocken; - input outaclr; - input mstart; - input mnext; - - // Output ports - output [widthad-1 : 0] maddress; - output [numwords-1 : 0] mbits; - output mfound; - output [widthad-1 : 0] mcount; - output rdbusy; - output wrbusy; - - // Nets - tri1 wrxused_pullup; - tri1 inclocken_pullup; - tri1 outclocken_pullup; - tri0 wrdelete_pulldown; - tri0 inaclr_pulldown; - wire [width-1 : 0] pattern_int; - wire [width-1 : 0] wrx_int; - wire wrxused_int; - wire outclock_int; - wire outaclr_int; - wire rdbusy_delayed; - - // Registers - reg [width-1 : 0] pattern_rgd; - reg [width-1 : 0] wrx_rgd; - reg wrxused_rgd; - reg [widthad-1 : 0] wraddress_rgd; - reg wren_rgd; - reg wrdelete_rgd; - reg [widthad-1 : 0] maddress_rgd; - reg [widthad-1 : 0] maddress_int; - reg [numwords-1 : 0] mbits_rgd; - reg [numwords-1 : 0] mbits_int; - reg mfound_rgd; - reg mfound_int; - reg [widthad-1 : 0] mcount_rgd; - reg [widthad-1 : 0] mcount_int; - reg wrbusy_int; - reg rdbusy_int; - - // CAM registers - reg [width-1 : 0] cam_array [numwords-1 : 0]; - reg [width-1 : 0] x_array [numwords-1 : 0]; - - // Read control registers - reg first_read_clock; - reg get_first_match; - reg get_next_match; - reg mstart_rgd1; - reg mstart_rgd2; - reg first_read_in_write; - - // Write control registers - reg write_start; - reg write_start_rgd; - reg write_start_1; - reg write_incomplete; - reg write0; - reg write1; - reg writex; - reg write0_done; - reg write1_done; - reg writex_done; - - // Variables - reg [8*256:1] cam_initf; - reg [8*256:1] cam_initx; - reg [width-1 : 0] word_0; - reg [width-1 : 0] word_1; - reg [widthad-1 : 0] address_0; - reg [widthad-1 : 0] address_1; - reg [numwords-1 : 0] numwords_0; - integer count; - integer index; - integer i, j, k, addr; - integer next_search; - reg restart_read; - reg reset_read; - reg mstart_used; - reg [width-1:0] ipattern; - reg [widthad-1:0] iwraddress; - reg [width-1:0] iwrx; - reg iwren; - reg iwrxused; - reg [numwords-1 : 0] mbits_tmp; - - function read_cam_array; - input [widthad-1 : 0] i; - input [width-1 : 0] j; - begin: READ_CAM - reg [width-1 : 0] tmp; - tmp = cam_array[i]; - read_cam_array = tmp[j]; - end // end READ_CAM - endfunction // end of read_cam_array - - task write_cam_array; - input [widthad-1 : 0] i; - input [width-1 : 0] j; - input value; - begin: WRITE_CAM - reg [width-1 : 0] tmp; - tmp = cam_array[i]; - tmp[j] = value; - cam_array[i] = tmp; - end // end of WRITE_CAM - endtask // end of write_cam_array - - function read_x_array; - input [widthad-1 : 0] i; - input [width-1 : 0] j; - begin: READ_X - reg [width-1 : 0] tmp; - tmp = x_array[i]; - read_x_array = tmp[j]; - end // end of READ_X - endfunction // end of read_x_array - - task write_x_array; - input [widthad-1 : 0] i; - input [width-1 : 0] j; - input value; - begin: WRITE_X - reg [width-1 : 0] tmp; - tmp = x_array[i]; - tmp[j] = value; - x_array[i] = tmp; - end // end of WRITE_X - endtask // end of write_x_array - - ALTERA_MF_MEMORY_INITIALIZATION mem (); - - initial - begin - - // Checking for invalid parameters - if( width <= 0 ) - begin - $display("Error! Value of width parameter must be greater than 0."); - $stop; - end - - if( widthad <= 0 ) - begin - $display("Error! Value of widthad parameter must be greater than 0."); - $stop; - end - - if( (match_mode != "SINGLE") && (match_mode != "MULTIPLE") && (match_mode != "FAST_MULTIPLE") ) - begin - $display("Error! Illegal value for match_mode parameter. The value must be SINGLE, MULTIPLE (the default), or FAST_MULTIPLE."); - $stop; - end - - for (i=0; i=0; i=i-1) - if ((i % 2) == 1 ) - begin - mbits_tmp[i-1] = mbits_tmp[i]; - end - else - begin - begin: WWORD_MM1 for (j=0; j "0" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - end - end else if (ipattern[i] == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - end - end - end - write0_done <= 1'b1; - write1_done <= 1'b0; - writex_done <= 1'b0; - end - //////////////// - // WRITE_ONES // - //////////////// - if (write1 == 1'b1) - begin - for (i =0; i "0" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "1" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - // "X" ==> "0" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - end - end - else if (ipattern[i] == 1'b1) - begin - // "0" ==> "U" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "X" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - end - end - end - write0_done <= 1'b0; - write1_done <= 1'b1; - writex_done <= 1'b0; - end - ///////////// - // WRITE_X // - ///////////// - if (writex == 1'b1) - begin - for (i =0; i "0" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - end - end - else if ((ipattern[i] ^ wrx_int[i]) == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - end - end - end - writex_done <= 1'b1; - write0_done <= 1'b0; - write1_done <= 1'b0; - end - if (wrbusy_int == 1'b1) - begin - write_start_1 <= 1'b1; - write_start <= write_start_1; - end - else - begin - write_start_1 <= 1'b0; - write_start <= 1'b0; - end - end - else - begin // 2 Cycle write - /////////////////// - // 2 CYCLE WRITE // - /////////////////// - ///////////////// - // WRITE_ZEROS // - ///////////////// - if (write0 == 1'b1) - begin - for (i =0; i "0" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - end - end - else if (ipattern[i] == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - end - end - end - write0_done <= 1'b1; - write1_done <= 1'b0; - writex_done <= 1'b0; - end - //////////////// - // WRITE_ONES // - //////////////// - if (write1 == 1'b1) - begin - for (i =0; i "0" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "1" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - // "X" ==> "0" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b0); - write_x_array(addr,i,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - end - end - else if (ipattern[i] == 1'b1) - begin - // "0" ==> "U" - if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b0)) - begin // "0" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b0)) - begin // "1" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "X" ==> "1" - end - else if ((read_cam_array(addr,i)==1'b0 && read_x_array(addr,i)==1'b1)) - begin // "X" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,i)==1'b1 && read_x_array(addr,i)==1'b1)) - begin // "U" - write_cam_array(addr,i,1'b1); - write_x_array(addr,i,1'b1); - end - end - end - write0_done <= 1'b0; - write1_done <= 1'b1; - writex_done <= 1'b0; - end - - if (wrbusy_int == 1'b1) - begin - write_start <= 1'b1; - end - else - begin - write_start <= 1'b0; - end - end // wrxused_int - end - else - begin // if (wrdelete == 1'b1) begin - //////////////////// - // 2 CYCLE DELETE // - //////////////////// - // Delete is a 2-cycle write - //////////////// - // WRITE_ONES // - //////////////// - if (write0 == 1'b1) - begin - for (i =0; i=0; i=i-1) - if ((i % 2) == 1 ) - begin - mbits_tmp[i-1] = mbits_tmp[i]; - end - else - begin - begin: WWORD_MM3 for (j=0; j 0) - begin - mfound_int <= 1'b1; - end - else - begin - mfound_int <= 1'b0; - maddress_int <= word_1; - end - end - mcount_int <= count; - mbits_int <= mbits_tmp; - end - - ///////////////////////////////// - // SINGLE: READ ON NEW PATTERN // - ///////////////////////////////// - if (match_mode == "SINGLE") - begin - mbits_tmp = numwords_0; - index = 0; - count = 0; - begin: MADDR_SM1 for (k=0; k "0" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - end - end - else if (pattern[k] == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - end - end - end - end - //////////////// - // WRITE_ONES // - //////////////// - if (write1_done == 1'b1) - begin - for (k =0; k "0" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "1" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - // "X" ==> "0" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - end - end - else if (pattern[k] == 1'b1) - begin - // "0" ==> "U" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "X" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - end - end - end - end - ///////////// - // WRITE_X // - ///////////// - if (writex_done == 1'b1) - begin - for (k =0; k "0" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - end - end - else if ((pattern[k] ^ wrx_int[k]) == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - end - end - end - end - end - else - begin // 2 Cycle write - /////////////////// - // 2 CYCLE WRITE // - /////////////////// - ///////////////// - // WRITE_ZEROS // - ///////////////// - if (write0_done == 1'b1) - begin - for (k =0; k "0" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "1" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "0" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - end - end - else if (pattern[k] == 1'b1) - begin - // "0" ==> "X" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "X" ==> "X" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b1); - // "U" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - end - end - end - end - //////////////// - // WRITE_ONES // - //////////////// - if (write1_done == 1'b1) - begin - for (k =0; k "0" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "1" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - // "X" ==> "0" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b0); - write_x_array(addr,k,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - end - end - else if (pattern[k] == 1'b1) - begin - // "0" ==> "U" - if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b0)) - begin // "0" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - // "1" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b0)) - begin // "1" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "X" ==> "1" - end - else if ((read_cam_array(addr,k)==1'b0 && read_x_array(addr,k)==1'b1)) - begin // "X" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b0); - // "U" ==> "U" - end - else if ((read_cam_array(addr,k)==1'b1 && read_x_array(addr,k)==1'b1)) - begin // "U" - write_cam_array(addr,k,1'b1); - write_x_array(addr,k,1'b1); - end - end - end - end - end // wrxused_int - end - else - begin // if (wrdelete == 1'b1) begin - //////////////////// - // 2 CYCLE DELETE // - //////////////////// - // Delete is a 2-cycle write - //////////////// - // WRITE_ONES // - //////////////// - if (write0_done == 1'b1) - begin - for (k =0; k=0; k=k-1) - if ((k % 2) == 1 ) - begin - mbits_tmp[k-1] = mbits_tmp[k]; - end - else - begin - begin: WWORD_MM_3 for (j=0; j= - add_reg_b_mult_wb) && - (add_reg_a_mult_wa <= - (add_reg_b_mult_wb_pl_wb - 1))) - - || - - (((add_reg_a_mult_wa_pl_wa - 1) >= - add_reg_b_mult_wb) && - ((add_reg_a_mult_wa_pl_wa - 1) <= - (add_reg_b_mult_wb_pl_wb - 1))) - ) - for (i3 = add_reg_a_mult_wa; - i3 < add_reg_a_mult_wa_pl_wa; - i3 = i3 + 1) - begin - if ((i3 >= add_reg_b_mult_wb) && - (i3 <= (add_reg_b_mult_wb_pl_wb - 1))) - begin - i_q_tmp2_a_idx = (i3 - add_reg_a_mult_wa); - i_q_tmp2_a[i_q_tmp2_a_idx] = 1'bx; - end - end - - end - end - end - end - end - - - // assigning the correct output values for i_q_tmp_a (non-registered output) - always @(i_q_tmp2_a or i_wren_reg_a or i_data_reg_a or - i_address_reg_a or i_byteena_mask_reg_a_out) - begin - - if (i_wren_reg_a) - begin - i_q_tmp_a <= i_data_reg_a ^ i_byteena_mask_reg_a_out; - - end - else - i_q_tmp_a <= i_q_tmp2_a; - - end - - - // Port A outdata output registered - always @(posedge i_outdata_clk_a or posedge i_outdata_aclr_a) - begin - if (i_outdata_aclr_a) - i_q_reg_a <= 0; - else if (i_outdata_clken_a) - i_q_reg_a <= i_q_tmp_a; - end - - - // Port A : assigning the correct output values for q_a - assign q_a = (operation_mode == "DUAL_PORT") ? - {width_a{1'b0}} : (((outdata_reg_a == "CLOCK0") || - (outdata_reg_a == "CLOCK1")) ? - i_q_reg_a : i_q_tmp_a); - - - // Port B reading - always @(posedge i_read_flag_b or negedge i_read_flag_b) - begin - if ((operation_mode == "BIDIR_DUAL_PORT") || - (operation_mode == "DUAL_PORT")) - begin - if (~good_to_go_b) - begin - - if (check_simultaneous_read_write) - i_q_tmp2_b = {width_b{1'bx}}; - else - i_q_tmp2_b = 0; - end - else - begin - if (i_rden_reg_b) - begin - //If width_a is equal to b, no address calculation is needed - if (width_a == width_b) - begin - if (check_simultaneous_read_write) - begin - if ((rdcontrol_reg_b == "CLOCK0") || - (wrcontrol_wraddress_reg_b == "CLOCK0")) - begin - // A write, B read - if (i_wren_reg_a & ~i_wren_reg_b) - begin - // if A write to the same Ram address B is reading from - if (i_address_reg_b == i_address_reg_a) - temp_wb = {width_b{1'bx}}; - else - temp_wb = mem_data[i_address_reg_b]; - - end - else - temp_wb = mem_data[i_address_reg_b]; - end - else - temp_wb = mem_data[i_address_reg_b]; - end - else - temp_wb = mem_data[i_address_reg_b]; - - end - else - begin - j2 = i_address_reg_b * width_b; - - if (check_simultaneous_read_write) - begin - if ((rdcontrol_reg_b == "CLOCK0") || - (wrcontrol_wraddress_reg_b == "CLOCK0")) - begin - // A write, B read - if (i_wren_reg_a & ~i_wren_reg_b) - begin - - for (i5=0; i5 i_*_lo) during falling edge. - always @(negedge i_apex_inclock) - begin - if (indata_reg == "INCLOCK") - begin - if ((aclr == 1) && (indata_aclr_int == "ON")) - i_data_lo <= 0; - else - i_data_lo <= i_data_hi; - end - - if (write_reg == "INCLOCK") - begin - if ((aclr == 1) && (write_aclr_int == "ON")) - begin - i_wraddress_lo <= 0; - i_wren_lo <= 0; - end - else - begin - i_wraddress_lo <= i_wraddress_hi; - i_wren_lo <= i_wren_hi; - end - end - end // End of always block: @(negedge inclock) - - - // At posedge of read clock: - // Read Cycle: This block is valid only if the operating mode is - // in "Seperate Clock Mode". All read data, address - // and control are clocked out from internal vars - // (i_*_reg) to output port. - always @(posedge i_apex_outclock) - begin - if (outdata_reg_a == "OUTCLOCK") - begin - if ((aclr == 1) && (outdata_aclr_a == "ON")) - i_qa_reg <= 0; - else if (outclocken == 1) - i_qa_reg <= i_qa_tmp; - end - - if (outdata_reg_b == "OUTCLOCK") - begin - if ((aclr == 1) && (outdata_aclr_b == "ON")) - i_qb_reg <= 0; - else if (outclocken == 1) - i_qb_reg <= i_qb_tmp; - end - - if (rdaddress_reg_a == "OUTCLOCK") - begin - if ((aclr == 1) && (rdaddress_aclr_a_int == "ON")) - i_rdaddress_reg_a <= 0; - else if (outclocken == 1) - i_rdaddress_reg_a <= rdaddress_a; - end - - if (rdcontrol_reg_a == "OUTCLOCK") - begin - if ((aclr == 1) && (rdcontrol_aclr_a_int == "ON")) - i_rden_reg_a <= 0; - else if (outclocken == 1) - i_rden_reg_a <= rden_a; - end - - if (rdaddress_reg_b == "OUTCLOCK") - begin - if ((aclr == 1) && (rdaddress_aclr_b_int == "ON")) - i_rdaddress_reg_b <= 0; - else if (outclocken == 1) - i_rdaddress_reg_b <= rdaddress_b; - end - - if (rdcontrol_reg_b == "OUTCLOCK") - begin - if ((aclr == 1) && (rdcontrol_aclr_b_int == "ON")) - i_rden_reg_b <= 0; - else if (outclocken == 1) - i_rden_reg_b <= rden_b; - end - end // End of always block: @(posedge outclock) - - always @(i_rdaddress_reg_a) - begin - i_rdaddress_reg_a_dly <= i_rdaddress_reg_a; - end - - always @(i_rdaddress_reg_b) - begin - i_rdaddress_reg_b_dly <= i_rdaddress_reg_b; - end - - //========= - // Memory - //========= - - always @(i_data_tmp or i_wren_tmp or i_wraddress_tmp) - begin - new_data <= 1; - end - - always @(posedge new_data or negedge new_data) - begin - if (new_data == 1) - begin - // - // This is where data is being write to the internal memory: mem_data[] - // - if (i_wren_tmp == 1) - begin - mem_data[i_wraddress_tmp] <= i_data_tmp; - end - - tmp_new_data <= ~tmp_new_data; - - end - end - - always @(tmp_new_data) - begin - - new_data <= 0; - end - - // Triple-Port Ram (alt3pram) has one write port and two read ports (a and b) - // Below is the operation to read data from internal memory (mem_data[]) - // to the output port (i_qa_tmp or i_qb_tmp) - // Note: i_q*_tmp will serve as the var directly link to the physical - // output port q* if alt3pram is operate in "Shared Clock Mode", - // else data read from i_q*_tmp will need to be latched to i_q*_reg - // through outclock before it is fed to the output port q* (qa or qb). - - always @(posedge new_data or negedge new_data or - posedge i_rden_tmp_a or negedge i_rden_tmp_a or - i_rdaddress_tmp_a) - begin - - if (i_rden_tmp_a == 1) - i_qa_tmp <= mem_data[i_rdaddress_tmp_a]; - else if (rden_low_output_0 == 1) - i_qa_tmp <= 0; - - end - - always @(posedge new_data or negedge new_data or - posedge i_rden_tmp_b or negedge i_rden_tmp_b or - i_rdaddress_tmp_b) - begin - - if (i_rden_tmp_b == 1) - i_qb_tmp <= mem_data[i_rdaddress_tmp_b]; - else if (rden_low_output_0 == 1) - i_qb_tmp <= 0; - - end - - - //======= - // Sync - //======= - - assign i_wraddress_reg = ((aclr == 1) && (write_aclr_int == "ON")) ? - 0 : (write_at_low_clock ? - i_wraddress_lo : i_wraddress_hi); - - assign i_wren_reg = ((aclr == 1) && (write_aclr_int == "ON")) ? - 0 : ((write_at_low_clock) ? - i_wren_lo : i_wren_hi); - - assign i_data_reg = ((aclr == 1) && (indata_aclr_int == "ON")) ? - 0 : ((write_at_low_clock) ? - i_data_lo : i_data_hi); - - assign i_wraddress_tmp = ((aclr == 1) && (write_aclr_int == "ON")) ? - 0 : ((write_reg == "INCLOCK") ? - i_wraddress_reg : wraddress); - - assign i_rdaddress_tmp_a = ((aclr == 1) && (rdaddress_aclr_a_int == "ON")) ? - 0 : (((rdaddress_reg_a == "INCLOCK") || - (rdaddress_reg_a == "OUTCLOCK")) ? - i_rdaddress_reg_a_dly : rdaddress_a); - - assign i_rdaddress_tmp_b = ((aclr == 1) && (rdaddress_aclr_b_int == "ON")) ? - 0 : (((rdaddress_reg_b == "INCLOCK") || - (rdaddress_reg_b == "OUTCLOCK")) ? - i_rdaddress_reg_b_dly : rdaddress_b); - - assign i_wren_tmp = ((aclr == 1) && (write_aclr_int == "ON")) ? - 0 : ((write_reg == "INCLOCK") ? - i_wren_reg : wren); - - assign i_rden_tmp_a = ((aclr == 1) && (rdcontrol_aclr_a_int == "ON")) ? - 0 : (((rdcontrol_reg_a == "INCLOCK") || - (rdcontrol_reg_a == "OUTCLOCK")) ? - i_rden_reg_a : rden_a); - - assign i_rden_tmp_b = ((aclr == 1) && (rdcontrol_aclr_b_int == "ON")) ? - 0 : (((rdcontrol_reg_b == "INCLOCK") || - (rdcontrol_reg_b == "OUTCLOCK")) ? - i_rden_reg_b : rden_b); - - assign i_data_tmp = ((aclr == 1) && (indata_aclr_int == "ON")) ? - 0 : ((indata_reg == "INCLOCK") ? - i_data_reg : data); - - assign qa = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 1) || - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 1)) ? - i_qa_stratix : - (((aclr == 1) && (outdata_aclr_a == "ON")) ? - 0 : ((outdata_reg_a == "OUTCLOCK") ? - i_qa_reg : i_qa_tmp)); - - assign qb = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 1) || - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 1)) ? - i_qb_stratix : - (((aclr == 1) && (outdata_aclr_b == "ON")) ? - 0 : ((outdata_reg_b == "OUTCLOCK") ? - i_qb_reg : i_qb_tmp)); - - assign i_apex_inclock = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 0) && - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 0) && - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 0) && - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 0)) ? - inclock : 1'b0; - - assign i_apex_outclock = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 0) && - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 0) && - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 0) && - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 0)) ? - outclock : 1'b0; - - assign i_stratix_inclock = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 1) || - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 1)) ? - inclock : 1'b0; - - assign i_stratix_outclock = ((dev.IS_FAMILY_STRATIX(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXII(intended_device_family) == 1) || - (dev.IS_FAMILY_STRATIXGX(intended_device_family) == 1) || - (dev.IS_FAMILY_CYCLONE(intended_device_family) == 1)) ? - outclock : 1'b0; - - -endmodule // end of ALT3PRAM - -// START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : ALTQPRAM -// -// Description : Asynchronous quad ports memory or memory with synchronous -// inputs and/or outputs -// -// Limitation : -// -// Results expected : [Synchronous Write to Memory (all inputs registered)] -// inclock inclocken wren Function -// X L L No change -// not H H No change -// posedge L X No change -// posedge H H Memory content updated -// -// [Synchronous Read from Memory] -// inclock inclocken rden Function -// X L L No change -// not H H No change -// posedge L X No change. -// posedge H H Memory content showed -// at the output port -// -// [Asynchronous Memory Operations] -// wren Function -// L No change -// H Memory content updated -// Memory content showed -// at the output port -// -// END_MODULE_NAME-------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -// BEGINNING OF MODULE - -// MODULE DECLARATION - -module altqpram ( - wren_a, - wren_b, - data_a, - data_b, - wraddress_a, - wraddress_b, - inclock_a, - inclock_b, - inclocken_a, - inclocken_b, - rden_a, - rden_b, - rdaddress_a, - rdaddress_b, - outclock_a, - outclock_b, - outclocken_a, - outclocken_b, - inaclr_a, - inaclr_b, - outaclr_a, - outaclr_b, - q_a, - q_b - ); - -// GLOBAL PARAMETER DECLARATION - - parameter operation_mode = "QUAD_PORT"; - - // Port A write parameters - parameter width_write_a = 1; - parameter widthad_write_a = 1; - parameter numwords_write_a = 0; - parameter indata_reg_a = "INCLOCK_A"; - parameter indata_aclr_a = "INACLR_A"; - parameter wrcontrol_wraddress_reg_a = "INCLOCK_A"; - parameter wrcontrol_aclr_a = "INACLR_A"; - parameter wraddress_aclr_a = "INACLR_A"; - - // Port B write parameters - parameter width_write_b = 1; - parameter widthad_write_b = 1; - parameter numwords_write_b = 0; - parameter indata_reg_b = "INCLOCK_B"; - parameter indata_aclr_b = "INACLR_B"; - parameter wrcontrol_wraddress_reg_b = "INCLOCK_B"; - parameter wrcontrol_aclr_b = "INACLR_B"; - parameter wraddress_aclr_b = "INACLR_B"; - - // Port A read parameters - parameter width_read_a = 1; - parameter widthad_read_a = 1; - parameter numwords_read_a = 0; - parameter rdcontrol_reg_a = "OUTCLOCK_A"; - parameter rdcontrol_aclr_a = "OUTACLR_A"; - parameter rdaddress_reg_a = "OUTCLOCK_A"; - parameter rdaddress_aclr_a = "OUTACLR_A"; - parameter outdata_reg_a = "UNREGISTERED"; - parameter outdata_aclr_a = "OUTACLR_A"; - - // Port B read parameters - parameter width_read_b = 1; - parameter widthad_read_b = 1; - parameter numwords_read_b = 0; - parameter rdcontrol_reg_b = "OUTCLOCK_B"; - parameter rdcontrol_aclr_b = "OUTACLR_B"; - parameter rdaddress_reg_b = "OUTCLOCK_B"; - parameter rdaddress_aclr_b = "OUTACLR_B"; - parameter outdata_reg_b = "UNREGISTERED"; - parameter outdata_aclr_b = "OUTACLR_B"; - - parameter init_file = "UNUSED"; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "altqpram"; - -// INPUT PORT DECLARATION - - input wren_a; - input wren_b; - input rden_a; - input rden_b; - input [width_write_a - 1 : 0] data_a; - input [width_write_b - 1 : 0] data_b; - input [widthad_write_a - 1 : 0] wraddress_a; - input [widthad_write_b - 1 : 0] wraddress_b; - input inclock_a; - input inclock_b; - input inclocken_a; - input inclocken_b; - input [widthad_read_a - 1 : 0] rdaddress_a; - input [widthad_read_b - 1 : 0] rdaddress_b; - input outclock_a; - input outclock_b; - input outclocken_a; - input outclocken_b; - input inaclr_a; - input inaclr_b; - input outaclr_a; - input outaclr_b; - -// OUTPUT PORT DECLARATION - - output [width_read_a - 1 : 0] q_a; - output [width_read_b - 1 : 0] q_b; - -// INTERNAL REGISTERS DECLARATION - - reg [width_read_a - 1 : 0] mem_data [0 : (1 << widthad_read_a) - 1]; - reg [width_write_a - 1 : 0] mem_data_w [0 : (1 << widthad_write_a) - 1]; - reg [width_write_a - 1 : 0] i_data_reg_a; - reg [width_write_a - 1 : 0] i_data_tmp_a; - reg [width_write_a - 1 : 0] i_data2_a; - reg [width_write_a - 1 : 0] temp_wa; - reg [width_write_a - 1 : 0] temp_wa2; - reg [width_write_a - 1 : 0] temp_wa3; - reg [width_write_b - 1 : 0] i_data_reg_b; - reg [width_write_b - 1 : 0] i_data_tmp_b; - reg [width_write_b - 1 : 0] i_data2_b; - reg [width_write_a - 1 : 0] i_data_hi_a; - reg [width_write_a - 1 : 0] i_data_lo_a; - reg [width_write_b - 1 : 0] i_data_hi_b; - reg [width_write_b - 1 : 0] i_data_lo_b; - reg [width_read_a - 1 : 0] i_q_reg_a; - reg [width_read_a - 1 : 0] i_q_tmp_a; - reg [width_read_a - 1 : 0] temp_ra; - reg [width_read_a - 1 : 0] temp_ra2; - reg [width_read_a - 1 : 0] temp_ra3; - reg [width_read_a - 1 : 0] temp_ra4; - reg [width_read_b - 1 : 0] i_q_reg_b; - reg [width_read_b - 1 : 0] i_q_tmp_b; - reg [widthad_write_a - 1 : 0] i_wraddress_reg_a; - reg [widthad_write_a - 1 : 0] i_wraddress_tmp_a; - reg [widthad_write_a - 1 : 0] i_wraddress2_a; - reg [widthad_write_b - 1 : 0] i_wraddress_reg_b; - reg [widthad_write_b - 1 : 0] i_wraddress_tmp_b; - reg [widthad_write_b - 1 : 0] i_wraddress2_b; - reg [widthad_write_a - 1 : 0] i_wraddress_hi_a; - reg [widthad_write_a - 1 : 0] i_wraddress_lo_a; - reg [widthad_write_b - 1 : 0] i_wraddress_hi_b; - reg [widthad_write_b - 1 : 0] i_wraddress_lo_b; - reg [widthad_read_a - 1 : 0] i_rdaddress_reg_a; - reg [widthad_read_a - 1 : 0] i_rdaddress_tmp_a; - reg [widthad_read_b - 1 : 0] i_rdaddress_reg_b; - reg [widthad_read_b - 1 : 0] i_rdaddress_tmp_b; - reg [8*256 : 1] ram_initf; - reg i_wren_reg_a; - reg i_wren_tmp_a; - reg i_wren2_a; - reg i_rden_reg_a; - reg i_rden_tmp_a; - reg i_wren_reg_b; - reg i_wren_tmp_b; - reg i_wren2_b; - reg i_rden_reg_b; - reg i_rden_tmp_b; - reg i_wren_hi_a; - reg i_wren_lo_a; - reg i_wren_hi_b; - reg i_wren_lo_b; - reg mem_updated; - reg clk_a_trigger; - reg clk_b_trigger; - reg write_at_low_clock_a; - reg write_at_low_clock_b; - - - wire i_indata_aclr_a; - wire i_wraddress_aclr_a; - wire i_wrcontrol_aclr_a; - wire i_outdata_aclr_a; - wire i_rdaddress_aclr_a; - wire i_rdcontrol_aclr_a; - wire i_indata_aclr_b; - wire i_wraddress_aclr_b; - wire i_wrcontrol_aclr_b; - wire i_outdata_aclr_b; - wire i_rdaddress_aclr_b; - wire i_rdcontrol_aclr_b; - - -// LOCAL INTEGER DECLARATION - - integer i_numwords_read_a; - integer i_numwords_read_b; - integer i_numwords_write_a; - integer i_numwords_write_b; - integer write_ratio; - integer read_ratio; - integer read_write_ratio; - integer i; - integer i2; - integer i3; - integer i4; - integer j; - integer j2; - integer j3; - integer j4; - - integer ja; - integer jb; - integer Pa; - integer Pa1; - integer Pa2; - integer Pb; - integer Pb1; - integer Pb2; - - integer simultaneous_write; - -// INTERNAL TRI DECLARATION - - tri0 wren_a; - tri0 wren_b; - tri1 rden_a; - tri1 rden_b; - tri0 inclock_a; - tri0 inclock_b; - tri0 outclock_a; - tri0 outclock_b; - tri1 inclocken_a; - tri1 inclocken_b; - tri1 outclocken_a; - tri1 outclocken_b; - tri0 inaclr_a; - tri0 inaclr_b; - tri0 outaclr_a; - tri0 outaclr_b; - -// INTERNAL WIRE - - wire i_wren_a; - wire i_wren_b; - wire i_rden_a; - wire i_rden_b; - wire i_inclock_a; - wire i_inclock_b; - wire i_inclocken_a; - wire i_inclocken_b; - wire i_outclock_a; - wire i_outclock_b; - wire i_outclocken_a; - wire i_outclocken_b; - wire i_inaclr_a; - wire i_inaclr_b; - wire i_outaclr_a; - wire i_outaclr_b; - -// INTERNAL BUF - - buf (i_wren_a, wren_a); - buf (i_wren_b, wren_b); - buf (i_rden_a, rden_a); - buf (i_rden_b, rden_b); - buf (i_inclock_a, inclock_a); - buf (i_inclock_b, inclock_b); - buf (i_inclocken_a, inclocken_a); - buf (i_inclocken_b, inclocken_b); - buf (i_outclock_a, outclock_a); - buf (i_outclock_b, outclock_b); - buf (i_outclocken_a, outclocken_a); - buf (i_outclocken_b, outclocken_b); - buf (i_inaclr_a, inaclr_a); - buf (i_inaclr_b, inaclr_b); - buf (i_outaclr_a, outaclr_a); - buf (i_outaclr_b, outaclr_b); - - -// COMPONENT INSTANTIATIONS - ALTERA_MF_MEMORY_INITIALIZATION mem (); - -// INITIAL CONSTRUCT BLOCK - - initial - begin - - // Check for invalid parameters - - if ((operation_mode != "QUAD_PORT") && (operation_mode != "BIDIR_DUAL_PORT") && - (operation_mode != "DUAL_PORT") && (operation_mode != "SINGLE_PORT") && - (operation_mode != "ROM")) - begin - $display("Error! operation_mode parameter is invalid."); - $stop; - end - - if ((width_write_a <= 0) && (operation_mode != "ROM")) - begin - $display("Error! width_write_a parameter must be greater than 0."); - $stop; - end - - if ((width_write_b <= 0) && ((operation_mode == "QUAD_PORT") || (operation_mode == "BIDIR_DUAL_PORT"))) - begin - $display("Error! width_write_b parameter must be greater than 0."); - $stop; - end - - if ((widthad_write_a <= 0) && (operation_mode != "ROM")) - begin - $display("Error! widthad_write_a parameter must be greater than 0."); - $stop; - end - - if ((widthad_write_b <= 0) && ((operation_mode == "QUAD_PORT") || (operation_mode == "BIDIR_DUAL_PORT"))) - begin - $display("Error! widthad_write_b parameter must be greater than 0."); - $stop; - end - - if ((width_read_a <= 0) && ((operation_mode == "QUAD_PORT") || (operation_mode == "DUAL_PORT"))) - begin - $display("Error! width_read_a parameter must be greater than 0."); - $stop; - end - - if ((width_read_b <= 0) && (operation_mode == "QUAD_PORT")) - begin - $display("Error! width_read_b parameter must be greater than 0."); - $stop; - end - - if ((widthad_read_a <= 0) && ((operation_mode == "QUAD_PORT") || (operation_mode == "DUAL_PORT"))) - begin - $display("Error! widthad_read_a parameter must be greater than 0."); - $stop; - end - - if ((widthad_read_b <= 0) && (operation_mode == "QUAD_PORT")) - begin - $display("Error! widthad_read_b parameter must be greater than 0."); - $stop; - end - - if (((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "SINGLE_PORT")) && (width_read_a != width_write_a)) - begin - $display("Error! width_read_a must equal width_write_a."); - $stop; - end - - if ((operation_mode == "BIDIR_DUAL_PORT") && (width_read_b != width_write_b)) - begin - $display("Error! width_read_b must equal width_write_b."); - $stop; - end - - i_numwords_read_a = (numwords_read_a) ? numwords_read_a : (1 << widthad_read_a); - i_numwords_read_b = (numwords_read_b) ? numwords_read_b : (1 << widthad_read_b); - i_numwords_write_a =(numwords_write_a) ? - numwords_write_a : (1 << widthad_write_a); - i_numwords_write_b =(numwords_write_b) ? - numwords_write_b : (1 << widthad_write_b); - - if ((width_read_a*i_numwords_read_a != width_write_a*i_numwords_write_a) && - ((operation_mode == "QUAD_PORT") || (operation_mode == "DUAL_PORT"))) - begin - $display("Error! RAM size for port A is inconsistant."); - $stop; - end - - if ((operation_mode == "QUAD_PORT") || (operation_mode == "BIDIR_DUAL_PORT")) - begin - if ((width_read_b * i_numwords_read_b) != (width_write_b * i_numwords_write_b)) - begin - $display("Error! RAM size for port B is inconsistant."); - $stop; - end - - if (width_read_a*i_numwords_read_a != width_read_b*i_numwords_read_b) - begin - $display("Error! RAM size between port A and port B is inconsistant."); - $stop; - end - end - - read_ratio = (width_read_a > width_read_b) ? - (width_read_a / width_read_b) - : (width_read_b / width_read_a); - write_ratio = (width_write_a > width_write_b) ? - (width_write_a / width_write_b) - : (width_write_b / width_write_a); - read_write_ratio = (width_read_a > width_write_a) ? - (width_read_a / width_write_a) - : (width_write_a / width_read_a); - - // reset unused ratios to avoid incorrect checking - if ((operation_mode != "QUAD_PORT") || (operation_mode != "BIDIR_DUAL_MODE")) - begin - read_ratio = 1; - write_ratio = 1; - end - - if (((read_ratio != 1) && (read_ratio != 2) && (read_ratio != 4) && - (read_ratio != 8) && (read_ratio != 16)) || - ((write_ratio != 1) && (write_ratio != 2) && (write_ratio != 4) && - (write_ratio != 8) && (write_ratio != 16)) || - ((read_write_ratio != 1) && (read_write_ratio != 2) && - (read_write_ratio != 4) && (read_write_ratio != 8) && - (read_write_ratio != 16))) - begin - $display("Error! RAM size for port A and / or port B is invalid."); - $stop; - end - - // Initialize mem_data - if ((init_file == "UNUSED") || (init_file == "")) - begin - if (operation_mode == "ROM") - begin - $display("Error! altqpram needs data file for memory initialization.\n"); - $stop; - end - else if ((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "SINGLE_PORT")) - for (i = 0; i < i_numwords_write_a; i = i + 1) - mem_data_w[i] = 0; - else // if QP or DP mode - for (i = 0; i < i_numwords_read_a; i = i + 1) - mem_data[i] = 0; - end - else - begin - if ((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "SINGLE_PORT")) - begin -`ifdef NO_PLI - $readmemh(init_file, mem_data_w); -`else - `ifdef USE_RIF - $readmemh(init_file, mem_data_w); - `else - mem.convert_hex2ver(init_file, width_write_a, ram_initf); - $readmemh(ram_initf, mem_data_w); - `endif -`endif - end - else // if ROM, QP or DP mode - begin -`ifdef NO_PLI - $readmemh(init_file, mem_data); -`else - `ifdef USE_RIF - $readmemh(init_file, mem_data); - `else - mem.convert_hex2ver(init_file, width_read_a, ram_initf); - $readmemh(ram_initf, mem_data); - `endif -`endif - end - end - - mem_updated <= 0; - write_at_low_clock_a <= (wrcontrol_wraddress_reg_a != "UNREGISTERED") ? - 1 : 0; - write_at_low_clock_b <= (wrcontrol_wraddress_reg_b != "UNREGISTERED") ? - 1 : 0; - - // Initialize registers - i_data_reg_a <= 0; - i_data_tmp_a <= 0; - i_data_reg_b <= 0; - i_data_tmp_b <= 0; - i_data_hi_a <= 0; - i_data_lo_a <= 0; - i_data_hi_b <= 0; - i_data_lo_b <= 0; - i_wraddress_reg_a <= 0; - i_wraddress_tmp_a <= 0; - i_wraddress_reg_b <= 0; - i_wraddress_tmp_b <= 0; - i_wraddress_reg_b <= 0; - i_wraddress_tmp_b <= 0; - i_wraddress_hi_a <= 0; - i_wraddress_lo_a <= 0; - i_wraddress_hi_b <= 0; - i_wraddress_lo_b <= 0; - i_rdaddress_reg_a <= 0; - i_rdaddress_tmp_a <= 0; - i_rdaddress_reg_b <= 0; - i_rdaddress_tmp_b <= 0; - i_wren_reg_a <= 0; - i_wren_tmp_a <= 0; - i_wren_hi_a <= 0; - i_wren_lo_a <= 0; - i_rden_reg_a <= 0; - i_rden_tmp_a <= 0; - i_wren_reg_b <= 0; - i_wren_tmp_b <= 0; - i_wren_hi_b <= 0; - i_wren_lo_b <= 0; - i_rden_reg_b <= 0; - i_rden_tmp_b <= 0; - i_q_reg_a <= 0; - i_q_tmp_a <= 0; - i_q_reg_b <= 0; - i_q_tmp_b <= 0; - - i_data2_a <= 0; - i_wren2_a <= 0; - i_wraddress2_a <= 0; - i_data2_b <= 0; - i_wren2_b <= 0; - i_wraddress2_b <= 0; - clk_a_trigger <= 0; - clk_b_trigger <= 0; - end - - - assign i_indata_aclr_a = (indata_aclr_a == "INACLR_A") ? - i_inaclr_a : 0; - - assign i_wraddress_aclr_a = (wraddress_aclr_a == "INACLR_A") ? - i_inaclr_a : 0; - - assign i_wrcontrol_aclr_a = (wrcontrol_aclr_a == "INACLR_A") ? - i_inaclr_a : 0; - - assign i_outdata_aclr_a = ((outdata_aclr_a == "INACLR_A") ? i_inaclr_a : - ((outdata_aclr_a == "OUTACLR_A") ? i_outaclr_a : 0)); - - assign i_rdaddress_aclr_a = ((rdaddress_aclr_a == "INACLR_A") ? i_inaclr_a : - ((rdaddress_aclr_a == "OUTACLR_A") ? i_outaclr_a : 0)); - - assign i_rdcontrol_aclr_a = ((rdcontrol_aclr_a == "INACLR_A") ? i_inaclr_a : - ((rdcontrol_aclr_a == "OUTACLR_A") ? i_outaclr_a : 0)); - - assign i_indata_aclr_b = (indata_aclr_b == "INACLR_B") ? - i_inaclr_b : 0; - - assign i_wraddress_aclr_b = (wraddress_aclr_b == "INACLR_B") ? - i_inaclr_b : 0; - - assign i_wrcontrol_aclr_b = (wrcontrol_aclr_b == "INACLR_B") ? - i_inaclr_b : 0; - - assign i_outdata_aclr_b = ((outdata_aclr_b == "INACLR_B") ? i_inaclr_b : - ((outdata_aclr_b == "OUTACLR_B") ? i_outaclr_b : 0)); - - assign i_rdaddress_aclr_b = ((rdaddress_aclr_b == "INACLR_B") ? i_inaclr_b : - ((rdaddress_aclr_b == "OUTACLR_B") ? i_outaclr_b : 0)); - - assign i_rdcontrol_aclr_b = ((rdcontrol_aclr_b == "INACLR_B") ? i_inaclr_b : - ((rdcontrol_aclr_b == "OUTACLR_B") ? i_outaclr_b : 0)); - - - - // This always block is to handle registered inputs and output for port A - always @(posedge i_inclock_a) - begin - if (i_indata_aclr_a === 1) - i_data_hi_a <= 0; - else if (i_inclocken_a == 1) - i_data_hi_a <= data_a; - - if (i_wraddress_aclr_a === 1) - i_wraddress_hi_a <= 0; - else if (i_inclocken_a == 1) - i_wraddress_hi_a <= wraddress_a; - - if (i_wrcontrol_aclr_a === 1) - i_wren_hi_a <= 0; - else if (i_inclocken_a == 1) - i_wren_hi_a <= i_wren_a; - - if (outdata_reg_a == "INCLOCK_A") - begin - if (i_outdata_aclr_a === 1) - i_q_reg_a <= 0; - else if (i_inclocken_a == 1) - i_q_reg_a <= i_q_tmp_a; - end - - if (rdaddress_reg_a == "INCLOCK_A") - begin - if (i_rdaddress_aclr_a === 1) - i_rdaddress_reg_a <= 0; - else if (i_inclocken_a == 1) - i_rdaddress_reg_a <= rdaddress_a; - end - - if (rdcontrol_reg_a == "INCLOCK_A") - begin - if (i_rdcontrol_aclr_a === 1) - i_rden_reg_a <= 0; - else if (i_inclocken_a == 1) - i_rden_reg_a <= i_rden_a; - end - end - - // This always block is to handle registered inputs and output for port B - always @(posedge i_inclock_b) - begin - if (i_indata_aclr_b === 1) - i_data_hi_b <= 0; - else if (i_inclocken_b == 1) - i_data_hi_b <= data_b; - - if (i_wraddress_aclr_b === 1) - i_wraddress_hi_b <= 0; - else if (i_inclocken_b == 1) - i_wraddress_hi_b <= wraddress_b; - - if (i_wrcontrol_aclr_b === 1) - i_wren_hi_b <= 0; - else if (i_inclocken_b == 1) - i_wren_hi_b <= i_wren_b; - - if (outdata_reg_b == "INCLOCK_B") - begin - if (i_outdata_aclr_b === 1) - i_q_reg_b <= 0; - else if (i_inclocken_b == 1) - i_q_reg_b <= i_q_tmp_b; - end - - if (rdaddress_reg_b == "INCLOCK_B") - begin - if (i_rdaddress_aclr_b === 1) - i_rdaddress_reg_b <= 0; - else if (i_inclocken_b == 1) - i_rdaddress_reg_b <= rdaddress_b; - end - - if (rdcontrol_reg_b == "INCLOCK_B") - begin - if (i_rdcontrol_aclr_b === 1) - i_rden_reg_b <= 0; - else if (i_inclocken_b == 1) - i_rden_reg_b <= i_rden_b; - end - end - - - // This always block is to handle registered inputs for port A - // for negative clock edge - always @(negedge i_inclock_a) - begin - if (i_indata_aclr_a) - i_data_lo_a <= 0; - else - i_data_lo_a <= i_data_hi_a; - - if (i_wraddress_aclr_a) - i_wraddress_lo_a <= 0; - else - i_wraddress_lo_a <= i_wraddress_hi_a; - - if (i_wrcontrol_aclr_a) - i_wren_lo_a <= 0; - else - i_wren_lo_a <= i_wren_hi_a; - - clk_a_trigger <= 1; - end - - - // This process is to handle registered inputs for port B - // for negative clock edge - always @(negedge i_inclock_b) - begin - if (i_indata_aclr_b) - i_data_lo_b <= 0; - else - i_data_lo_b <= i_data_hi_b; - - if (i_wraddress_aclr_b) - i_wraddress_lo_b <= 0; - else - i_wraddress_lo_b <= i_wraddress_hi_b; - - if (i_wrcontrol_aclr_b) - i_wren_lo_b <= 0; - else - i_wren_lo_b <= i_wren_hi_b; - - clk_b_trigger <= 1; - end - - - // This process is to handle registered outputs for port A - always @(posedge i_outclock_a) - begin - if (outdata_reg_a == "OUTCLOCK_A") - begin - if (i_outdata_aclr_a) - i_q_reg_a <= 0; - else if (i_outclocken_a == 1) - i_q_reg_a <= i_q_tmp_a; - end - - if (rdaddress_reg_a == "OUTCLOCK_A") - begin - if (i_rdaddress_aclr_a) - i_rdaddress_reg_a <= 0; - else if (i_outclocken_a == 1) - i_rdaddress_reg_a <= rdaddress_a; - end - - if (rdcontrol_reg_a == "OUTCLOCK_A") - begin - if (i_rdcontrol_aclr_a) - i_rden_reg_a <= 0; - else if (i_outclocken_a == 1) - i_rden_reg_a <= i_rden_a; - end - end - - - // This process is to handle registered outputs for port B - always @(posedge i_outclock_b) - begin - if (outdata_reg_b == "OUTCLOCK_B") - begin - if (i_outdata_aclr_b) - i_q_reg_b <= 0; - else if (i_outclocken_b == 1) - i_q_reg_b <= i_q_tmp_b; - end - - if (rdaddress_reg_b == "OUTCLOCK_B") - begin - if (i_rdaddress_aclr_b) - i_rdaddress_reg_b <= 0; - else if (i_outclocken_b == 1) - i_rdaddress_reg_b <= rdaddress_b; - end - - if (rdcontrol_reg_b == "OUTCLOCK_B") - begin - if (i_rdcontrol_aclr_b) - i_rden_reg_b <= 0; - else if (i_outclocken_b == 1) - i_rden_reg_b <= i_rden_b; - end - end - - - // This always block is to update the memory contents with 'X' when both ports intend to - // write at the same location - always @(i_data_tmp_a or i_wren_tmp_a or i_wraddress_tmp_a or i_data_tmp_b or - i_wren_tmp_b or i_wraddress_tmp_b or write_at_low_clock_a or write_at_low_clock_b or - i_inclock_a or i_inclock_b) - begin - - if ((write_at_low_clock_a ==1) && (write_at_low_clock_b == 1)) - begin - if ((clk_a_trigger ==1) && (clk_b_trigger ==1)) - simultaneous_write = 1; - else - simultaneous_write = 0; - end - else - simultaneous_write = 1; - - if ((i_wren_tmp_a == 1) && (i_wren_tmp_b == 1 ) && - (i_inclock_a == 0 ) && (i_inclock_b == 0 ) && - (simultaneous_write == 1) && - ((operation_mode == "QUAD_PORT") || (operation_mode == "BIDIR_DUAL_PORT"))) - begin - simultaneous_write = 0; - - if (operation_mode == "BIDIR_DUAL_PORT") - begin - for (jb = 0; jb < width_write_b; jb = jb + 1) - begin - Pa = ((i_wraddress_tmp_a * width_write_a) + jb) % width_write_a; - Pb = ((i_wraddress_tmp_b * width_write_b) + jb) / width_write_a; - - if ((i_wraddress_tmp_a == Pb) && (Pa < width_write_a)) - begin - temp_wa3 = mem_data_w[i_wraddress_tmp_a]; - temp_wa3[Pa] = 1'bx; - mem_data_w[i_wraddress_tmp_a] = temp_wa3; - simultaneous_write = 1; - end - end - end - else // QP mode - begin - for (ja = 0; ja < width_write_a; ja = ja + 1) - begin - for (jb = 0; jb < width_write_b; jb = jb + 1) - begin - Pa1 = ((i_wraddress_tmp_a * width_write_a) + ja) / width_read_a; - Pa2 = ((i_wraddress_tmp_a * width_write_a) + ja) % width_read_a; - Pb1 = ((i_wraddress_tmp_b * width_write_b) + jb) / width_read_a; - Pb2 = ((i_wraddress_tmp_b * width_write_b) + jb) % width_read_a; - - if ((Pa1 == Pb1) && (Pa2 == Pb2)) - begin - temp_ra4 = mem_data[Pa1]; - temp_ra4[Pa2] = 1'b X; - mem_data[Pa1] = temp_ra4; - simultaneous_write = 1; - end - end - end - end - end - else - simultaneous_write = 0; - - if (simultaneous_write == 1) - mem_updated = ~mem_updated; - else - begin - i_data2_a = i_data_tmp_a; - i_wren2_a = i_wren_tmp_a; - i_wraddress2_a = i_wraddress_tmp_a; - i_data2_b = i_data_tmp_b; - i_wren2_b = i_wren_tmp_b; - i_wraddress2_b = i_wraddress_tmp_b; - end - - clk_a_trigger = 0; - clk_b_trigger = 0; - end - - - // This always block is to update the memory contents by port A - always @(i_data2_a or i_wren2_a or i_wraddress2_a or i_wraddress_lo_a or i_wren_lo_a or i_inclock_a) - begin - j4 = i_wraddress2_a * width_write_a; - - if ((i_wren2_a == 1) && (i_inclock_a == 0) && - (operation_mode != "ROM")) - begin - if ((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "SINGLE_PORT")) - mem_data_w[i_wraddress2_a] = i_data2_a; - else // QP or DP mode - for (i4 = 0; i4 < width_write_a; i4 = i4 + 1) - begin - temp_ra3 = mem_data[(j4+i4)/width_read_a]; - temp_ra3[(j4+i4)%width_read_a] = i_data2_a[i4]; - mem_data[(j4+i4)/width_read_a] = temp_ra3; - end - - mem_updated = ~mem_updated; - end - end - - - // This always block is to update the memory contents by port B - always @(i_data2_b or i_wren2_b or i_wraddress2_b or i_wraddress_lo_b or i_wren_lo_b or i_inclock_b) - begin - j3 = i_wraddress2_b * width_write_b; - - if ((i_wren2_b == 1) && (i_inclock_b == 0) && - ((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "QUAD_PORT"))) - begin - if (operation_mode == "BIDIR_DUAL_PORT") - for (i3 = 0; i3 < width_write_b; i3 = i3 + 1) - begin - temp_wa2 = mem_data_w[(j3+i3)/width_write_a]; - temp_wa2[(j3+i3)%width_write_a] = i_data2_b[i3]; - mem_data_w[(j3+i3)/width_write_a] = temp_wa2; - end - else // QP mode - for (i3 = 0; i3 < width_write_b; i3 = i3 + 1) - begin - temp_ra2 = mem_data[(j3+i3)/width_read_a]; - temp_ra2[(j3+i3)%width_read_a] = i_data2_b[i3]; - mem_data[(j3+i3)/width_read_a] = temp_ra2; - end - - mem_updated = ~mem_updated; - end - end - - - // This always block is to read the memory content for port A - always @(posedge i_rden_tmp_a or negedge i_rden_tmp_a or - i_rdaddress_tmp_a or - i_wraddress_tmp_a or mem_updated) - begin - if ((operation_mode == "DUAL_PORT") || (operation_mode == "QUAD_PORT")) - begin - if (i_rden_tmp_a == 1) - i_q_tmp_a = mem_data[i_rdaddress_tmp_a]; - end - else if ((operation_mode == "BIDIR_DUAL_PORT") || (operation_mode == "SINGLE_PORT")) - i_q_tmp_a = mem_data_w[i_wraddress_tmp_a]; - else if (operation_mode == "ROM") - i_q_tmp_a = mem_data[i_rdaddress_tmp_a]; - end - - // This always block is to read the memory content for port A - always @(posedge i_rden_tmp_b or negedge i_rden_tmp_b or - i_rdaddress_tmp_b or - i_wraddress_tmp_b or - mem_updated) - begin - if (operation_mode == "QUAD_PORT") - begin - j2 = i_rdaddress_tmp_b * width_read_b; - if (i_rden_tmp_b == 1) - for (i2 = 0; i2 < width_read_b; i2 = i2 + 1) - begin - temp_ra = mem_data[(j2+i2)/width_read_a]; - i_q_tmp_b[i2] = temp_ra[(j2+i2)%width_read_a]; - end - end - else if (operation_mode == "BIDIR_DUAL_PORT") - begin - j2 = i_wraddress_tmp_b * width_write_b; - for (i2=0; i2 `max_precision) - $display ("Error! WIDTHR must not exceed WIDTH+SIZE+SHIFT*(SIZE-1)."); - if (size < 2) - $display ("Error! SIZE must be greater than 1."); - - if (shift == 0) - begin - best_result_width = width; - if (size > 1) - best_result_width = best_result_width + ceil_log2(size); - end - else - best_result_width = ceil_log2( ((1<> (ni * width)); - - // If signed and negative, pad MSB with ones to sign extend the input data - if ((representation != "UNSIGNED") && (idata_word[width-1] == 1'b1)) - idata_extended = ({{(`max_precision-width-2){1'b1}}, idata_word} << (shift*ni)); - else - idata_extended = (idata_word << (shift*ni)); // zero padding is automatic - - // Add to total - if ((msw_subtract == "YES") && (ni == (size-1))) - tmp_result = tmp_result - idata_extended; - else - tmp_result = tmp_result + idata_extended; - end - end - - // Pipeline model - always @(posedge clock or posedge aclr) - begin - if (aclr == 1'b1) - begin - // Clear the pipeline array - for (ni=0; ni< (pipeline +1); ni=ni+1) - resultpipe[ni] <= 0; - pipe_ptr <= 0; - end - else if (clken_int == 1'b1) - begin - resultpipe[pipe_ptr] <= aligned_result; - if (pipeline > 1) - pipe_ptr <= (pipe_ptr + 1) % pipeline; - end - end - - // Check if output needs MSB alignment - assign aligned_result = (imsb_align == 1) - ? (tmp_result >> (best_result_width-widthr)) - : tmp_result; - assign clken_int = clken; - assign result = (pipeline > 0) ? resultpipe[pipe_ptr] : aligned_result; -endmodule // end of PARALLEL_ADD -// END OF MODULE -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : scfifo -// -// Description : Single Clock FIFO -// -// Limitation : USE_EAB=OFF is not supported -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module scfifo ( data, - clock, - wrreq, - rdreq, - aclr, - sclr, - q, - usedw, - full, - empty, - almost_full, - almost_empty); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter lpm_showahead = "OFF"; - parameter lpm_type = "scfifo"; - parameter lpm_hint = "USE_EAB=ON"; - parameter intended_device_family = "APEX20KE"; - parameter underflow_checking = "ON"; - parameter overflow_checking = "ON"; - parameter allow_rwcycle_when_full = "OFF"; - parameter use_eab = "ON"; - parameter add_ram_output_register = "OFF"; - parameter almost_full_value = 0; - parameter almost_empty_value = 0; - parameter maximum_depth = 0; - parameter showahead_area = ((lpm_showahead == "ON") && (add_ram_output_register == "OFF")); - parameter showahead_speed = ((lpm_showahead == "ON") && (add_ram_output_register == "ON")); - parameter legacy_speed = ((lpm_showahead == "OFF") && (add_ram_output_register == "ON")); - -// INPUT PORT DECLARATION - input [lpm_width-1:0] data; - input clock; - input wrreq; - input rdreq; - input aclr; - input sclr; - -// OUTPUT PORT DECLARATION - output [lpm_width-1:0] q; - output [lpm_widthu-1:0] usedw; - output full; - output empty; - output almost_full; - output almost_empty; - -// INTERNAL REGISTERS DECLARATION - reg [lpm_width-1:0] mem_data [(1< (1 << lpm_widthu))) - $display ("Error! LPM_NUMWORDS must equal to the ceiling of log2(LPM_WIDTHU)."); - if (lpm_numwords <= (1 << (lpm_widthu - 1))) - $display ("Error! LPM_WIDTHU is too big for the specified LPM_NUMWORDS."); - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - if((add_ram_output_register != "ON") && (add_ram_output_register != "OFF")) - $display ("Error! add_ram_output_register must be ON or OFF."); - - for (i = 0; i < (1< 0) - almost_full_flag <= 1'b0; - if (almost_empty_value > 0) - almost_empty_flag <= 1'b1; - - write_id <= 0; - - if ((use_eab == "ON") && (stratix_family) && ((showahead_speed) || (showahead_area) || (legacy_speed))) - begin - write_latency1 <= 1'bx; - write_latency2 <= 1'bx; - data_shown <= {lpm_width{1'b0}}; - tmp_q <= {lpm_width{1'bX}}; - end - end - else - begin - if (sclr) - begin - tmp_q <= {lpm_width{1'bX}}; - - read_id <= 0; - count_id <= 0; - full_flag <= 1'b0; - empty_flag <= 1'b1; - empty_latency1 <= 1'b1; - empty_latency2 <= 1'b1; - set_q_to_x <= 1'b0; - wrt_count <= 0; - - if (almost_full_value > 0) - almost_full_flag <= 1'b0; - if (almost_empty_value > 0) - almost_empty_flag <= 1'b1; - - if (!stratix_family) - begin - if (valid_wreq) - begin - write_flag <= 1'b1; - end - else - write_id <= 0; - end - else - begin - write_id <= 0; - end - - if ((use_eab == "ON") && (stratix_family) && ((showahead_speed) || (showahead_area) || (legacy_speed))) - begin - write_latency1 <= 1'bx; - write_latency2 <= 1'bx; - data_shown <= {lpm_width{1'b0}}; - tmp_q <= {lpm_width{1'bX}}; - end - end - else - begin - // WRITE operation - if (valid_wreq) - begin - if ((overflow_checking == "OFF" && full_flag && !valid_rreq) || set_q_to_x) - begin - tmp_q <= {lpm_width{1'bX}}; - set_q_to_x <= 1'b1; - end - else - begin - mem_data[write_id] <= data; - write_flag <= 1'b1; - - if (!((use_eab == "ON") && stratix_family && (showahead_speed || showahead_area || legacy_speed))) - begin - empty_flag <= 1'b0; - end - else - begin - empty_latency1 <= 1'b0; - end - - if (!valid_rreq) - wrt_count <= wrt_count + 1; - - if (!valid_rreq) - begin - if (count_id >= (1 << lpm_widthu) - 1) - count_id <= 0; - else - count_id <= count_id + 1; - end - else - begin - if (allow_rwcycle_when_full == "OFF") - full_flag <= 1'b0; - end - - if (!(stratix_family) || (stratix_family && !(showahead_speed || showahead_area || legacy_speed))) - begin - if (!valid_rreq) - if ((count_id == lpm_numwords - 1) && (empty_flag == 1'b0)) - full_flag <= 1'b1; - end - else - begin - if (!valid_rreq) - if (count_id == lpm_numwords - 1) - full_flag <= 1'b1; - end - - if (lpm_showahead == "ON") - begin - if ((use_eab == "ON") && stratix_family && (showahead_speed || showahead_area)) - begin - write_latency1 <= write_id; - data_shown[write_id] <= 1'b1; - data_ready[write_id] <= 1'bx; - end - else - begin - if ((use_eab == "OFF") && stratix_family && (count_id == 0)) - begin - tmp_q <= data; - end - else - begin - if ((!empty_flag) && (!valid_rreq)) - begin - tmp_q <= mem_data[read_id]; - end - end - end - end - else - begin - if ((use_eab == "ON") && stratix_family && legacy_speed) - begin - write_latency1 <= write_id; - data_shown[write_id] <= 1'b1; - data_ready[write_id] <= 1'bx; - end - end - end - end - //READ operation - if (valid_rreq) - begin - if (!(set_q_to_x)) - begin - if (!valid_wreq) - wrt_count <= wrt_count - 1; - - if (!valid_wreq) - begin - full_flag <= 1'b0; - - if (count_id <= 0) - count_id <= ((1 << lpm_widthu) - 1); - else - count_id <= count_id - 1; - end - - if ((use_eab == "ON") && stratix_family && (showahead_speed || showahead_area || legacy_speed)) - begin - if ((wrt_count == 1 && valid_rreq && !valid_wreq) || ((wrt_count == 1 ) && valid_wreq && valid_rreq)) - begin - empty_flag <= 1'b1; - end - else - begin - if (showahead_speed) - begin - if (data_shown[write_latency2] == 1'b0) - begin - empty_flag <= 1'b1; - end - end - else if (showahead_area || legacy_speed) - begin - if (data_shown[write_latency1] == 1'b0) - begin - empty_flag <= 1'b1; - end - end - end - end - else - begin - if (!valid_wreq) - begin - if ((count_id == 1) && !(full_flag)) - empty_flag <= 1'b1; - end - end - - if (empty_flag) - begin - tmp_q <= {lpm_width{1'bX}}; - end - else if (read_id >= ((1<= ((1< almost_full_value) - begin - if (almost_full_flag) - begin - if ((count_id == almost_full_value) && !wrreq && rdreq) - almost_full_flag <= 1'b0; - end - else - begin - if ((almost_full_value == 1) && (count_id == 0) && wrreq) - almost_full_flag <= 1'b1; - else if ((almost_full_value > 1) && (count_id == almost_full_value - 1) - && wrreq && !rdreq) - almost_full_flag <= 1'b1; - end - end - - if (almost_empty_value == 0) - almost_empty_flag <= 1'b0; - else if (lpm_numwords > almost_empty_value) - begin - if (almost_empty_flag) - begin - if ((almost_empty_value == 1) && (count_id == 0) && wrreq) - almost_empty_flag <= 1'b0; - else if ((almost_empty_value > 1) && (count_id == almost_empty_value - 1) - && wrreq && !rdreq) - almost_empty_flag <= 1'b0; - end - else - begin - if ((count_id == almost_empty_value) && !wrreq && rdreq) - almost_empty_flag <= 1'b1; - end - end - end - - if ((use_eab == "ON") && stratix_family) - begin - if (showahead_speed) - begin - write_latency2 <= write_latency1; - write_latency3 <= write_latency2; - if (write_latency3 !== write_latency2) - data_ready[write_latency2] <= 1'b1; - - empty_latency2 <= empty_latency1; - - if (data_shown[write_latency2]==1'b1) - begin - if ((read_id == write_latency2) || aclr || sclr) - begin - if (!(aclr === 1'b1) && !(sclr === 1'b1)) - begin - if (write_latency2 !== 1'bx) - begin - tmp_q <= mem_data[write_latency2]; - data_shown[write_latency2] <= 1'b0; - data_ready[write_latency2] <= 1'b0; - - if (!valid_rreq) - empty_flag <= empty_latency2; - end - end - end - end - end - else if (showahead_area) - begin - write_latency2 <= write_latency1; - if (write_latency2 !== write_latency1) - data_ready[write_latency1] <= 1'b1; - - if (data_shown[write_latency1]==1'b1) - begin - if ((read_id == write_latency1) || aclr || sclr) - begin - if (!(aclr === 1'b1) && !(sclr === 1'b1)) - begin - if (write_latency1 !== 1'bx) - begin - tmp_q <= mem_data[write_latency1]; - data_shown[write_latency1] <= 1'b0; - data_ready[write_latency1] <= 1'b0; - - if (!valid_rreq) - begin - empty_flag <= empty_latency1; - end - end - end - end - end - end - else - begin - if (legacy_speed) - begin - write_latency2 <= write_latency1; - if (write_latency2 !== write_latency1) - data_ready[write_latency1] <= 1'b1; - - empty_flag <= empty_latency1; - - if ((wrt_count == 1 && !valid_wreq && valid_rreq) || aclr || sclr) - begin - empty_flag <= 1'b1; - empty_latency1 <= 1'b1; - end - else - begin - if ((wrt_count == 1) && valid_wreq && valid_rreq) - begin - empty_flag <= 1'b1; - end - end - end - end - end - end - end - - always @(negedge clock) - begin - if (write_flag) - begin - write_flag <= 1'b0; - - if (sclr || aclr || (write_id >= ((1 << lpm_widthu) - 1))) - write_id <= 0; - else - write_id <= write_id + 1; - end - - if (!(stratix_family)) - begin - if (!empty) - begin - if ((lpm_showahead == "ON") && ($time > 0)) - tmp_q <= mem_data[read_id]; - end - end - end - - always @(full_flag) - begin - if (lpm_numwords == almost_full_value) - if (full_flag) - almost_full_flag <= 1'b1; - else - almost_full_flag <= 1'b0; - - if (lpm_numwords == almost_empty_value) - if (full_flag) - almost_empty_flag <= 1'b0; - else - almost_empty_flag <= 1'b1; - end - -// CONTINOUS ASSIGNMENT - assign q = tmp_q; - assign full = full_flag; - assign empty = empty_flag; - assign usedw = count_id; - assign almost_full = almost_full_flag; - assign almost_empty = almost_empty_flag; - -endmodule // scfifo -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : dcfifo_dffpipe -// -// Description : Dual Clocks FIFO -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module dcfifo_dffpipe ( d, clock, aclr, - q); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_delay = 1; - parameter lpm_width = 64; - -// INPUT PORT DECLARATION - input [lpm_width-1:0] d; - input clock; - input aclr; - -// OUTPUT PORT DECLARATION - output [lpm_width-1:0] q; - -// INTERNAL REGISTERS DECLARATION - reg [lpm_width-1:0] dffpipe [lpm_delay:0]; - reg [lpm_width-1:0] q; - -// LOCAL INTEGER DECLARATION - integer delay, i; - -// INITIAL CONSTRUCT BLOCK - initial - begin - delay <= lpm_delay - 1; - for (i = 0; i < lpm_delay; i = i + 1) - dffpipe[i] <= 0; - q <= 0; - end - -// ALWAYS CONSTRUCT BLOCK - always @(posedge clock or posedge aclr) - begin - if (aclr) - begin - for (i = 0; i < lpm_delay; i = i + 1) - dffpipe[i] <= 0; - q <= 0; - end - else - begin - if ((lpm_delay > 0) && ($time > 0)) - begin - if (delay > 0) - begin - for (i = delay; i > 0; i = i - 1) - dffpipe[i] <= dffpipe[i - 1]; - q <= dffpipe[delay - 1]; - end - else - q <= d; - - dffpipe[0] <= d; - end - end - end // @(posedge aclr or posedge clock) - - always @(d) - begin - if (lpm_delay == 0) - q <= d; - end // @(d) - -endmodule // dcfifo_dffpipe -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : dcfifo_fefifo -// -// Description : Dual Clock FIFO -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module dcfifo_fefifo ( usedw_in, wreq, rreq, clock, aclr, - empty, full); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_widthad = 1; - parameter lpm_numwords = 1; - parameter underflow_checking = "ON"; - parameter overflow_checking = "ON"; - parameter lpm_mode = "READ"; - -// INPUT PORT DECLARATION - input [lpm_widthad-1:0] usedw_in; - input wreq, rreq; - input clock; - input aclr; - -// OUTPUT PORT DECLARATION - output empty, full; - -// INTERNAL REGISTERS DECLARATION - reg [1:0] sm_empty; - reg lrreq; - reg i_empty, i_full; - -// LOCAL INTEGER DECLARATION - integer almostfull; - -// INITIAL CONSTRUCT BLOCK - initial - begin - if ((lpm_mode != "READ") && (lpm_mode != "WRITE")) - $display ("Error! LPM_MODE must be READ or WRITE."); - if ((underflow_checking != "ON") && (underflow_checking != "OFF")) - $display ("Error! UNDERFLOW_CHECKING must be ON or OFF."); - if ((overflow_checking != "ON") && (overflow_checking != "OFF")) - $display ("Error! OVERFLOW_CHECKING must be ON or OFF."); - - sm_empty <= 2'b00; - i_empty <= 1'b1; - i_full <= 1'b0; - - if (lpm_numwords >= 3) - almostfull <= lpm_numwords - 3; - else - almostfull <= 0; - end - -// ALWAYS CONSTRUCT BLOCK - always @(posedge aclr) - begin - sm_empty <= 2'b00; - i_empty <= 1'b1; - i_full <= 1'b0; - lrreq <= 1'b0; - end // @(posedge aclr) - - always @(posedge clock) - begin - if (underflow_checking == "OFF") - lrreq <= rreq; - else - lrreq <= rreq && ~i_empty; - - if (~aclr && $time > 0) - begin - if (lpm_mode == "READ") - begin - casex (sm_empty) - // state_empty - 2'b00: - if (usedw_in != 0) - sm_empty <= 2'b01; - // state_non_empty - 2'b01: - if (rreq && (((usedw_in == 1) && !lrreq) || ((usedw_in == 2) && lrreq))) - sm_empty <= 2'b10; - // state_emptywait - 2'b10: - if (usedw_in > 1) - sm_empty <= 2'b01; - else - sm_empty <= 2'b00; - default: - $display ("Error! Invalid sm_empty state in read mode."); - endcase - end // if (lpm_mode == "READ") - else if (lpm_mode == "WRITE") - begin - casex (sm_empty) - // state_empty - 2'b00: - if (wreq) - sm_empty <= 2'b01; - // state_one - 2'b01: - if (!wreq) - sm_empty <= 2'b11; - // state_non_empty - 2'b11: - if (wreq) - sm_empty <= 2'b01; - else if (usedw_in == 0) - sm_empty <= 2'b00; - default: - $display ("Error! Invalid sm_empty state in write mode."); - endcase - end // if (lpm_mode == "WRITE") - - if (~aclr && (usedw_in >= almostfull) && ($time > 0)) - i_full <= 1'b1; - else - i_full <= 1'b0; - end // if (~aclr && $time > 0) - end // @(posedge clock) - - always @(sm_empty) - begin - i_empty <= !sm_empty[0]; - end - // @(sm_empty) - -// CONTINOUS ASSIGNMENT - assign empty = i_empty; - assign full = i_full; -endmodule // dcfifo_fefifo -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : dcfifo_async -// -// Description : Asynchronous Dual Clocks FIFO -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module dcfifo_async (data, rdclk, wrclk, aclr, rdreq, wrreq, - rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter delay_rdusedw = 1; - parameter delay_wrusedw = 1; - parameter rdsync_delaypipe = 3; - parameter wrsync_delaypipe = 3; - parameter intended_device_family = "APEX20KE"; - parameter lpm_showahead = "OFF"; - parameter underflow_checking = "ON"; - parameter overflow_checking = "ON"; - parameter use_eab = "ON"; - parameter add_ram_output_register = "OFF"; - -// INPUT PORT DECLARATION - input [lpm_width-1:0] data; - input rdclk; - input wrclk; - input aclr; - input wrreq; - input rdreq; - -// OUTPUT PORT DECLARATION - output rdfull; - output wrfull; - output rdempty; - output wrempty; - output [lpm_widthu-1:0] rdusedw; - output [lpm_widthu-1:0] wrusedw; - output [lpm_width-1:0] q; - -// INTERNAL REGISTERS DECLARATION - reg [lpm_width-1:0] mem_data [(1< 0)) - begin - i_data_tmp <= data; - i_wrptr_tmp <= i_wrptr; - i_wren_tmp <= i_wren; - - if (i_wren) - begin - if (~aclr && ((i_wrptr < (1< 0)) - begin - if (i_wren_tmp) - begin - mem_data[i_wrptr_tmp] <= i_data_tmp; - data_ready[i_wrptr_tmp] <= 1'b0; - end - - if ((lpm_showahead == "ON") && - (!(dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family)))) - i_showahead_flag3 <= 1'b1; - end - end // @(negedge wrclk) - - always @(posedge rdclk) - begin - - if (rdclk && ($time > 0)) - begin - if ((lpm_showahead == "ON") && (add_ram_output_register == "ON") && - (dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family))) - begin - for (k = 0; k < (1< 0)) - begin - if (~aclr && ((i_rdptr < (1< (1 << lpm_widthu)) - $display ("Error! LPM_NUMWORDS must be less than or equal to 2**LPM_WIDTHU."); - if((add_ram_output_register != "ON") && (add_ram_output_register != "OFF")) - $display ("Error! add_ram_output_register must be ON or OFF."); - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - - for (i = 0; i < (1 << lpm_widthu); i = i + 1) - mem_data[i] <= 0; - i_data_tmp <= 0; - i_rdptr <= 0; - i_wrptr <= 0; - i_wrptr_tmp <= 0; - i_wren_tmp <= 0; - - i_rdempty <= 1; - i_wrempty <= 1; - i_rdfull <= 0; - i_wrfull <= 0; - i_rdusedw <= 0; - i_wrusedw <= 0; - i_q_tmp <= 0; - - if (lpm_numwords == (1 << lpm_widthu)) - cnt_mod <= 1 << (lpm_widthu + 1); - else - cnt_mod <= 1 << lpm_widthu; - end - -// COMPONENT INSTANTIATIONS - dcfifo_dffpipe RDPTR_D ( - .d (i_rdptr), - .clock (wrclk), - .aclr (aclr), - .q (w_rdptr_s)); - dcfifo_dffpipe WRPTR_D ( - .d (i_wrptr), - .clock (wrclk), - .aclr (aclr), - .q (w_wrptr_r)); - dcfifo_dffpipe WRPTR_E ( - .d (w_wrptr_r), - .clock (rdclk), - .aclr (aclr), - .q (w_wrptr_s)); - defparam - RDPTR_D.lpm_delay = 1, - RDPTR_D.lpm_width = lpm_widthu + 1, - WRPTR_D.lpm_delay = 1, - WRPTR_D.lpm_width = lpm_widthu + 1, - WRPTR_E.lpm_delay = 1, - WRPTR_E.lpm_width = lpm_widthu + 1; - -// ALWAYS CONSTRUCT BLOCK - always @(posedge aclr) - begin - i_rdptr <= 0; - i_wrptr <= 0; - if (!(dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family)) || - ((add_ram_output_register == "ON") && (use_eab == "OFF"))) - if (lpm_showahead == "ON") - i_q_tmp <= mem_data[0]; - else - i_q_tmp <= 0; - end // @(posedge aclr) - - // FIFOram - always @(rdreq or i_rdempty) - begin - if (underflow_checking == "OFF") - i_rden <= rdreq; - else - i_rden <= rdreq && !i_rdempty; - end // @(rdreq or i_rdempty) - - always @(wrreq or i_wrfull) - begin - if (overflow_checking == "OFF") - i_wren <= wrreq; - else - i_wren <= wrreq && !i_wrfull; - end // @(wrreq or i_wrfull) - - always @(posedge wrclk) - begin - if (aclr && (!(dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family)) || - ((add_ram_output_register == "ON") && (use_eab == "OFF")))) - begin - i_data_tmp <= 0; - i_wrptr_tmp <= 0; - i_wren_tmp <= 0; - end - else if (wrclk && ($time > 0)) - begin - i_data_tmp <= data; - i_wrptr_tmp <= i_wrptr[lpm_widthu-1:0]; - i_wren_tmp <= i_wren; - - if (i_wren) - begin - if (~aclr && (i_wrptr < cnt_mod - 1)) - i_wrptr <= i_wrptr + 1; - else - i_wrptr <= 0; - - if (use_eab == "OFF") - begin - mem_data[i_wrptr[lpm_widthu-1:0]] <= data; - - if (lpm_showahead == "ON") - i_showahead_flag2 <= 1'b1; - end - end - end - end // @(posedge wrclk) - - always @(negedge wrclk) - begin - if ((~wrclk && (use_eab == "ON")) && ($time > 0)) - begin - if (i_wren_tmp) - begin - mem_data[i_wrptr_tmp] <= i_data_tmp; - end - - if ((lpm_showahead == "ON") && - (!( dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family)))) - i_showahead_flag2 <= 1'b1; - end - end // @(negedge wrclk) - - always @(posedge rdclk) - begin - if (aclr && (!(dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family)) || - ((add_ram_output_register == "ON") && (use_eab == "OFF")))) - begin - if (lpm_showahead == "ON") - i_q_tmp <= mem_data[0]; - else - i_q_tmp <= 0; - end - else if (rdclk && i_rden && ($time > 0)) - begin - if (~aclr && (i_rdptr < cnt_mod - 1)) - i_rdptr <= i_rdptr + 1; - else - i_rdptr <= 0; - - if ((lpm_showahead == "ON") && (!((use_eab == "ON") && - (dev.IS_FAMILY_STRATIX(intended_device_family) || - dev.IS_FAMILY_STRATIXGX(intended_device_family) || - dev.IS_FAMILY_CYCLONE(intended_device_family))))) - i_showahead_flag2 <= 1'b1; - else - i_q_tmp <= mem_data[i_rdptr[lpm_widthu-1:0]]; - end - end // @(rdclk) - - always @(posedge i_showahead_flag) - begin - i_q_tmp <= mem_data[i_rdptr[lpm_widthu-1:0]]; - i_showahead_flag2 <= 1'b0; - end // @(posedge i_showahead_flag) - - always @(i_showahead_flag2) - begin - i_showahead_flag <= i_showahead_flag2; - end // @(i_showahead_flag2) - - // Usedw, Empty, Full - always @(i_rdptr or w_wrptr_s or cnt_mod) - begin - if (w_wrptr_s >= i_rdptr) - i_rdusedw <= w_wrptr_s - i_rdptr; - else - i_rdusedw <= w_wrptr_s + cnt_mod - i_rdptr; - end // @(i_rdptr or w_wrptr_s) - - always @(i_wrptr or w_rdptr_s or cnt_mod) - begin - if (i_wrptr >= w_rdptr_s) - i_wrusedw <= i_wrptr - w_rdptr_s; - else - i_wrusedw <= i_wrptr + cnt_mod - w_rdptr_s; - end // @(i_wrptr or w_rdptr_s) - - always @(i_rdusedw) - begin - if (i_rdusedw == 0) - i_rdempty <= 1; - else - i_rdempty <= 0; - - if (((lpm_numwords == (1 << lpm_widthu)) && i_rdusedw[lpm_widthu]) || - ((lpm_numwords < (1 << lpm_widthu)) && (i_rdusedw == lpm_numwords))) - i_rdfull <= 1; - else - i_rdfull <= 0; - end // @(i_rdusedw) - - always @(i_wrusedw) - begin - if (i_wrusedw == 0) - i_wrempty <= 1; - else - i_wrempty <= 0; - - if (((lpm_numwords == (1 << lpm_widthu)) && i_wrusedw[lpm_widthu]) || - ((lpm_numwords < (1 << lpm_widthu)) && (i_wrusedw == lpm_numwords))) - i_wrfull <= 1; - else - i_wrfull <= 0; - end // @(i_wrusedw) - -// CONTINOUS ASSIGNMENT - assign rdempty = i_rdempty; - assign wrempty = i_wrempty; - assign rdfull = i_rdfull; - assign wrfull = i_wrfull; - assign wrusedw = i_wrusedw[lpm_widthu-1:0]; - assign rdusedw = i_rdusedw[lpm_widthu-1:0]; - assign q = i_q_tmp; - -endmodule // dcfifo_sync -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : dcfifo_low_latency -// -// Description : Dual Clocks FIFO with lowest latency. This fifo implements -// the fifo behavior for Stratix II, Cyclone II and Stratix -// showahead area mode (LPM_SHOWAHEAD=ON, ADD_RAM_OUTPUT_REGISTER=OFF) -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module dcfifo_low_latency (data, rdclk, wrclk, aclr, rdreq, wrreq, - rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter delay_rdusedw = 2; - parameter delay_wrusedw = 2; - parameter rdsync_delaypipe = 1; - parameter wrsync_delaypipe = 1; - parameter intended_device_family = "Stratix"; - parameter lpm_showahead = "OFF"; - parameter underflow_checking = "ON"; - parameter overflow_checking = "ON"; - -input [lpm_width-1:0] data; - input rdclk; - input wrclk; - input aclr; - input rdreq; - input wrreq; - -// OUTPUT PORT DECLARATION - output rdfull; - output wrfull; - output rdempty; - output wrempty; - output [lpm_widthu-1:0] rdusedw; - output [lpm_widthu-1:0] wrusedw; - output [lpm_width-1:0] q; - -// INTERNAL REGISTERS DECLARATION - reg [lpm_width-1:0] mem_data [(1< (1 << lpm_widthu)) - $display ("Error! LPM_NUMWORDS must be less than or equal to 2**LPM_WIDTHU."); - if (dev.IS_VALID_FAMILY(intended_device_family) == 0) - $display ("Error! Unknown INTENDED_DEVICE_FAMILY=%s.", intended_device_family); - - for (i = 0; i < (1 << lpm_widthu); i = i + 1) - mem_data[i] <= {lpm_width{1'bx}}; - i_data_tmp <= 0; - i_wren_tmp <= 0; - i_rdptr_g <= 0; - i_rdptr_g1p <= 1; - i_wrptr_g <= 0; - i_wrptr_g_tmp <= 0; - i_wrptr_g1 <= 1; - i_delayed_wrptr_g <= 0; - i_rdempty <= 1; - i_wrempty <= 1; - i_rdempty_rreg <= 1; - i_rdfull <= 0; - i_wrfull <= 0; - i_wrfull_wreg <= 0; - i_q <= {lpm_width{1'bx}}; - - if (lpm_numwords == (1 << lpm_widthu)) - cnt_mod <= 1 << (lpm_widthu + 1); - else - cnt_mod <= 1 << lpm_widthu; - - if ((lpm_showahead == "OFF") && - ((dev.FEATURE_FAMILY_STRATIXII(intended_device_family)) || - (dev.IS_FAMILY_CYCLONEII(intended_device_family)))) - i_q_is_registered <= 1'b1; - else - i_q_is_registered <= 1'b0; - end - -// COMPONENT INSTANTIATIONS - dcfifo_dffpipe DP_WS_DGRP ( - .d (i_rdptr_g), - .clock (wrclk), - .aclr (aclr), - .q (i_ws_dgrp)); - defparam - DP_WS_DGRP.lpm_delay = wrsync_delaypipe, - DP_WS_DGRP.lpm_width = lpm_widthu; - - dcfifo_dffpipe DP_RS_DGWP ( - .d (i_delayed_wrptr_g), - .clock (rdclk), - .aclr (aclr), - .q (i_rs_dgwp)); - defparam - DP_RS_DGWP.lpm_delay = rdsync_delaypipe, - DP_RS_DGWP.lpm_width = lpm_widthu; - - dcfifo_dffpipe DP_RDUSEDW ( - .d (i_rdusedw_tmp), - .clock (rdclk), - .aclr (aclr), - .q (i_rdusedw)); - dcfifo_dffpipe DP_WRUSEDW ( - .d (i_wrusedw_tmp), - .clock (wrclk), - .aclr (aclr), - .q (i_wrusedw)); - defparam - DP_RDUSEDW.lpm_delay = (delay_rdusedw > 2) ? 2 : delay_rdusedw, - DP_RDUSEDW.lpm_width = lpm_widthu, - DP_WRUSEDW.lpm_delay = (delay_wrusedw > 2) ? 2 : delay_wrusedw, - DP_WRUSEDW.lpm_width = lpm_widthu; - -// ALWAYS CONSTRUCT BLOCK - always @(posedge aclr) - begin - i_data_tmp <= 0; - i_wren_tmp <= 0; - i_rdptr_g <= 0; - i_rdptr_g1p <= 1; - i_wrptr_g <= 0; - i_wrptr_g_tmp <= 0; - i_wrptr_g1 <= 1; - i_delayed_wrptr_g <= 0; - i_rdempty <= 1; - i_wrempty <= 1; - i_rdempty_rreg <= 1; - i_rdfull <= 0; - i_wrfull <= 0; - i_wrfull_wreg <= 0; - if(i_q_is_registered) - i_q <= 0; - end // @(posedge aclr) - - // FIFOram - always @(rdreq or i_rdempty) - begin - if (underflow_checking == "OFF") - i_rden <= rdreq; - else - i_rden <= rdreq && !i_rdempty; - end // @(rdreq or i_rdempty) - - always @(wrreq or i_wrfull) - begin - if (overflow_checking == "OFF") - i_wren <= wrreq; - else - i_wren <= wrreq && !i_wrfull; - end // @(wrreq or i_wrfull) - - always @(posedge wrclk) - begin - i_data_tmp <= data; - i_wrptr_g_tmp <= i_wrptr_g; - i_wren_tmp <= i_wren; - - if (~aclr && ($time > 0)) - begin - if (i_wren) - begin - if (i_wrptr_g1 < cnt_mod - 1) - i_wrptr_g1 <= i_wrptr_g1 + 1; - else - i_wrptr_g1 <= 0; - - i_wrptr_g <= i_wrptr_g1; - end - i_delayed_wrptr_g <= i_wrptr_g; - end - end // @(wrclk) - - always @(negedge wrclk) - begin - if (i_wren_tmp && ($time > 0)) - mem_data[i_wrptr_g_tmp] <= i_data_tmp; - - end // @(wrclk) - - always @(posedge rdclk) - begin - if(~aclr) - begin - if (i_rden && ($time > 0)) - begin - if (i_rdptr_g1p < cnt_mod - 1) - i_rdptr_g1p <= i_rdptr_g1p + 1; - else - i_rdptr_g1p <= 0; - - i_rdptr_g <= i_rdptr_g1p; - end - end - end - - always @(posedge rdclk) - begin - if ((! i_q_is_registered) && ($time > 0)) - begin - if (i_rdempty == 1'b1) - i_q <= mem_data[i_rdptr_g]; - else if (i_rden) - i_q <= mem_data[i_rdptr_g1p]; - end - else if (~aclr && i_rden && ($time > 0)) - i_q <= mem_data[i_rdptr_g]; - end - - // Usedw, Empty, Full - always @(i_wrptr_g or i_ws_dgrp or cnt_mod) - begin - if (i_wrptr_g < i_ws_dgrp) - i_wrusedw_tmp <= cnt_mod + i_wrptr_g - i_ws_dgrp; - else - i_wrusedw_tmp <= i_wrptr_g - i_ws_dgrp; - end // @(i_wrptr_g or i_ws_dgrp) - - always @(i_rdptr_g or i_rs_dgwp or cnt_mod) - begin - if (i_rs_dgwp < i_rdptr_g) - i_rdusedw_tmp <= cnt_mod + i_rs_dgwp - i_rdptr_g; - else - i_rdusedw_tmp <= i_rs_dgwp - i_rdptr_g; - end // @(i_wrptr_g or i_rs_dgwp) - - always @(i_wrptr_g1 or i_ws_dgrp) - begin - if (i_wrptr_g1 == i_ws_dgrp) - i_wrfull <= 1; - else - i_wrfull <= 0; - end // @(i_wrptr_g1 or i_ws_dgrp) - - always @(i_rdptr_g or i_rs_dgwp) - begin - if (i_rdptr_g == i_rs_dgwp) - i_rdempty <= 1; - else - i_rdempty <= 0; - end // @(i_rdptr_g or i_rs_dgwp) - - always @(posedge rdclk) - begin - i_rdfull <= i_wrfull_wreg; - i_rdempty_rreg <= i_rdempty; - end // @(posedge rdclk) - - always @(posedge wrclk) - begin - i_wrempty <= i_rdempty_rreg; - i_wrfull_wreg <= i_wrfull; - end // @(posedge wrclk) - -// CONTINOUS ASSIGNMENT - assign rdempty = i_rdempty; - assign wrempty = i_wrempty; - assign rdfull = i_rdfull; - assign wrfull = i_wrfull; - assign wrusedw = i_wrusedw[lpm_widthu-1:0]; - assign rdusedw = i_rdusedw[lpm_widthu-1:0]; - assign q = i_q; - -endmodule // dcfifo_low_latency -// END OF MODULE - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : dcfifo -// -// Description : Dual Clocks FIFO -// -// Limitation : -// -// Results expected: -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module dcfifo ( data, rdclk, wrclk, aclr, rdreq, wrreq, - rdfull, wrfull, rdempty, wrempty, rdusedw, wrusedw, q); - -// GLOBAL PARAMETER DECLARATION - parameter lpm_width = 1; - parameter lpm_widthu = 1; - parameter lpm_numwords = 2; - parameter delay_rdusedw = 1; - parameter delay_wrusedw = 1; - parameter rdsync_delaypipe = 3; - parameter wrsync_delaypipe = 3; - parameter intended_device_family = "APEX20KE"; - parameter lpm_showahead = "OFF"; - parameter underflow_checking = "ON"; - parameter overflow_checking = "ON"; - parameter clocks_are_synchronized = "FALSE"; - parameter use_eab = "ON"; - parameter add_ram_output_register = "OFF"; - parameter add_width = 1; - parameter lpm_hint = "USE_EAB=ON"; - parameter lpm_type = "dcfifo"; - -// INPUT PORT DECLARATION - input [lpm_width-1:0] data; - input rdclk; - input wrclk; - input aclr; - input rdreq; - input wrreq; - -// OUTPUT PORT DECLARATION - output rdfull; - output wrfull; - output rdempty; - output wrempty; - output [lpm_widthu-1:0] rdusedw; - output [lpm_widthu-1:0] wrusedw; - output [lpm_width-1:0] q; - -// INTERNAL WIRE DECLARATION - wire w_rdfull_s; - wire w_wrfull_s; - wire w_rdempty_s; - wire w_wrempty_s; - wire w_rdfull_a; - wire w_wrfull_a; - wire w_rdempty_a; - wire w_wrempty_a; - wire w_rdfull_l; - wire w_wrfull_l; - wire w_rdempty_l; - wire w_wrempty_l; - wire [lpm_widthu-1:0] w_rdusedw_s; - wire [lpm_widthu-1:0] w_wrusedw_s; - wire [lpm_widthu-1:0] w_rdusedw_a; - wire [lpm_widthu-1:0] w_wrusedw_a; - wire [lpm_widthu-1:0] w_rdusedw_l; - wire [lpm_widthu-1:0] w_wrusedw_l; - wire [lpm_width-1:0] w_q_s; - wire [lpm_width-1:0] w_q_a; - wire [lpm_width-1:0] w_q_l; - -// INTERNAL TRI DECLARATION - tri0 aclr; - -// COMPONENT INSTANTIATIONS - ALTERA_DEVICE_FAMILIES dev (); - - dcfifo_sync SYNC ( - .data (data), - .rdclk (rdclk), - .wrclk (wrclk), - .aclr (aclr), - .rdreq (rdreq), - .wrreq (wrreq), - .rdfull (w_rdfull_s), - .wrfull (w_wrfull_s), - .rdempty (w_rdempty_s), - .wrempty (w_wrempty_s), - .rdusedw (w_rdusedw_s), - .wrusedw (w_wrusedw_s), - .q (w_q_s)); - defparam - SYNC.lpm_width = lpm_width, - SYNC.lpm_widthu = lpm_widthu, - SYNC.lpm_numwords = lpm_numwords, - SYNC.intended_device_family = intended_device_family, - SYNC.lpm_showahead = lpm_showahead, - SYNC.underflow_checking = underflow_checking, - SYNC.overflow_checking = overflow_checking, - SYNC.use_eab = use_eab, - SYNC.add_ram_output_register = add_ram_output_register; - - dcfifo_async ASYNC ( - .data (data), - .rdclk (rdclk), - .wrclk (wrclk), - .aclr (aclr), - .rdreq (rdreq), - .wrreq (wrreq), - .rdfull (w_rdfull_a), - .wrfull (w_wrfull_a), - .rdempty (w_rdempty_a), - .wrempty (w_wrempty_a), - .rdusedw (w_rdusedw_a), - .wrusedw (w_wrusedw_a), - .q (w_q_a) ); - defparam - ASYNC.lpm_width = lpm_width, - ASYNC.lpm_widthu = lpm_widthu, - ASYNC.lpm_numwords = lpm_numwords, - ASYNC.delay_rdusedw = delay_rdusedw, - ASYNC.delay_wrusedw = delay_wrusedw, - ASYNC.rdsync_delaypipe = rdsync_delaypipe, - ASYNC.wrsync_delaypipe = wrsync_delaypipe, - ASYNC.intended_device_family = intended_device_family, - ASYNC.lpm_showahead = lpm_showahead, - ASYNC.underflow_checking = underflow_checking, - ASYNC.overflow_checking = overflow_checking, - ASYNC.use_eab = use_eab, - ASYNC.add_ram_output_register = add_ram_output_register; - - dcfifo_low_latency LOWLATENCY ( - .data (data), - .rdclk (rdclk), - .wrclk (wrclk), - .aclr (aclr), - .rdreq (rdreq), - .wrreq (wrreq), - .rdfull (w_rdfull_l), - .wrfull (w_wrfull_l), - .rdempty (w_rdempty_l), - .wrempty (w_wrempty_l), - .rdusedw (w_rdusedw_l), - .wrusedw (w_wrusedw_l), - .q (w_q_l) ); - defparam - LOWLATENCY.lpm_width = lpm_width, - LOWLATENCY.lpm_widthu = lpm_widthu, - LOWLATENCY.lpm_numwords = lpm_numwords, - LOWLATENCY.delay_rdusedw = delay_rdusedw, - LOWLATENCY.delay_wrusedw = delay_wrusedw, - LOWLATENCY.rdsync_delaypipe = (rdsync_delaypipe > 3 ? rdsync_delaypipe - 2 : 1), - LOWLATENCY.wrsync_delaypipe = (wrsync_delaypipe > 3 ? wrsync_delaypipe - 2 : 1), - LOWLATENCY.intended_device_family = intended_device_family, - LOWLATENCY.lpm_showahead = lpm_showahead, - LOWLATENCY.underflow_checking = underflow_checking, - LOWLATENCY.overflow_checking = overflow_checking; - -// CONTINOUS ASSIGNMENT - assign rdfull = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_rdfull_l : - (clocks_are_synchronized == "TRUE") ? w_rdfull_s : w_rdfull_a; - - assign wrfull = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_wrfull_l : - (clocks_are_synchronized == "TRUE") ? w_wrfull_s : w_wrfull_a; - - assign rdempty = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_rdempty_l : - (clocks_are_synchronized == "TRUE") ? w_rdempty_s : w_rdempty_a; - - assign wrempty = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_wrempty_l : - (clocks_are_synchronized == "TRUE") ? w_wrempty_s : w_wrempty_a; - - assign rdusedw = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_rdusedw_l : - (clocks_are_synchronized == "TRUE") ? w_rdusedw_s : w_rdusedw_a; - - assign wrusedw = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_wrusedw_l : - (clocks_are_synchronized == "TRUE") ? w_wrusedw_s : w_wrusedw_a; - - assign q = ((dev.FEATURE_FAMILY_HAS_STRATIXII_STYLE_RAM(intended_device_family) || - (dev.FEATURE_FAMILY_STRATIX(intended_device_family) && - (lpm_showahead == "ON") && - (add_ram_output_register == "OFF"))) && - (use_eab == "ON")) ? w_q_l : - (clocks_are_synchronized == "TRUE") ? w_q_s : w_q_a; - -endmodule // dcfifo -// END OF MODULE - -//-------------------------------------------------------------------------- -// Module Name : altshift_taps -// -// Description : Parameterized shift register with taps megafunction. -// Implements a RAM-based shift register for efficient -// creation of very large shift registers -// -// Limitation : This megafunction is provided only for backward -// compatibility in Cyclone, Stratix, and Stratix GX -// designs. -// -// Results expected : Produce output from the end of the shift register -// and from the regularly spaced taps along the -// shift register. -// -//-------------------------------------------------------------------------- -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module altshift_taps (shiftin, clock, clken, shiftout, taps); - -// PARAMETER DECLARATION - parameter number_of_taps = 4; // Specifies the number of regularly spaced - // taps along the shift register - parameter tap_distance = 3; // Specifies the distance between the - // regularly spaced taps in clock cycles - // This number translates to the number of - // memory words that will be needed - parameter width = 8; // Specifies the width of the input pattern - parameter power_up_state = "CLEARED"; - parameter lpm_type = "altshift_taps"; - parameter lpm_hint = "UNUSED"; - - // Following parameters are used as constant - parameter RAM_WIDTH = width * number_of_taps; - parameter TOTAL_TAP_DISTANCE = number_of_taps * tap_distance; - -// INPUT PORT DECLARATION - input [width-1:0] shiftin; // Data input to the shifter - input clock; // Positive-edge triggered clock - input clken; // Clock enable for the clock port - -// OUTPUT PORT DECLARATION - output [width-1:0] shiftout; // Output from the end of the shift - // register - output [RAM_WIDTH-1:0] taps; // Output from the regularly spaced taps - // along the shift register - -// INTERNAL REGISTERS DECLARATION - reg [width-1:0] shiftout; - reg [RAM_WIDTH-1:0] taps; - reg [width-1:0] shiftout_tmp; - reg [RAM_WIDTH-1:0] taps_tmp; - reg [width-1:0] contents [0:TOTAL_TAP_DISTANCE-1]; - -// LOCAL INTEGER DECLARATION - integer head; // pointer to memory - integer i; // for loop index - integer j; // for loop index - integer k; // for loop index - integer place; - -// TRI STATE DECLARATION - tri1 clken; - -// INITIAL CONSTRUCT BLOCK - initial - begin - head = 0; - if (power_up_state == "CLEARED") - begin - shiftout = 0; - shiftout_tmp = 0; - for (i = 0; i < TOTAL_TAP_DISTANCE; i = i + 1) - begin - contents [i] = 0; - end - for (j = 0; j < RAM_WIDTH; j = j + 1) - begin - taps [j] = 0; - taps_tmp [j] = 0; - end - end - end - -// ALWAYS CONSTRUCT BLOCK - always @(posedge clock) - begin - if (clken == 1'b1) - begin - contents[head] = shiftin; - head = (head + 1) % TOTAL_TAP_DISTANCE; - shiftout_tmp = contents[head]; - - taps_tmp = 0; - - for (k=0; k < number_of_taps; k=k+1) - begin - place = (((number_of_taps - k - 1) * tap_distance) + head ) % - TOTAL_TAP_DISTANCE; - taps_tmp = taps_tmp | (contents[place] << (k * width)); - end - end - end - - always @(shiftout_tmp) - begin - shiftout <= shiftout_tmp; - end - - always @(taps_tmp) - begin - taps <= taps_tmp; - end - -endmodule // altshift_taps - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : a_graycounter -// -// Description : Gray counter with Count-enable, Up/Down, aclr and sclr -// -// Limitation : Sync sigal priority: clk_en (higher),sclr,cnt_en (lower) -// -// Results expected: q is graycounter output and qbin is normal counter -// -//END_MODULE_NAME-------------------------------------------------------------- - -// BEGINNING OF MODULE -`timescale 1 ps / 1 ps - -// MODULE DECLARATION -module a_graycounter (clock, cnt_en, clk_en, updown, aclr, sclr, - q, qbin); -// GLOBAL PARAMETER DECLARATION - parameter width = 3; - parameter pvalue = 0; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "a_graycounter"; - -// INPUT PORT DECLARATION - input clock; - input cnt_en; - input clk_en; - input updown; - input aclr; - input sclr; - -// OUTPUT PORT DECLARATION - output [width-1:0] q; - output [width-1:0] qbin; - -// INTERNAL REGISTERS DECLARATION - reg [width-1:0] cnt; - -// INTERNAL TRI DECLARATION - tri1 clk_en; - tri1 cnt_en; - tri1 updown; - tri0 aclr; - tri0 sclr; - -// LOCAL INTEGER DECLARATION - -// COMPONENT INSTANTIATIONS - -// INITIAL CONSTRUCT BLOCK - initial - begin - if (width <= 0) - $display ("Error! WIDTH of a_greycounter must be greater than 0."); - - cnt <= pvalue; - end - -// ALWAYS CONSTRUCT BLOCK - always @(posedge aclr or posedge clock) - begin - if (aclr) - cnt <= pvalue; - else - begin - if (clk_en) - begin - if (sclr) - cnt <= pvalue; - else if (cnt_en) - begin - if (updown == 1) - cnt <= cnt + 1; - else - cnt <= cnt - 1; - end - end - end - end - -// CONTINOUS ASSIGNMENT - assign qbin = cnt; - assign q = cnt ^ (cnt >>1); - -endmodule // a_graycounter -// END OF MODULE - - -//-------------------------------------------------------------------------- -// alt_exc_dpram -//-------------------------------------------------------------------------- -// -`timescale 1 ps / 1 ps -module alt_exc_dpram (portadatain, - portadataout, - portaaddr, - portawe, - portaena, - portaclk, - portbdatain, - portbdataout, - portbaddr, - portbwe, - portbena, - portbclk - ); - - // default parameters - parameter operation_mode = "SINGLE_PORT" ; - parameter addrwidth = 14 ; - parameter width = 32 ; - parameter depth = 16384 ; - parameter ramblock = 65535 ; - parameter output_mode = "UNREG" ; - parameter lpm_file = "NONE" ; - parameter lpm_type = "alt_exc_dpram"; - parameter lpm_hint = "UNUSED"; - - // size of memory array - - reg [width-1:0] dpram_content[depth-1:0]; - - // input/output signals - - input portawe , - portbwe , - portaena , - portbena , - portaclk , - portbclk ; - - input [width-1:0] portadatain ; - input [width-1:0] portbdatain ; - - input [addrwidth-1:0] portaaddr ; - input [addrwidth-1:0] portbaddr ; - - output [width-1:0] portadataout , - portbdataout ; - - // internal signals/registers - - reg portaclk_in_last ; - reg portbclk_in_last ; - - wire portaclk_in ; - wire portbclk_in ; - wire portawe_in ; - wire portbwe_in ; - wire portaena_in ; - wire portbena_in ; - - wire [width-1:0] portadatain_in ; - wire [width-1:0] portbdatain_in ; - wire [width-1:0] portadatain_tmp ; - wire [width-1:0] portbdatain_tmp ; - - wire [addrwidth-1:0] portaaddr_in ; - wire [addrwidth-1:0] portbaddr_in ; - - reg [width-1:0] portadataout_tmp ; - reg [width-1:0] portbdataout_tmp ; - reg [width-1:0] portadataout_reg ; - reg [width-1:0] portbdataout_reg ; - reg [width-1:0] portadataout_reg_out ; - reg [width-1:0] portbdataout_reg_out ; - wire [width-1:0] portadataout_tmp2 ; - wire [width-1:0] portbdataout_tmp2 ; - - reg portawe_latched ; - reg portbwe_latched ; - reg [addrwidth-1:0] portaaddr_latched ; - reg [addrwidth-1:0] portbaddr_latched ; - - // assign to internal signals - - assign portadatain_in = portadatain; - assign portaaddr_in = portaaddr; - assign portaena_in = portaena; - assign portaclk_in = portaclk; - assign portawe_in = portawe; - - assign portbdatain_in = portbdatain; - assign portbaddr_in = portbaddr; - assign portbena_in = portbena; - assign portbclk_in = portbclk; - assign portbwe_in = portbwe; - - - // Dual Port Contention Port A address = Port B address - // - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | Port A | Port B | A Data In | B Data In | A Data Out | B Data Out | Memory State | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | read | read | DA | DB | memory | memory | no change | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | write | read | DA | DB | unknown | unknown | memory <= DA | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | read | write | DA | DB | unknown | unknown | memory <= DB | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | write | write | DA | DB | unknown | unknown | memory <= unknown | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // - // Dual Port Contention Port A address != Port B address - // - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | Port A | Port B | A Data In | B Data In | A Data Out | B Data Out | Memory State | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | read | read | DA | DB | mem[A_addr] | mem[B_Addr] | no change | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | write | read | DA | DB | unknown | mem[B_Addr] | mem[A_Addr] <= DA | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | read | write | DA | DB | mem[A_addr] | unknown | mem[B_Addr] <= DB | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // | write | write | DA | DB | unknown | unknown | mem[A_Addr] <= DA | - // | | | | | | | mem[B_Addr] <= DB | - // +-----------+----------+-------------+-------------+--------------+--------------+---------------------+ - // - // NB: Output state is always unknown when writing. - - - initial - begin - // Initialise dpram memory contents from file (if filename specified). - if (lpm_file != "NONE" && lpm_file != "none") $readmemh(lpm_file, dpram_content); - - portaclk_in_last = 0; - portbclk_in_last = 0; - end - - always @(portaclk_in) - begin - if (portaclk_in != 0 && portaclk_in_last == 0) // rising edge port a clock - begin - - portawe_latched = portawe_in ; - portaaddr_latched = portaaddr_in ; - - if (portawe_latched == 'b0) - begin - - // reading A - - if (portaaddr_latched == portbaddr_latched && portbwe_latched != 'b0) - begin - - // B simultaneously writing to same address (effect of B write to memory handled below) - - portadataout_reg = portadataout_tmp; - portadataout_tmp = 'bx; - - end - else - begin - - // B reading from same address, or reading/writing to different address. - - portadataout_reg = portadataout_tmp; - portadataout_tmp = dpram_content[portaaddr_latched]; - - end - end - - else - - // writing to A - - begin - if (portaaddr_latched == portbaddr_latched && portawe_latched != 'b0 && portbwe_latched != 'b0) - begin - - // A and B simultaneously writing to same address - - portadataout_reg = portadataout_tmp ; - dpram_content[portaaddr_latched] = 'bx ; - portadataout_tmp = 'bx ; - - end - else - begin - - // B reading from same address or reading/writing to different address - - portadataout_reg = portadataout_tmp; - dpram_content[portaaddr_latched] = portadatain_tmp ; - portadataout_tmp = 'bx ; - - end - end // writing to A - end // rising edge port a clock - portaclk_in_last = portaclk_in; - end // portaclk_in change event - - always @(portbclk_in) - begin - if (portbclk_in != 0 && portbclk_in_last == 0 && (operation_mode == "DUAL_PORT" || operation_mode == "dual_port")) // rising edge port b clock - begin - - portbwe_latched = portbwe_in ; - portbaddr_latched = portbaddr_in ; - - if (portbwe_latched == 'b0) - begin - - // reading B - - if (portbaddr_latched == portaaddr_latched && portawe_latched != 'b0) - begin - - // A simultaneously writing to same address (effect of A write to memory handled above) - - portbdataout_reg = portbdataout_tmp; - portbdataout_tmp = 'bx; - - end - else - begin - - // A reading from same address, or reading/writing to different address. - - portbdataout_reg = portbdataout_tmp; - portbdataout_tmp = dpram_content[portbaddr_latched]; - - end - end - else - - // writing to B - - begin - if (portbaddr_latched == portaaddr_latched && portbwe_latched != 'b0 && portawe_latched != 'b0) - begin - - // B and A simultaneously writing to same address - - portbdataout_reg = portbdataout_tmp ; - dpram_content[portbaddr_latched] = 'bx ; - portbdataout_tmp = 'bx ; - - end - else - begin - - // A reading from same address or reading/writing to different address - - portbdataout_reg = portbdataout_tmp; - dpram_content[portbaddr_latched] = portbdatain_tmp ; - portbdataout_tmp = 'bx ; - - end - end // writing to B - end // rising edge port B clock - - portbclk_in_last = portbclk_in; - - end // portbclk_in change event - - // registered Port A output enabled ? - - always @(portaena_in or portadataout_reg) - begin - if (output_mode == "REG" || output_mode == "reg") - if ( portaena_in == 1'b1 ) - portadataout_reg_out = portadataout_reg ; - end - - // registered Port B output enabled ? - - always @(portbena_in or portbdataout_reg) - begin - if (output_mode == "REG" || output_mode == "reg") - if ( portbena_in == 1'b1 ) - portbdataout_reg_out = portbdataout_reg ; - end - - // Registered or Unregistered mode ? - - assign portadataout_tmp2 = (output_mode == "REG" || output_mode == "reg") ? portadataout_reg_out[width-1:0] : portadataout_tmp[width-1:0]; - assign portbdataout_tmp2 = (output_mode == "REG" || output_mode == "reg") ? portbdataout_reg_out[width-1:0] : portbdataout_tmp[width-1:0]; - - assign portadatain_tmp[width-1:0] = portadatain; - assign portbdatain_tmp[width-1:0] = portbdatain; - - assign portadataout = portadataout_tmp2; - assign portbdataout = portbdataout_tmp2; - - -endmodule // alt_exc_dpram - -//-------------------------------------------------------------------------- -// Altera UP Core -//-------------------------------------------------------------------------- -// -`timescale 1 ps / 1 ps - -module alt_exc_upcore ( - intpld, intuart, inttimer0, inttimer1, intcommtx, intcommrx, intproctimer, intprocbridge, - debugrq, debugext0, debugext1, debugiebrkpt, debugdewpt, debugextin, debugack, - debugrng0, debugrng1, debugextout, - - slavehclk, - slavehwrite, slavehreadyi, slavehselreg, slavehsel, slavehmastlock, slavehaddr, - slavehwdata, slavehtrans, slavehsize, slavehburst, slavehreadyo, slavebuserrint, - slavehrdata, slavehresp, - - masterhclk, - masterhrdata, masterhresp, masterhwrite, masterhlock, masterhbusreq, masterhaddr, - masterhwdata, masterhtrans, masterhsize, masterhready, masterhburst, masterhgrant, - - lockreqdp0, lockreqdp1, - lockgrantdp0, lockgrantdp1, - - ebiack, ebiwen, ebioen, ebiclk, ebibe, ebicsn, ebiaddr, ebidq, - - uarttxd, uartrtsn, uartdtrn, uartctsn, uartdsrn, uartrxd, uartdcdn, - uartrin, - - sdramclk, sdramclkn, sdramclke, sdramwen, sdramcasn, sdramrasn, sdramdqm, - sdramaddr, sdramdq, sdramdqs, sdramcsn, - - - intextpin, traceclk, tracesync, tracepipestat, tracepkt, clk_ref, intnmi, perreset, - npor, nreset, gpi, gpo - ); - - parameter processor = "ARM"; - parameter source = ""; - parameter sdram_width = 32; - parameter sdramdqm_width = 4; - parameter gpio_width = 4; - parameter lpm_type = "alt_exc_upcore"; - parameter lpm_hint = "UNUSED"; - -// AHB2 Master and Slave bridges -// Interupt, debug and trace ports -// DP Ram locks - - input slavehclk, masterhclk; - - input slavehwrite, slavehreadyi, slavehselreg, slavehsel, - slavehmastlock, masterhready, masterhgrant; - - input lockreqdp0, lockreqdp1, - debugrq, debugext0, debugext1, debugiebrkpt, debugdewpt; - - input [31:0] slavehaddr, slavehwdata, masterhrdata; - input [1:0] slavehtrans, slavehsize, masterhresp; - input [3:0] debugextin; - input [5:0] intpld; - input [2:0] slavehburst; - - output masterhwrite, masterhlock, masterhbusreq, slavehreadyo, slavebuserrint, - intuart, inttimer0, inttimer1, intcommtx, intcommrx, - debugack, debugrng0, debugrng1, - lockgrantdp0, lockgrantdp1; - - output [31:0] masterhaddr, masterhwdata, slavehrdata; - output [1:0] masterhtrans, masterhsize, slavehresp; - output [2:0] masterhburst; - output [3:0] debugextout; - -// Shared IO connections -// EBI Expansion bus -// SDRAM interface -// UART and trace port - - input ebiack; - output ebiwen, ebioen, ebiclk; - output [1:0] ebibe; - output [3:0] ebicsn; - output [24:0] ebiaddr; - inout [15:0] ebidq; - - input uartctsn, uartdsrn, uartrxd; - output uarttxd, uartrtsn, uartdtrn; - inout uartdcdn, uartrin; - - output sdramclk, sdramclkn, sdramclke, - sdramwen, sdramcasn, sdramrasn; - output [1:0] sdramcsn; - output [sdramdqm_width-1:0] sdramdqm; - output [14:0] sdramaddr; - - inout [sdram_width-1:0] sdramdq; - inout [sdramdqm_width-1:0] sdramdqs; - - input intextpin; - output traceclk, tracesync; - output [2:0] tracepipestat; - output [15:0] tracepkt; - - input clk_ref, npor; - inout nreset; - output intproctimer, intprocbridge; - output perreset; - input intnmi; - input [gpio_width-1:0] gpi; - output [gpio_width-1:0] gpo; - - -///////////////////////////////////////////////////////////////////////////////////////////////// -// AHB Constants -///////////////////////////////////////////////////////////////////////////////////////////////// - -// responses (HRESP) -`define H_OKAY 2'b00 -`define H_ERROR 2'b01 -`define H_RETRY 2'b10 -`define H_SPLIT 2'b11 - -// transcation types (HTRANS) -`define H_IDLE 2'b00 -`define H_BUSY 2'b01 -`define H_NONSEQ 2'b10 -`define H_SEQ 2'b11 - -// burst mode (HBURST) -`define H_SINGLE 3'b000 -`define H_INCR 3'b001 -`define H_WRAP4 3'b010 -`define H_INCR4 3'b011 -`define H_WRAP8 3'b100 -`define H_INCR8 3'b101 -`define H_WRAP16 3'b110 -`define H_INCR16 3'b111 - -// transaction sizes (HSIZE 8,16,32 bits -- larger sizes not supported) -`define H_BYTE 2'b00 -`define H_HWORD 2'b01 -`define H_WORD 2'b10 - -///////////////////////////////////////////////////////////////////////////////////////////////// -// slave port -///////////////////////////////////////////////////////////////////////////////////////////////// - - wire slavehclk_in; - wire slavehwrite_in, slavehreadyi_in, slavehselreg_in, slavehsel_in, - slavehmastlock_in; - wire [31:0] slavehaddr_in, slavehwdata_in; - wire [1:0] slavehtrans_in, slavehsize_in; - wire [2:0] slavehburst_in; - wire slavehreadyo_out, slavebuserrint_out; - wire [31:0] slavehrdata_out; - wire [1:0] slavehresp_out; - -// - assign slavehclk_in = slavehclk ; - assign slavehwrite_in = slavehwrite ; - assign slavehreadyi_in = slavehreadyi ; - assign slavehselreg_in = slavehselreg ; - assign slavehsel_in = slavehsel ; - assign slavehmastlock_in = slavehmastlock; - - assign slavehaddr_in = slavehaddr; - - assign slavehwdata_in = slavehwdata; - - assign slavehtrans_in = slavehtrans; - assign slavehsize_in = slavehsize; - assign slavehburst_in = slavehburst; - -// - assign slavehreadyo = slavehreadyo_out; - assign slavebuserrint= slavebuserrint_out; - - assign slavehrdata = slavehrdata_out; - assign slavehresp = slavehresp_out; - -///////////////////////////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////////////////////////// - -// outputs - reg slavehreadyo_out_r ; - reg [1:0] slavehresp_out_r ; - - assign slavehreadyo_out = slavehreadyo_out_r ; - assign slavehresp_out = slavehresp_out_r ; - - -// record of address and control information (latched on address phase) - reg [31:0] startReg; // start address for burst - reg [31:0] addrReg; - reg [1:0] transReg; - reg [1:0] sizeReg; - reg writeReg; - reg [2:0] burstReg; - reg selReg; - reg [7:0] waitReg; - -// Implement 6 banks of 256K = (1.5MB of address space) -// /////////////////////////////////////////////////////////////////// - reg [79:0] memCfg[0:5]; // slavememory.cfg.dat - reg [31:0] memStart[0:5]; - reg [31:0] memEnd[0:5]; - reg [7:0] memWaitStart[0:5]; - reg [7:0] memWait[0:5]; - reg [31:0] memMapA[0:65535]; // slavememory.0.dat - reg [31:0] memMapB[0:65535]; - reg [31:0] memMapC[0:65535]; - reg [31:0] memMapD[0:65535]; - reg [31:0] memMapE[0:65535]; - reg [31:0] memMapF[0:65535]; // slavememory.5.dat - - reg [2:0] memBank; - reg [79:0] temp; - - integer output_file ; - - initial begin - -// Open the results file - output_file = $fopen("output.dat") ; - if ( !output_file ) - $display("ERROR: Cannot open Output File") ; - - -// Initialise memory banks from config and map files -////////////////////////////////////////////////////////////////////// - temp=80'h00000000_00000000_00_00; - for (memBank=0;memBank<6;memBank=memBank+1) - begin - memCfg[memBank]=temp; - end - -// 79..48 start address -// 47..16 end address -// 15...8 wait states on first access -// 7...0 wait states per cycle - $readmemh("slavememory.cfg.dat", memCfg); - for (memBank=0;memBank<6;memBank=memBank+1) - begin - temp=memCfg[memBank]; - memStart[memBank] =temp[79:48]; - memEnd[memBank] =temp[47:16]; - memWaitStart[memBank] =temp[15:8]; - memWait[memBank] =temp[7:0]; - end - - if (memStart[0]!=memEnd[0]) $readmemh("slavememory.0.dat", memMapA); - if (memStart[1]!=memEnd[1]) $readmemh("slavememory.1.dat", memMapB); - if (memStart[2]!=memEnd[2]) $readmemh("slavememory.2.dat", memMapC); - if (memStart[3]!=memEnd[3]) $readmemh("slavememory.3.dat", memMapD); - if (memStart[4]!=memEnd[4]) $readmemh("slavememory.4.dat", memMapE); - if (memStart[5]!=memEnd[5]) $readmemh("slavememory.5.dat", memMapF); -////////////////////////////////////////////////////////////////////// - - addrReg=0; - transReg=`H_IDLE; - sizeReg=`H_WORD; - writeReg=0; - burstReg=`H_NONSEQ; - selReg=0; - - slavehresp_out_r=`H_OKAY; - end - - -// select signal - wire sel = slavehsel_in & slavehreadyi_in; - -// determine if the transaction includes an operation / a "busy" - wire doWork = selReg & ((transReg==`H_NONSEQ || transReg==`H_SEQ) ? 1'b1 : 1'b0); - wire doBusyWork = selReg & ( transReg==`H_BUSY ? 1'b1 : 1'b0); - - -// BURST MODE SUPPORT -/////////////////////////////////////////////////////////////////////////////// -// -// If we are in burst mode we'll compute our own address and control settings -// based on the spec. -// -// compute values SEQuential (burst) transfers - wire seqTrans = ( selReg & - ( doWork | doBusyWork) & - ( (slavehtrans_in==`H_SEQ || slavehtrans_in==`H_BUSY) ) ? 1'b1 : 1'b0 ); - - -// mask to determine which bits are retained from the start address - wire [31:0] wrapmask; - assign wrapmask = - ( burstReg==`H_WRAP4 ? {32{1'b1}} << 2: // all but 2 - ( burstReg==`H_WRAP8 ? {32{1'b1}} << 3: // all but 3 - ( burstReg==`H_WRAP16 ? {32{1'b1}} << 4: // all but 4 - {32{1'b0}} ) )); // none - wire [31:0] wrapmask_w; - assign wrapmask_w = // correct for word size - ( sizeReg==`H_WORD ? wrapmask<<2 : - ( sizeReg==`H_HWORD ? wrapmask<<1 : - /* H_BYTE */ wrapmask )); - - wire [31:0] seqPlusAddr; // work out the next sequential address - assign seqPlusAddr = - ( burstReg == `H_SINGLE) ? addrReg : - addrReg + ( sizeReg==`H_BYTE ? 1 : - ( sizeReg==`H_HWORD ? 2 : - ( sizeReg==`H_WORD ? 4 : 0) ) ) ; - - wire [31:0] seqAddr; // apply the mask to wrap at boundaries - assign seqAddr = (slavehtrans_in==`H_BUSY) ? addrReg : - ( (startReg&wrapmask_w) | (seqPlusAddr&~wrapmask_w)); - -// -// if this is a sequential transaction only sample HTRANS - wire [31:0] startNext; - wire [31:0] addrNext; - wire [1:0] transNext; - wire [1:0] sizeNext; - wire [2:0] burstNext; - wire writeNext; - - assign startNext = seqTrans ? startReg : slavehaddr_in; - assign addrNext = seqTrans ? seqAddr : slavehaddr_in; - assign transNext = slavehtrans_in; - assign sizeNext = seqTrans ? sizeReg : slavehsize_in; - assign burstNext = seqTrans ? burstReg : slavehburst_in; - assign writeNext = seqTrans ? writeReg : slavehwrite_in; - - -// Latch the control data if we are selected -/////////////////////////////////////////////////////////////////////////////////// - always @ (posedge slavehclk_in) - begin -// if readin is low another device is wait stating its -// data phase and hence extending our address phase - if (slavehreadyi_in) - begin - selReg <= sel; - if (sel) // latch the control data - begin - startReg <= startNext; - addrReg <= addrNext; - transReg <= transNext; - sizeReg <= sizeNext; - writeReg <= writeNext; - burstReg <= burstNext; - end - else - begin - startReg <= 0; - addrReg <= 0; - transReg <= `H_IDLE; - sizeReg <= `H_WORD; - writeReg <= 0; - burstReg <= `H_SINGLE; - end - end - end - - -// Implment memory banks -/////////////////////////////////////////////////////////////////////////////////// -// bank selects - wire bankA = ( addrReg>=memStart[0] && addrReg<=memEnd[0] && memStart[0]!=memEnd[0]) ? 1'b1 : 1'b0; - wire bankB = ( addrReg>=memStart[1] && addrReg<=memEnd[1] && memStart[1]!=memEnd[1]) ? 1'b1 : 1'b0; - wire bankC = ( addrReg>=memStart[2] && addrReg<=memEnd[2] && memStart[2]!=memEnd[2]) ? 1'b1 : 1'b0; - wire bankD = ( addrReg>=memStart[3] && addrReg<=memEnd[3] && memStart[3]!=memEnd[3]) ? 1'b1 : 1'b0; - wire bankE = ( addrReg>=memStart[4] && addrReg<=memEnd[4] && memStart[4]!=memEnd[4]) ? 1'b1 : 1'b0; - wire bankF = ( addrReg>=memStart[5] && addrReg<=memEnd[5] && memStart[5]!=memEnd[5]) ? 1'b1 : 1'b0; - -// byte offset into bank //word offset into bank - wire [31:0] offsetA = addrReg-memStart[0]; wire [15:0] wordA = offsetA[17:2]; - wire [31:0] offsetB = addrReg-memStart[1]; wire [15:0] wordB = offsetB[17:2]; - wire [31:0] offsetC = addrReg-memStart[2]; wire [15:0] wordC = offsetC[17:2]; - wire [31:0] offsetD = addrReg-memStart[3]; wire [15:0] wordD = offsetD[17:2]; - wire [31:0] offsetE = addrReg-memStart[4]; wire [15:0] wordE = offsetE[17:2]; - wire [31:0] offsetF = addrReg-memStart[5]; wire [15:0] wordF = offsetF[17:2]; - -// current data - wire [31:0] dataA = memMapA[wordA]; - wire [31:0] dataB = memMapB[wordB]; - wire [31:0] dataC = memMapC[wordC]; - wire [31:0] dataD = memMapD[wordD]; - wire [31:0] dataE = memMapE[wordE]; - wire [31:0] dataF = memMapF[wordF]; - - reg [31:0] currentVal; - always @(dataA or dataB or dataC or dataD or dataE or dataF or - bankA or bankB or bankC or bankD or bankE or bankF ) - begin - if (bankA) currentVal=dataA; - else if (bankB) currentVal=dataB; - else if (bankC) currentVal=dataC; - else if (bankD) currentVal=dataD; - else if (bankE) currentVal=dataE; - else if (bankF) currentVal=dataF; - end - - -// byte enables - wire be0 = (sizeReg==`H_WORD || - (sizeReg==`H_HWORD && addrReg[1]==1'b0) || - (sizeReg==`H_BYTE && addrReg[1:0]==2'b00) ) ? 1'b1 : 1'b0; - wire be1 = (sizeReg==`H_WORD || - (sizeReg==`H_HWORD && addrReg[1]==1'b0) || - (sizeReg==`H_BYTE && addrReg[1:0]==2'b01) ) ? 1'b1 : 1'b0; - wire be2 = (sizeReg==`H_WORD || - (sizeReg==`H_HWORD && addrReg[1]==1'b1) || - (sizeReg==`H_BYTE && addrReg[1:0]==2'b10) ) ? 1'b1 : 1'b0; - wire be3 = (sizeReg==`H_WORD || - (sizeReg==`H_HWORD && addrReg[1]==1'b1) || - (sizeReg==`H_BYTE && addrReg[1:0]==2'b11) ) ? 1'b1 : 1'b0; - - wire [31:0] readDataMask = {be3 ? 8'hFF : 8'h00, - be2 ? 8'hFF : 8'h00, - be1 ? 8'hFF : 8'h00, - be0 ? 8'hFF : 8'h00 }; - - - -// wait state generation -/////////////////////////////////////////////////////////////////////////////////// - - reg s_addr_latch; // address latched this cycle - reg [7:0] waitStart; - reg [7:0] waitSeq; - - initial begin - s_addr_latch=1'b0; - waitReg=8'h00; - end - - always @(bankA or bankB or bankC or bankD or bankE or bankF ) - begin - if (bankA) waitStart = memWaitStart[0]; - else if (bankB) waitStart = memWaitStart[1]; - else if (bankC) waitStart = memWaitStart[2]; - else if (bankD) waitStart = memWaitStart[3]; - else if (bankE) waitStart = memWaitStart[4]; - else if (bankF) waitStart = memWaitStart[5]; - end - - always @(bankA or bankB or bankC or bankD or bankE or bankF ) - begin - if (bankA) waitSeq = memWait[0]; - else if (bankB) waitSeq = memWait[1]; - else if (bankC) waitSeq = memWait[2]; - else if (bankD) waitSeq = memWait[3]; - else if (bankE) waitSeq = memWait[4]; - else if (bankF) waitSeq = memWait[5]; - end - - -// -// wait if -// first beat and memWaitStart and addr has just been latched -// or -// first beat and waitReg (more than 1 wait state) -// or -// seq beat and waitReg -// else ready -// - - always @(posedge slavehclk_in) - s_addr_latch <= slavehreadyi_in & slavehsel_in; - - always @(doWork or transReg or waitReg or waitStart or s_addr_latch) - begin - if ( doWork & (transReg==`H_NONSEQ) & (waitStart!=8'h00) & s_addr_latch ) - begin - slavehreadyo_out_r = 1'b0; - // $fdisplay(output_file, "SLAVE: wait on first" ); - end - else if ( doWork & (transReg==`H_NONSEQ) & waitReg!=8'h00 ) - begin - slavehreadyo_out_r = 1'b0; - // $fdisplay(output_file, "SLAVE: wait" ); - end - else if (doWork & (transReg==`H_SEQ) & (waitReg!=8'h00)) - begin - slavehreadyo_out_r = 1'b0; - // $fdisplay(output_file, "SLAVE: wait" ); - end - else - slavehreadyo_out_r = 1'b1; - end - - -// if we are waiting (waitReg>0) and not in a busy decrement the counter -// otherwise get the new value from memWait of memWaitStart according to -// the transaction type - - wire [7:0] waitStartNext; - assign waitStartNext = ( waitStart>8'h01 ? (waitStart-1) : 8'h00); - - always @ (posedge slavehclk_in) - waitReg<= (waitReg!=8'h00 & ~doBusyWork) ? (waitReg - 1'b1) : - ( doWork & (transReg==`H_NONSEQ) & (waitStart!=8'h00) & s_addr_latch ? waitStartNext : - ( seqTrans ? waitSeq : 8'h00 )); - - -// read data -/////////////////////////////////////////////////////////////////////////////////// - assign slavehrdata_out =(doWork & ~writeReg & slavehreadyo_out_r) ? - (readDataMask & currentVal) : {32{1'b0}}; - - - -// record writes in memory banks + report on screen -/////////////////////////////////////////////////////////////////////////////////// - reg [31:0] memWord; // the word to be updated / read - always @ (posedge slavehclk_in) - begin - if (doWork & slavehreadyo_out_r) - begin - memWord = currentVal; - if (writeReg) - begin - if (be0) memWord[7:0] =slavehwdata_in[7:0] ; - if (be1) memWord[15:8] =slavehwdata_in[15:8] ; - if (be2) memWord[23:16] =slavehwdata_in[23:16]; - if (be3) memWord[31:24] =slavehwdata_in[31:24]; - - if (bankA) memMapA[wordA] = memWord; - if (bankB) memMapB[wordB] = memWord; - if (bankC) memMapC[wordC] = memWord; - if (bankD) memMapD[wordD] = memWord; - if (bankE) memMapE[wordE] = memWord; - if (bankF) memMapF[wordF] = memWord; - end - if (output_file) - $fdisplay(output_file, - "SLAVE: addr=[%h] %s data=[%h] %s", - addrReg, - writeReg ? "WRITE" : "READ", - writeReg ? slavehwdata_in : slavehrdata_out , - sizeReg==`H_BYTE ? "BYTE" : - ( sizeReg==`H_HWORD ? "HALF WORD" : "WORD" ) ); - else - $display( - "SLAVE: addr=[%h] %s data=[%h] %s", - addrReg, - writeReg ? "WRITE" : "READ", - writeReg ? slavehwdata_in : slavehrdata_out , - sizeReg==`H_BYTE ? "BYTE" : - ( sizeReg==`H_HWORD ? "HALF WORD" : "WORD" ) ); - - end - end - -///////////////////////////////////////////////////////////////////////////////////////////////// -// Master Port transactor -///////////////////////////////////////////////////////////////////////////////////////////////// - -// timing data - setup and holds -//////////////////////////////// - wire masterhclk_in; - wire masterhready_in, masterhgrant_in; - wire [31:0] masterhrdata_in; - wire [1:0] masterhresp_in; - wire masterhwrite_out, masterhlock_out, masterhbusreq_out; - wire [31:0] masterhaddr_out, masterhwdata_out; - wire [1:0] masterhtrans_out, masterhsize_out; - wire [2:0] masterhburst_out; - -// - assign masterhclk_in = masterhclk; - assign masterhready_in = masterhready; - assign masterhgrant_in = masterhgrant; - - assign masterhrdata_in = masterhrdata; - assign masterhresp_in = masterhresp; - -// - assign masterhwrite = masterhwrite_out; - assign masterhlock = masterhlock_out; - assign masterhbusreq = masterhbusreq_out; - - assign masterhtrans = masterhtrans_out; - assign masterhsize = masterhsize_out; - assign masterhburst = masterhburst_out; - - assign masterhaddr = masterhaddr_out; - assign masterhwdata = masterhwdata_out; - - - ///////////////////////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////////////////////////////// - - // Transaction Record Format - // 255..254 spare - // 253..252 response - // 251..220 read data - // 219 go busy - // 218..217 spare - // 216..208 number of beats in sequential transaction - // 207..176 start address of transaction - // 175..144 expected data - // 143..128 transaction number - // ------------------------------------- following field read from command file - // 127..112 spare - // 111..109 spare - // 108 bus command (0 => inactive) - // 107.. 76 address - // 75.. 73 spare - // 72 write - // 71.. 40 write data / expected read data - // 39.. 37 spare - // 36 lock (not implemented) - // 35.. 33 spare - // 32 check expected data (not implemented) - // 31.. 30 spare - // 29.. 28 transaction type - // 27.. 23 spare - // 21.. 20 burst type - // 19.. 18 spare - // 17.. 16 size - // 15.. 00 repeat count - - // register outputs - reg [31:0] masterhaddr_out_r; - reg [31:0] masterhwdata_out_r; - reg [2:0] masterhburst_out_r; - reg [1:0] masterhtrans_out_r; - reg masterhwrite_out_r; - - assign masterhaddr_out = masterhaddr_out_r; - assign masterhwdata_out = masterhwdata_out_r; - assign masterhburst_out = masterhburst_out_r; - assign masterhtrans_out = masterhtrans_out_r; - assign masterhwrite_out = masterhwrite_out_r; - - reg [2:0] masterhsize_outl; // the transactor implements the full 3 bit size - assign masterhsize_out=masterhsize_outl[1:0]; // field but upCore only uses 2 - - - // //////////////////////////////////////////////////////////////////////////////////////////// - // - reg [128:0] transactions[1:65535]; // space for NUMTRANS transactions - reg [128:0] tmp_transaction; - reg [8:0] tmp_beats, tmp_num; - - // Transaction records - reg [255:0] n_trans; // next - reg [255:0] c_trans; // control / address phase - reg [255:0] d_trans; // data phase - reg [255:0] retry_trans; // retrying - reg [255:0] r_trans; // reporting - - reg [255:0] i_trans; // IDLE Transaction - - reg [15:0] trans_num; // the current control phase transaction - reg [31:0] resp_data; - -/*---------------------------------------------------------------------------- -Control signals for master transactor -----------------------------------------------------------------------------*/ - reg reset; - wire start = n_trans[108]; - wire stop = 1'b0; - wire continue_after_error = 1'b1; - wire generate_data = 1'b0; - wire [1:0] insert_busy = 2'b00; - wire go_busy = n_trans[219]; - wire [8:0] beats = n_trans[216:208]; // 511 beats max - wire [2:0] burst = n_trans[23:20]; - wire [2:0] size = n_trans[18:16]; - wire write = n_trans[72]; - wire [31:0] start_address = n_trans[207:176]; - wire [31:0] data = n_trans[71:40]; - - -/*---------------------------------------------------------------------------- -Transactor state and responses -----------------------------------------------------------------------------*/ - reg [2:0] original_burst; - reg masterhgrant_in_r; - reg [1:0] busy_states; - reg [1:0] busy_counter; - reg [9:0] init_wrap_mask, wrap_mask; - reg [7:0] masterhaddr_out_r_inc, init_wrap_boundary_bit; - reg [10:0] init_next_masterhaddr_out_r, wrap_boundary_bit; - reg [9:0] next_masterhaddr_out_r; - wire break_wrap; - - reg address_bus_owned, data_bus_owned; - reg add_go, data_go; - reg reading, writing; - reg first_beat, need_retry, wrap, replay_wrap; - reg new_grant; - wire first_masterhtrans_out_r; - wire addr_ack; - wire data_ack; - -/*---------------------------------------------------------------------------- -Initialisation -----------------------------------------------------------------------------*/ - initial - begin - i_trans ={256{1'b0}}; // set up a null transaction record - i_trans[143:128]=16'hFFFF; - i_trans[29:28] =`H_IDLE; - - d_trans=i_trans; // fill pipe with null's - c_trans=i_trans; - r_trans=i_trans; - // initialise the transactions database - tmp_transaction={128{1'b0}}; - - // we're using the bus functional language so load the commands - // from a file - for (trans_num=1;trans_num<65535;trans_num=trans_num+1) - begin - transactions[trans_num]=tmp_transaction; - end - $readmemh("mastercommands.dat", transactions); - - tmp_num = 9'b000000000; - tmp_beats = 9'b000000000; - trans_num=16'h0000; - - n_trans=i_trans; - n_trans[2]=1'b1; // repeat 4 - - reset=0; // reset the transactor on start - #10 reset=1; - #20 reset=0; - - end - - - -/*---------------------------------------------------------------------------- - Report completed transactions - - We could mask and shift the received data for HALFWORD and BYTE - transactions but we won't. - ----------------------------------------------------------------------------*/ - // received data - /**** - wire [31:0] r_r_data = r_trans[72]==1'b1 ? r_trans[71:40] : r_trans[251:220]; - wire [31:0] e_r_data = r_trans[175:144]; - wire [31:0] mr_r_data, me_r_data; // byte lane masked recovered and expected - - mr_r_data = r_trans[17:16] == `H_WORD ? r_r_data : - (r_trans[17:16] == `H_HWORD ? - { 16'h0000, (r_trans[77]==1'b1 ? r_r_data[31:16] : r_r_data[15:0]) } : - // byte - { 24'h000000, ( r_trans[77:76]==2'b00 ? r_r_data[7:0] : - r_trans[77:76]==2'b01 ? r_r_data[15:8] : - r_trans[77:76]==2'b10 ? r_r_data[23:16] : - r_r_data[31:24]) } ); - - r_rdata = r_trans[17:16] == `H_WORD ? r_e_data : - (r_trans[17:16] == `H_HWORD ? - { 16'h0000, (r_trans[77]==1'b1 ? r_e_data[31:16] : r_e_data[15:0]) } : - // byte - { 24'h000000, ( r_trans[77:76]==2'b00 ? r_e_data[7:0] : - r_trans[77:76]==2'b01 ? r_e_data[15:8] : - r_trans[77:76]==2'b10 ? r_e_data[23:16] : - r_e_data[31:24]) } ); - ****/ - always @(posedge masterhclk_in) - begin - if (r_trans[108]==1'b1) // r_trans contains a valid transaction - begin - - if (output_file) - $fdisplay(output_file, - "MASTER: trans=[%d] addr=[%h] %s data=[%h] expected=[%h] %s %s", - r_trans[143:128], - r_trans[107:76], - r_trans[72]==1'b1 ? "WRITE" : "READ", - r_trans[72]==1'b1 ? r_trans[71:40] : r_trans[251:220], - r_trans[175:144], - r_trans[17:16]==`H_BYTE ? "BYTE" : - ( r_trans[17:16]==`H_HWORD ? "HALF WORD" : "WORD" ), - r_trans[253:252]==`H_OKAY ? "OKAY" : "ERROR" ); - else - $display( - "MASTER: trans=[%d] addr=[%h] %s data=[%h] expected=[%h] %s %s", - r_trans[143:128], - r_trans[107:76], - r_trans[72]==1'b1 ? "WRITE" : "READ", - r_trans[72]==1'b1 ? r_trans[71:40] : r_trans[251:220], - r_trans[175:144], - r_trans[17:16]==`H_BYTE ? "BYTE" : - ( r_trans[17:16]==`H_HWORD ? "HALF WORD" : "WORD" ), - r_trans[253:252]==`H_OKAY ? "OKAY" : "ERROR" ); - - end - end - - - - - -/*---------------------------------------------------------------------------- -Get Next Transaction -----------------------------------------------------------------------------*/ - reg [216:208] tmp_repeats; - always - begin - - while ( trans_num<16'hFFFF) - begin - - if (n_trans[15:0]==16'h0000) - begin - // get the next record - trans_num = trans_num+1; - - tmp_transaction = transactions[trans_num]; - - n_trans[175:144]<= tmp_transaction[71:40]; // expected data - n_trans[143:128]<= trans_num; - n_trans[127:0] <= tmp_transaction; - - - // check for a BUSY - n_trans[219] <= tmp_transaction[29:28]==`H_BUSY ? 1'b1 : 1'b0; - - // update the start address - if (tmp_transaction[29:28]!=`H_SEQ&&tmp_transaction[29:28]!=`H_BUSY) - begin - n_trans[207:176] <= tmp_transaction[107:76]; // start address - end - - - // compute the number of beats in burst - if (tmp_transaction[23:20]!=`H_SINGLE && tmp_transaction[29:28]==`H_NONSEQ) - begin - tmp_beats=9'b0_0000_0001; - tmp_repeats[216:208]=9'b0_0000_0001; - - // get the transaction from the database - tmp_transaction=transactions[trans_num+tmp_beats]; - - while (tmp_transaction[29:28]==`H_SEQ||tmp_transaction[29:28]==`H_BUSY) - begin - tmp_repeats[216:208]=tmp_repeats[216:208]+tmp_transaction[15:0]+1; - tmp_beats=tmp_beats+1; - - // get the transaction from the database - tmp_transaction = transactions[trans_num+tmp_beats]; - - end - n_trans[216:208]<=tmp_repeats[216:208]; - end - - - end - else - begin - n_trans[15:0]<=n_trans[15:0]-1; - end // i - - // wait for the current transaction to be accepted - @(posedge masterhclk_in); - while (~(addr_ack|data_ack) && n_trans[108]) - @(posedge masterhclk_in); - - end // while transactions in buffer - if (output_file) $fclose(output_file) ; - $finish(2); - end - - - - - -/*---------------------------------------------------------------------------- -Compute burst length - -add_go_r prevents a newly loaded length being decremented by the last data -beat of the previous transaction. -----------------------------------------------------------------------------*/ - reg [8:0] length; - reg add_go_r; - always @(posedge masterhclk_in) - if (masterhready_in) - add_go_r <= add_go; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - length <= 5'h0; - else if (add_go) - case (burst) - `H_SINGLE: length <= 9'h1; - `H_INCR: length <= beats; - `H_WRAP4, - `H_INCR4: length <= 9'h4; - `H_WRAP8, - `H_INCR8: length <= 9'h8; - `H_WRAP16, - `H_INCR16: length <= 9'h10; - endcase - else if ((reading | writing) & masterhready_in & ~add_go_r & ((masterhresp_in == `H_OKAY) | (masterhresp_in == `H_ERROR))) - length <= length - (|length); - - reg [8:0] address_length; - always @(posedge masterhclk_in or posedge reset) - if (reset) - address_length <= 5'h0; - else if (add_go) - case (burst) - `H_SINGLE: address_length <= 9'h1; - `H_INCR: address_length <= beats; - `H_WRAP4, - `H_INCR4: address_length <= 9'h4; - `H_WRAP8, - `H_INCR8: address_length <= 9'h8; - `H_WRAP16, - `H_INCR16: address_length <= 9'h10; - endcase - else if (data_bus_owned & ~masterhready_in & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT))) - address_length <= address_length + 9'h1; - else if (address_bus_owned & masterhready_in & ~(|busy_states) & (masterhtrans_out_r != `H_IDLE)) - address_length <= address_length - (|address_length); - else if (address_bus_owned & masterhready_in & (|busy_states) & (masterhtrans_out_r == `H_BUSY) & ~(|busy_counter)) - address_length <= address_length - (|address_length); - -/*---------------------------------------------------------------------------- -Bus request state machine - -Bus request machine follows the principle that the arbiter will generally -only re-assign bus grants at the end of a burst transaction. For defined -bursts masterhbusreq_out is removed as soon as we masterhave started the transaction. -Undefined (INCR) bursts will masterhold masterhbusreq_out asserted until the last beat of the -transaction. - -Locked transactions must always assert masterhlock_out for at least one cycle before -the address to be locked to allow the arbiter to see the lock. In practice, -this means inserting an idle cycle. - -Have to be careful using burst and beats from the control word. As soon as -the master address phase masterhas finished and the addr_ack is asserted the -testbench can change the control word. So don't use them after the initial -request. Use the ahb outputs instead which will tell us what sort of -transaction we're doing. -----------------------------------------------------------------------------*/ - reg [2:0] req_state; - parameter req_idle = 3'b000, - req_first = 3'b001, - req_wait = 3'b101, - req_masterhold = 3'b011, - req_using = 3'b010, - req_again = 3'b111; - assign masterhbusreq_out = start - | (req_state == req_first) - | (req_state == req_wait) - | (req_state == req_masterhold) - | (req_state == req_again); - - wire single_beat = (burst == `H_SINGLE) - | (burst == `H_INCR) & (beats == 9'b1); - - reg single_beat_r; - always @(posedge masterhclk_in) - if (addr_ack) - // save single_beat for use after it may masterhave changed - single_beat_r = single_beat; - - wire last_beat = address_bus_owned & masterhready_in & (address_length <= 9'b1); - wire retry = data_bus_owned & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT)); - wire error = data_bus_owned & masterhready_in & (masterhresp_in == `H_ERROR); - -/*---------------------------------------------------------------------------- -Bus request machine masterhas five states: -req_idle: masterhbusreq_out negated. Wmasterhen we want to do something we jump to req_first. -The last beat may get a retry response in which case we jump to -req_again. -req_first: masterhbusreq_out asserted. Wait masterhere for masterhgrant_in and until the transaction -starts. If granted and it's an undefined and not a single beat then -jump to req_masterhold. Else if it's a single beat jump to req_idle. -Otherwise jump to req_using. -req_masterhold: masterhbusreq_out asserted. Hold masterhbusreq_out asserted until last beat of an -undefined. If there's a new request then we jump to req_first, -otherwise back to req_idle. If we lose masterhgrant_in in this state then we -just stay masterhere with masterhbusreq_out asserted until the transaction can be -finished. Also masterhold in this state if retry is asserted to reduce the -chance of releaseing the bus and masterhaving to re-request it to complete -a transaction. -req_using: masterhbusreq_out negated. Wait masterhere for last beat of defined length -transaction. If there's a new request then we jump to req_first, -otherwise back to req_idle. If a posted write is errored before the -last beat or a transaction is retried or we lose masterhgrant_in then we jump -to req_again. -req_again: masterhbusreq_out asserted for completion of transaction interrupted by loss -of masterhgrant_in. Wait masterhere for masterhgrant_in and until the transaction starts then -jump to req_using if first_beat is asserted or req_masterhold if not. -*** We may see a new address toggle whilst in this state. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - req_state <= req_idle; - else - case (req_state) - req_idle: - - if (retry) - req_state <= req_again; - else if (start) - req_state <= req_first; - - else - req_state <= req_idle; - - req_first: - if (retry) - req_state <= req_again; - else if (~masterhgrant_in & ~((masterhtrans_out_r == `H_NONSEQ) & masterhready_in)) - req_state <= req_first; - else if ((masterhtrans_out_r == `H_NONSEQ) & masterhready_in) - begin - if (add_go) - req_state <= req_first; - else if ((burst == `H_INCR) & ~single_beat) - req_state <= req_masterhold; - else if (single_beat) - req_state <= req_idle; - else - req_state <= req_using; - end - else - req_state <= req_wait; - - req_wait: - if (retry) - req_state <= req_again; - else if (~masterhgrant_in & ~((masterhtrans_out_r == `H_NONSEQ) & masterhready_in)) - req_state <= req_first; - else if (masterhgrant_in & ~((masterhtrans_out_r == `H_NONSEQ) & masterhready_in)) - req_state <= req_wait; - else if (add_go) - req_state <= req_first; - else if ((burst == `H_INCR) & ~single_beat) - req_state <= req_masterhold; - else if (single_beat_r) - req_state <= req_idle; - else - req_state <= req_using; - - req_masterhold: - if (error & ~continue_after_error) - req_state <= req_idle; - else if (~masterhgrant_in & (address_length > 9'b1) - | retry) - req_state <= req_again; - else if (last_beat) - begin - if (start) - req_state <= req_first; - else - req_state <= req_idle; - end - else if (add_go) - req_state <= req_first; - else - req_state <= req_masterhold; - - req_using: - if (error & ~continue_after_error) - req_state <= req_idle; - else if (last_beat) - begin - if (start) - req_state <= req_first; - else - req_state <= req_idle; - end - else if (~masterhgrant_in & (address_length > 9'b1) - | retry) - req_state <= req_again; - else - req_state <= req_using; - - req_again: - if (error & ~continue_after_error) - req_state <= req_idle; - else if ((~data_bus_owned - | data_bus_owned & (masterhresp_in == `H_OKAY)) - & address_bus_owned & (masterhtrans_out_r == `H_IDLE) & masterhready_in & ~masterhlock_out) - req_state <= req_idle; - else if (~masterhgrant_in & (address_length > 9'b1) - | ~((masterhtrans_out_r == `H_NONSEQ) & masterhready_in)) - req_state <= req_again; - else if (last_beat | (masterhburst_out_r == `H_SINGLE) - | (masterhburst_out_r == `H_INCR) & single_beat_r) - req_state <= req_idle; - else if (first_beat) - req_state <= req_using; - else - req_state <= req_masterhold; - - default: req_state <= req_idle; - endcase - -/*---------------------------------------------------------------------------- -Address acknowledge - -Signals when an address masterhas been transferred and a new one may be presented -for the next transaction. -----------------------------------------------------------------------------*/ - assign addr_ack = add_go; - -/*---------------------------------------------------------------------------- -Data acknowledge - -Signals when an address masterhas been transferred and a new one may be presented -for the next transaction. -----------------------------------------------------------------------------*/ - assign data_ack = data_go; - -/*---------------------------------------------------------------------------- -Bus ownership - -Data bus ownership follows address by one cycle -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - begin - address_bus_owned <= 1'b0; - data_bus_owned <= 1'b0; - end - else if (masterhready_in) - begin - address_bus_owned <= masterhgrant_in; - data_bus_owned <= address_bus_owned; - end - -/*---------------------------------------------------------------------------- -add_go enables the address phase for a new transaction (not the continuation -of a retried transaction or a transaction during which we lose the bus). - -It asserts immediately on address request if we're not actively using the bus -and not waiting for it to be re-granted to complete a previous transaction, -the (masterhtrans_out_r == `IDLE) term ensuring it only asserts for one clock. -----------------------------------------------------------------------------*/ - always @(start or masterhbusreq_out or masterhgrant_in or masterhready_in or reading - or writing or masterhtrans_out_r or req_state or length or reset) - if (start & masterhbusreq_out & masterhgrant_in & masterhready_in & ~reading & ~writing - & (masterhtrans_out_r == `H_IDLE) & (req_state != req_again) & ~reset) - add_go <= 1'b1; - else if (start & masterhbusreq_out & masterhgrant_in & masterhready_in & (length < 9'h2) & ~retry - & (masterhtrans_out_r != `H_BUSY) & (masterhtrans_out_r != `H_NONSEQ) & ~reset) - add_go <= 1'b1; - else - add_go <= 1'b0; - - -/*---------------------------------------------------------------------------- -data_go indicates the completion of the data phase for a transaction - -Like add_go it asserts when the master takes control of the address lines to -start a transaction. -It also asserts on all the accepted data beats of a burst except the last. -----------------------------------------------------------------------------*/ - wire trans_end = data_bus_owned & (reading | writing) & - masterhready_in & (masterhresp_in == `H_OKAY || masterhresp_in == `H_ERROR); - - always @(start or masterhbusreq_out or masterhgrant_in or masterhready_in or reading - or writing or masterhtrans_out_r or req_state or length or reset - or need_retry or trans_end ) - if (start & masterhbusreq_out & masterhgrant_in & masterhready_in & ~reading & ~writing - & (masterhtrans_out_r == `H_IDLE) & (req_state != req_again) & ~reset & ~need_retry) - data_go <= 1'b1; - else if (start & masterhbusreq_out & masterhgrant_in & masterhready_in & (address_length > 9'h1) & ~retry - & ~reset & (~need_retry|trans_end)) - data_go <= 1'b1; - else - data_go <= 1'b0; - - -/*---------------------------------------------------------------------------- -masterhwrite_out_r - -Updated on any clock that starts a new transaction -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhwrite_out_r <= 1'b0; - else if (addr_ack) - masterhwrite_out_r <= write; - -/*---------------------------------------------------------------------------- -Transaction size - -Updated on any clock that starts a new transaction -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhsize_outl <= 3'b0; - else if (addr_ack) - masterhsize_outl <= size; - -/*---------------------------------------------------------------------------- -Busy counter - -Insert BUSY states into burst transactions. - -Capture control word. Load counter on every active phase and decrement to -zero. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - busy_states <= 1'b0; - else if (addr_ack) - busy_states <= insert_busy; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - busy_counter <= 1'b0; - else if ((masterhtrans_out_r == `H_NONSEQ) | (masterhtrans_out_r == `H_SEQ)) - busy_counter <= busy_states - 1; - else - busy_counter <= busy_counter - (|busy_counter); - -/*---------------------------------------------------------------------------- -first_masterhtrans_out_r is asserted to enable the first beat of a transaction, which is -always NONSEQ: -- The first beat of a new transaction (addr_ack). -- To restart a transaction that was interrupted by loss of masterhgrant_in if we -receive a new masterhgrant_in whilst in req_again or req_masterhold states. -- To restart a transaction after a RETRY response. -- To restart a transaction after a SPLIT response. -pwd -- Break an undefined `INCR replay of a retried or split wrapping burst at -the wrap address boundary. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in) - masterhgrant_in_r <= masterhgrant_in; - - wire masterhgrant_in_leading_edge = masterhgrant_in & ~masterhgrant_in_r; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - new_grant <= 1'b0; - else if (masterhgrant_in_leading_edge & ~first_masterhtrans_out_r) - new_grant <= 1'b1; - else if (first_masterhtrans_out_r | ~masterhgrant_in) - new_grant <= 1'b0; - - assign first_masterhtrans_out_r = addr_ack - | (masterhgrant_in_leading_edge | masterhgrant_in & new_grant) & masterhready_in & ~masterhwrite_out_r - & ((req_state == req_masterhold) | (req_state == req_again)) - | (masterhgrant_in_leading_edge | masterhgrant_in & new_grant) & masterhready_in & masterhwrite_out_r - & ((req_state == req_masterhold) | (req_state == req_again)) - | data_bus_owned & masterhready_in & (masterhresp_in == `H_RETRY) - | data_bus_owned & masterhready_in & (masterhresp_in == `H_SPLIT) - | address_bus_owned & masterhready_in & ~first_beat - & break_wrap & (length > 9'b1); - -/*---------------------------------------------------------------------------- -The only time masterhtrans_out_r changes when masterhready_in is negated is during reset or after -the first cycle of a two-cyle error response. Otherwise, masterhtrans_out_r can only -change when masterhgrant_in and masterhready_in are asserted. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhtrans_out_r <= `H_IDLE; - else if (data_bus_owned & ~masterhready_in & (masterhresp_in != `H_OKAY) - & ~continue_after_error) // ERROR'ed transactions cancelled - masterhtrans_out_r <= `H_IDLE; - else if (data_bus_owned & ~masterhready_in & (masterhresp_in != `H_OKAY) & (masterhresp_in != `H_ERROR) - & continue_after_error) // ERROR'ed transactions not cancelled - masterhtrans_out_r <= `H_IDLE; - else if (masterhgrant_in & masterhready_in) - case (masterhtrans_out_r) - `H_IDLE: - if (first_masterhtrans_out_r) - masterhtrans_out_r <= `H_NONSEQ; - else - masterhtrans_out_r <= `H_IDLE; - `H_NONSEQ,`H_SEQ: - if (first_masterhtrans_out_r) - masterhtrans_out_r <= `H_NONSEQ; - else if ((masterhburst_out_r == `H_SINGLE) | (address_length <= 9'h1)) - // Last beat - masterhtrans_out_r <= `H_IDLE; - else if (go_busy) // (|busy_states) - masterhtrans_out_r <= `H_BUSY; - else - masterhtrans_out_r <= `H_SEQ; - - `H_BUSY: - if (first_masterhtrans_out_r) - masterhtrans_out_r <= `H_NONSEQ; - else if (go_busy) //(|busy_counter) - masterhtrans_out_r <= `H_BUSY; - else - masterhtrans_out_r <= `H_SEQ; - endcase - else if (masterhready_in & ~masterhgrant_in) - masterhtrans_out_r <= `H_IDLE; - -/*---------------------------------------------------------------------------- -One of reading or writing is asserted during any data beat for which we are -actively using the bus. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - begin - reading <= 1'b0; - writing <= 1'b0; - end - else if (masterhready_in) - begin - reading <= ~masterhwrite_out_r & address_bus_owned - & (masterhtrans_out_r != `H_IDLE) & (masterhtrans_out_r != `H_BUSY); - writing <= masterhwrite_out_r & address_bus_owned - & (masterhtrans_out_r != `H_IDLE) & (masterhtrans_out_r != `H_BUSY); - end - -/*---------------------------------------------------------------------------- -Burst size - -first_beat is used to keep masterhburst_out_r unchanged when the first beat is to be -replayed. It alse controls the bus request. A transaction that is split or -retried on any other beat will be replayed as INCR and masterhbusreq_out must be masterheld -asserted. - -Tmasterhis means that a defined length read that us interrupted mid-burst will -complete as an undefined INCR and may pre-fetch past the end of the defined -length (unless, of course, no_prefetch is asserted). -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - first_beat <= 1'b0; - else if (addr_ack) - first_beat <= 1'b1; - else if (data_bus_owned & (reading | writing) & masterhready_in & (masterhresp_in == `H_OKAY)) - first_beat <= 1'b0; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhburst_out_r <= 3'b0; - else if (addr_ack) - masterhburst_out_r <= burst; - else if (first_masterhtrans_out_r & ~first_beat) - masterhburst_out_r <= `H_INCR; - -/*---------------------------------------------------------------------------- -need_retry -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - need_retry <= 1'b0; - else if (data_bus_owned & ~masterhready_in & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT))) - need_retry <= 1'b1; - else if (data_bus_owned & masterhready_in & (reading | writing) - & ((masterhresp_in == `H_OKAY) | (masterhresp_in == `H_ERROR))) - need_retry <= 1'b0; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - wrap <= 1'b0; - else if (addr_ack) - wrap <= (burst == `H_WRAP4) | (burst == `H_WRAP8) - | (burst == `H_WRAP16); - - always @(posedge masterhclk_in or posedge reset) - if (reset) - original_burst <= 3'b0; - else if (addr_ack) - original_burst <= burst; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - replay_wrap <= 3'b0; - else if (addr_ack) - replay_wrap <= 3'b0; - else if (data_bus_owned & ~masterhready_in & wrap & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT))) - replay_wrap <= 3'b1; - -/*---------------------------------------------------------------------------- -Compute wrap mask - -Used to modify next_masterhaddr_out_r during wrapping bursts. First case statement forms -a mask based on the transfer size. Tmasterhis is then shifted left with '1's -inserted to form the final mask. E.g. masterhsize_outl == word (3'b010) wrapped at a -four beat boundary results in wrap_mask set to 10'b0000001111 allowing the -four lsbs of the address to increment and wrap addressing sixteen bytes in -total. -----------------------------------------------------------------------------*/ - always @(masterhsize_outl) - case (masterhsize_outl) - 3'b000: init_wrap_mask <= 10'b0; - 3'b001: init_wrap_mask <= 10'b1; - 3'b010: init_wrap_mask <= 10'b11; - 3'b011: init_wrap_mask <= 10'b111; - 3'b100: init_wrap_mask <= 10'b1111; - 3'b101: init_wrap_mask <= 10'b11111; - 3'b110: init_wrap_mask <= 10'b111111; - 3'b111: init_wrap_mask <= 10'b1111111; - endcase - - always @(original_burst or init_wrap_mask) - case (original_burst) - `H_WRAP4: wrap_mask <= {init_wrap_mask[7:0], 2'b11}; - `H_WRAP8: wrap_mask <= {init_wrap_mask[6:0], 3'b111}; - `H_WRAP16: wrap_mask <= {init_wrap_mask[5:0], 4'b1111}; - default: wrap_mask <= 10'b0; - endcase - - always @(masterhsize_outl) - case (masterhsize_outl) - 3'b000: init_wrap_boundary_bit <= 8'b1; - 3'b001: init_wrap_boundary_bit <= 8'b10; - 3'b010: init_wrap_boundary_bit <= 8'b100; - 3'b011: init_wrap_boundary_bit <= 8'b1000; - 3'b100: init_wrap_boundary_bit <= 8'b10000; - 3'b101: init_wrap_boundary_bit <= 8'b100000; - 3'b110: init_wrap_boundary_bit <= 8'b1000000; - 3'b111: init_wrap_boundary_bit <= 8'b10000000; - endcase - - always @(original_burst or init_wrap_boundary_bit) - case (original_burst) - `H_WRAP4: wrap_boundary_bit <= {init_wrap_boundary_bit, 2'b0}; - `H_WRAP8: wrap_boundary_bit <= {init_wrap_boundary_bit, 3'b0}; - `H_WRAP16:wrap_boundary_bit <= {init_wrap_boundary_bit[6:0], 4'b0}; - default: wrap_boundary_bit <= 11'b0; - endcase - -/*---------------------------------------------------------------------------- -Compute address increment - -Tmasterhis code allows for all possibilities by inferring a 3-to-8 decoder on the -transfer size. AHB spec is unclear masterhow a burst with a transfer size greater -than the bus width should be masterhandled. -----------------------------------------------------------------------------*/ - always @(masterhsize_outl) - begin - masterhaddr_out_r_inc <= 10'b0; - masterhaddr_out_r_inc[masterhsize_outl] <= 1'b1; - end - -/*---------------------------------------------------------------------------- -Compute next address - -Next address is based on the increment computed from the transfer size, and -the burst type, which may tell us to wrap. Wrapping is achieved by preserving -some of the upper bits through use of wrap_mask. - -If beat n is retried, we're already putting out the address for beat n+1 so -we need to decrement. -----------------------------------------------------------------------------*/ - always @(data_bus_owned or masterhresp_in or masterhready_in or masterhaddr_out_r or masterhaddr_out_r_inc) - if (data_bus_owned & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT))) - init_next_masterhaddr_out_r <= {1'b0, masterhaddr_out_r[9:0]} - masterhaddr_out_r_inc; - else - init_next_masterhaddr_out_r <= {1'b0, masterhaddr_out_r[9:0]} + masterhaddr_out_r_inc; - - always @(original_burst or wrap_mask or init_next_masterhaddr_out_r or masterhaddr_out_r) - if ((original_burst == `H_WRAP4) | (original_burst == `H_WRAP8) - | (original_burst == `H_WRAP16)) - next_masterhaddr_out_r <= wrap_mask & init_next_masterhaddr_out_r | ~wrap_mask & masterhaddr_out_r; - else - next_masterhaddr_out_r <= init_next_masterhaddr_out_r; - - assign break_wrap = replay_wrap & ((|(init_next_masterhaddr_out_r & wrap_boundary_bit)) - ^ (|(masterhaddr_out_r[10:0] & wrap_boundary_bit))); - -/*---------------------------------------------------------------------------- -Address Generation - -AHB address has to track the changing address during bursts. next_masterhaddr_out_r -computes the next address. - -NOTE: It is incumbent upon the command file not to attempt a transaction that -would cross a 1Kbyte address boundary. - -Address is normally updated after each address phase. It is also updated -during the second cycle of a two cycle retry or split response to rewind the -address and allow the transaction to be replayed. -----------------------------------------------------------------------------*/ - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhaddr_out_r <= 32'b0; - else if (addr_ack) - masterhaddr_out_r <= start_address; - else if (data_bus_owned & masterhready_in & ((masterhresp_in == `H_RETRY) | (masterhresp_in == `H_SPLIT))) - masterhaddr_out_r[9:0] <= next_masterhaddr_out_r; - else if (address_bus_owned & masterhready_in - & ((masterhtrans_out_r == `H_NONSEQ) | (masterhtrans_out_r == `H_SEQ))) - masterhaddr_out_r[9:0] <= next_masterhaddr_out_r; - -/*---------------------------------------------------------------------------- -Write Data - -If generate_data is negated then initial data is taken from data input. If -generate_data is asserted then data is generated from the address offset to -match that expected by the checkers. - -The expected data and the transaction number follow the write data. - -At the end of a burst data is set to x so we can ensure nothing is relying on -invalid data. -----------------------------------------------------------------------------*/ - - reg [31:0] masterhwdata_out_r_pipe; - reg [31:0] masterhwdata_out_r_retry; - - always @(posedge masterhclk_in) - if (data_bus_owned & ~masterhready_in & (masterhresp_in==`H_RETRY||masterhresp_in==`H_SPLIT)) - begin - masterhwdata_out_r_retry <= masterhwdata_out_r; - end - else if (addr_ack || data_ack) - masterhwdata_out_r_pipe <= data; - - - wire [7:0] addr_offset = {masterhaddr_out_r[7:2], 2'b0}; - - always @(posedge masterhclk_in or posedge reset) - if (reset) - masterhwdata_out_r <= {32{1'b0}}; - else if (~address_bus_owned & masterhready_in) - masterhwdata_out_r <= {32{1'b0}}; - else if (masterhready_in & ~generate_data) - begin - if (address_bus_owned & masterhwrite_out_r & need_retry & ~trans_end) - masterhwdata_out_r <= masterhwdata_out_r_retry; - else if (address_bus_owned & masterhwrite_out_r & (masterhtrans_out_r == `H_NONSEQ)) - masterhwdata_out_r <= masterhwdata_out_r_pipe; - else if ((length == 9'b0)) - masterhwdata_out_r <= {32{1'b0}}; - else if (address_bus_owned & masterhwrite_out_r & (masterhtrans_out_r == `H_SEQ)) - masterhwdata_out_r <= masterhwdata_out_r_pipe; - else - masterhwdata_out_r <= {32{1'b0}}; - end - else if (masterhready_in & generate_data) - begin - if (address_bus_owned & masterhwrite_out_r & (masterhtrans_out_r == `H_NONSEQ)) - masterhwdata_out_r <= {addr_offset, addr_offset, addr_offset, addr_offset}; - else if ((length == 9'b0)) - masterhwdata_out_r <= {32{1'b0}}; - else if (address_bus_owned & masterhwrite_out_r & (masterhtrans_out_r == `H_SEQ)) - masterhwdata_out_r <= {addr_offset, addr_offset, addr_offset, addr_offset}; - end - -/*---------------------------------------------------------------------------- -Transaction Details - -The transactor pipeline consists of four stages - -n_trans - the next transaction from the store -c_trans - the current control / address stage transaction -d_trans - the data stage transaction -rTrans - the completed stage for reporting - - -c_trans is updated from n_trans when a new transaction begins or from d_trans in -the case of split/retry -----------------------------------------------------------------------------*/ - - always @(posedge masterhclk_in) - if (data_bus_owned & ~masterhready_in & (masterhresp_in==`H_RETRY||masterhresp_in==`H_SPLIT)) - begin -// c_trans<=d_trans; // RETRY/SPLIT causes transaction to be replayed - retry_trans<=d_trans; - end - else if (addr_ack || data_ack) - begin - c_trans<=n_trans; - end - - always @(posedge masterhclk_in or posedge reset) - if (address_bus_owned & masterhready_in & ~reset & (~need_retry|trans_end) ) - begin - d_trans <= c_trans; - d_trans[107:76] <= masterhaddr_out_r; - d_trans[72] <= masterhwrite_out_r; - d_trans[36] <= masterhlock_out; - d_trans[29:28] <= masterhtrans_out_r; - d_trans[21:20] <= masterhburst_out_r; - d_trans[18:16] <= masterhsize_out; - end - else if (address_bus_owned & masterhready_in & ~reset & need_retry ) - begin - d_trans <= retry_trans; - d_trans[107:76] <= masterhaddr_out_r; - d_trans[72] <= masterhwrite_out_r; - d_trans[36] <= masterhlock_out; - d_trans[29:28] <= masterhtrans_out_r; - d_trans[21:20] <= masterhburst_out_r; - d_trans[18:16] <= masterhsize_out; - end - else if ( ( ~address_bus_owned & masterhready_in) | reset) - d_trans<= i_trans; - - - always @(posedge masterhclk_in) - if (trans_end & ~need_retry) - begin - r_trans[253:252]<=masterhresp_in; - r_trans[251:220]<=masterhrdata_in; - r_trans[219:0] <=d_trans[219:0]; - end - else if (trans_end & need_retry) - begin - r_trans[253:252]<=masterhresp_in; - r_trans[251:220]<=masterhrdata_in; - r_trans[219:0] <=retry_trans[219:0]; - end - else - r_trans<=i_trans; - - -/*---------------------------------------------------------------------------- -masterhlock_out -----------------------------------------------------------------------------*/ - assign masterhlock_out = 1'b0; -/*---------------------------------------------------------------------------- -----------------------------------------------------------------------------*/ -endmodule // alt_exc_upcore - -//START_MODULE_NAME------------------------------------------------------------ -// -// Module Name : altsquare -// -// Description : Parameterized integer square megafunction. -// The input data can be signed or unsigned, and the output -// can be pipelined. -// -// Limitations : Minimum data width is 1. -// -// Results expected: result - The square of input data. -// -//END_MODULE_NAME-------------------------------------------------------------- - -`timescale 1 ps / 1 ps - -module altsquare ( - data, - clock, - ena, - aclr, - result -); - -// GLOBAL PARAMETER DECLARATION - parameter data_width = 1; - parameter result_width = 1; - parameter pipeline = 0; - parameter representation = "UNSIGNED"; - parameter lpm_hint = "UNUSED"; - parameter lpm_type = "altsquare"; - - // INPUT PORT DECLARATION - input [data_width - 1 : 0] data; - input clock; - input ena; - input aclr; - - // OUTPUT PORT DECLARATION - output [result_width - 1 : 0] result; - - // INTERNAL REGISTER DECLARATION - reg [result_width - 1 : 0]stage_values[pipeline : 0]; - reg [data_width - 1 : 0] pos_data_value; - - // LOCAL INTEGER DECLARATION - integer i; - - // INTERNAL WIRE DECLARATION - wire i_clock; - wire i_aclr; - wire i_clken; -// INTERNAL TRI DECLARATION - tri0 aclr; - tri1 clock; - tri1 clken; - - buf (i_clock, clock); - buf (i_aclr, aclr); - buf (i_clken, ena); - - - // INITIAL CONSTRUCT BLOCK - initial - begin : INITIALIZE - if(data_width < 1) - begin - $display("data_width (%d) must be greater than 0.(ERROR)\n", data_width); - $finish; - end - if(result_width < 1) - begin - $display("result_width (%d) must be greater than 0.(ERROR)\n", result_width); - $finish; - end - end // INITIALIZE - - // ALWAYS CONSTRUCT BLOCK - always @(data or i_aclr) - begin - if (i_aclr) // clear the pipeline - for (i = 0; i <= pipeline; i = i + 1) - stage_values[i] = 'b0; - else - begin - if ((representation == "SIGNED") && (data[data_width - 1] == 1)) - pos_data_value = (~data) + 1; - else - pos_data_value = data; - - stage_values[pipeline] = pos_data_value * pos_data_value; - end - end - - // Pipeline model - always @(posedge i_clock) - begin - if (!i_aclr && i_clken == 1) - begin - for(i = 0; i < pipeline; i = i + 1) - stage_values[i] <= stage_values[i + 1]; - end - end - - // CONTINOUS ASSIGNMENT - assign result = stage_values[0]; -endmodule // altsquare -// END OF MODULE - -module sld_signaltap ( - ir_in, - update, - acq_trigger_out, - acq_data_in, - jtag_state_udr, - shift, - trigger_in, - trigger_out, - jtag_state_cdr, - acq_trigger_in, - usr1, - clrn, - jtag_state_uir, - rti, - jtag_state_e1dr, - ena, - tdi, - crc, - irq, - tdo, - jtag_state_sdr); - - parameter SLD_NODE_CRC_LOWORD = 50132; - parameter SLD_RAM_BLOCK_TYPE = "AUTO"; - parameter SLD_ADVANCED_TRIGGER_ENTITY = "basic"; - parameter SLD_ADVANCED_TRIGGER_1 = "NONE"; - parameter SLD_MEM_ADDRESS_BITS = 7; - parameter SLD_TRIGGER_BITS = 8; - parameter SLD_ADVANCED_TRIGGER_2 = "NONE"; - parameter SLD_TRIGGER_LEVEL = 1; - parameter SLD_ADVANCED_TRIGGER_3 = "NONE"; - parameter SLD_ADVANCED_TRIGGER_4 = "NONE"; - parameter SLD_ADVANCED_TRIGGER_5 = "NONE"; - parameter SLD_ADVANCED_TRIGGER_6 = "NONE"; - parameter SLD_ENABLE_ADVANCED_TRIGGER = 0; - parameter SLD_NODE_CRC_HIWORD = 41394; - parameter SLD_ADVANCED_TRIGGER_7 = "NONE"; - parameter SLD_TRIGGER_LEVEL_PIPELINE = 1; - parameter SLD_ADVANCED_TRIGGER_8 = "NONE"; - parameter SLD_ADVANCED_TRIGGER_9 = "NONE"; - parameter SLD_INCREMENTAL_ROUTING = 0; - parameter SLD_ADVANCED_TRIGGER_10 = "NONE"; - parameter SLD_TRIGGER_IN_ENABLED = 1; - parameter SLD_NODE_CRC_BITS = 32; - parameter SLD_SAMPLE_DEPTH = 128; - parameter SLD_DATA_BIT_CNTR_BITS = 4; - parameter SLD_DATA_BITS = 8; - - parameter ELA_STATUS_BITS = 3; - parameter MAX_NUMBER_OF_BITS_FOR_TRIGGERS = 4; - parameter SLD_IR_BITS = ELA_STATUS_BITS + MAX_NUMBER_OF_BITS_FOR_TRIGGERS; - - input [SLD_IR_BITS-1:0] ir_in; - input update; - output [SLD_TRIGGER_BITS-1:0] acq_trigger_out; - input [SLD_DATA_BITS-1:0] acq_data_in; - input jtag_state_udr; - input shift; - input trigger_in; - output trigger_out; - input jtag_state_cdr; - input [SLD_TRIGGER_BITS-1:0] acq_trigger_in; - input usr1; - input clrn; - input jtag_state_uir; - input rti; - input jtag_state_e1dr; - input ena; - input tdi; - input [SLD_NODE_CRC_BITS-1:0] crc; - output irq; - output tdo; - input jtag_state_sdr; - -endmodule //sld_signaltap - -module altstratixii_oct ( - rup, - terminationclock, - terminationenable, - rdn); - - parameter lpm_type = "altstratixii_oct"; - - - input rup; - input terminationclock; - input terminationenable; - input rdn; - -endmodule //altstratixii_oct - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/host_sim.v b/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/host_sim.v deleted file mode 100644 index 45c25d75..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/bench/verilog/host_sim.v +++ /dev/null @@ -1,77 +0,0 @@ - -module host_sim - (input Reset , - input Clk_reg , - output reg CSB , - output reg WRB , - output reg CPU_init_end , - output reg [15:0] CD_in , - input [15:0] CD_out , - output reg [7:0] CA - ); - - //////////////////////////////////////// - task CPU_init; - begin - CA =0; - CD_in =0; - WRB =1; - CSB =1; - end - endtask - - //////////////////////////////////////// - task CPU_wr; - input[6:0] Addr; - input[15:0] Data; - begin - CA ={Addr,1'b0}; - CD_in =Data; - WRB =0; - CSB =0; - #20; - CA =0; - CD_in =0; - WRB =1; - CSB =1; - #20; - end - endtask - ///////////////////////////////////////// - task CPU_rd; - input[6:0] Addr; - begin - CA ={Addr,1'b0}; - WRB =1; - CSB =0; - #20; - CA =0; - WRB =1; - CSB =1; - #20; - end - endtask - ///////////////////////////////////////// - - integer i; - - reg [31:0] CPU_data [255:0]; - reg [7:0] write_times; - reg [7:0] write_add; - reg [15:0] write_data; - - initial - begin - CPU_init; - CPU_init_end=0; - $readmemh("../data/CPU.vec",CPU_data); - {write_times,write_add,write_data}=CPU_data[0]; - #90 ; - for (i=0;i*x1b3gT!TBo?Gg52?|tMu`=0mi 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
%I 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%0Dp+UglCJ*vP>~(iomKp0}h0Rc%HPP6*1=Aa! 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

  • ^BF^rh8VJh@~bJ;qj6S>rS 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%0A)rUj3=bH!E=w2Gc2~{_5+9gKaVXn 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�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 - Add_wr_gray[i] <=Add_wr[i+1]^Add_wr[i]; - end - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_gray_dl1 <=0; - else - Add_rd_gray_dl1 <=Add_rd_gray; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_ungray =0; - else - begin - Add_rd_ungray[MAC_RX_FF_DEPTH-1] =Add_rd_gray_dl1[MAC_RX_FF_DEPTH-1]; - for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1) - Add_rd_ungray[i] =Add_rd_ungray[i+1]^Add_rd_gray_dl1[i]; - end - assign Add_wr_pluse=Add_wr+1; - assign Add_wr_pluse4=Add_wr+4; - assign Add_wr_pluse3=Add_wr+3; - assign Add_wr_pluse2=Add_wr+2; - - - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Full <=0; - else if (Add_wr_pluse==Add_rd_ungray) - Full <=1; - else - Full <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Almost_full <=0; - else if (Add_wr_pluse4==Add_rd_ungray|| - Add_wr_pluse3==Add_rd_ungray|| - Add_wr_pluse2==Add_rd_ungray|| - Add_wr_pluse==Add_rd_ungray - ) - Almost_full <=1; - else - Almost_full <=0; - - assign Fifo_full =Almost_full; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr <=0; - else if (Current_state==State_err_end) - Add_wr <=Add_wr_reg; - else if (Wr_en&&!Full) - Add_wr <=Add_wr +1; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr_jump_tmp <=0; - else if (Current_state==State_err_end) - Add_wr_jump_tmp <=1; - else - Add_wr_jump_tmp <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr_jump_tmp_pl1 <=0; - else - Add_wr_jump_tmp_pl1 <=Add_wr_jump_tmp; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr_jump <=0; - else if (Current_state==State_err_end) - Add_wr_jump <=1; - else if (Add_wr_jump_tmp_pl1) - Add_wr_jump <=0; - - // - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_en_dl1 <=0; - else - Fifo_data_en_dl1 <=Fifo_data_en; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_dl1 <=0; - else - Fifo_data_dl1 <=Fifo_data; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_byte3 <=0; - else if (Current_state==State_byte3&&Fifo_data_en_dl1) - Fifo_data_byte3 <=Fifo_data_dl1; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_byte2 <=0; - else if (Current_state==State_byte2&&Fifo_data_en_dl1) - Fifo_data_byte2 <=Fifo_data_dl1; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_byte1 <=0; - else if (Current_state==State_byte1&&Fifo_data_en_dl1) - Fifo_data_byte1 <=Fifo_data_dl1; - - always @ (* ) - case (Current_state) - State_be0: - Din_tmp ={4'b1000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1}; - State_be1: - Din_tmp ={4'b1001,Fifo_data_byte3,24'h0}; - State_be2: - Din_tmp ={4'b1010,Fifo_data_byte3,Fifo_data_byte2,16'h0}; - State_be3: - Din_tmp ={4'b1011,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,8'h0}; - default: - Din_tmp ={4'b0000,Fifo_data_byte3,Fifo_data_byte2,Fifo_data_byte1,Fifo_data_dl1}; - endcase - - always @ (*) - if (Current_state==State_be0||Current_state==State_be1|| - Current_state==State_be2||Current_state==State_be3|| - (Current_state==State_byte0&&Fifo_data_en)) - Wr_en_tmp =1; - else - Wr_en_tmp =0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Din_tmp_reg <=0; - else if(Wr_en_tmp) - Din_tmp_reg <=Din_tmp; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Wr_en_ptr <=0; - else if(Current_state==State_idle) - Wr_en_ptr <=0; - else if(Wr_en_tmp) - Wr_en_ptr <=1; - - //if not append FCS,delay one cycle write data and Wr_en signal to drop FCS - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - begin - Wr_en <=0; - Din <=0; - end - else if(RX_APPEND_CRC) - begin - Wr_en <=Wr_en_tmp; - Din <=Din_tmp; - end - else - begin - Wr_en <=Wr_en_tmp&&Wr_en_ptr; - Din <={Din_tmp[35:32],Din_tmp_reg[31:0]}; - end - - //this signal for read side to handle the packet number in fifo - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Packet_number_add_tmp <=0; - else if (Current_state==State_be0||Current_state==State_be1|| - Current_state==State_be2||Current_state==State_be3) - Packet_number_add_tmp <=1; - else - Packet_number_add_tmp <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - begin - Packet_number_add_tmp_dl1 <=0; - Packet_number_add_tmp_dl2 <=0; - end - else - begin - Packet_number_add_tmp_dl1 <=Packet_number_add_tmp; - Packet_number_add_tmp_dl2 <=Packet_number_add_tmp_dl1; - end - - //Packet_number_add delay to Din[35] is needed to make sure the data have been wroten to ram. - //expand to two cycles long almost=16 ns - //if the Clk_SYS period less than 16 ns ,this signal need to expand to 3 or more clock cycles - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Packet_number_add <=0; - else if (Packet_number_add_tmp_dl1||Packet_number_add_tmp_dl2) - Packet_number_add <=1; - else - Packet_number_add <=0; - - // ****************************************************************************** - // domain Clk_SYS,read data from dprom.b-port for read - // ****************************************************************************** - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Current_state_SYS <=SYS_idle; - else - Current_state_SYS <=Next_state_SYS; - - always @ (Current_state_SYS or Rx_mac_rd or Rx_mac_ra or Dout or Empty) - case (Current_state_SYS) - SYS_idle: - if (Rx_mac_rd&&Rx_mac_ra&&!Empty) - Next_state_SYS =SYS_read; - else if(Rx_mac_rd&&Rx_mac_ra&&Empty) - Next_state_SYS =FF_emtpy_err; - else - Next_state_SYS =Current_state_SYS; - SYS_read: - if (!Rx_mac_rd) - Next_state_SYS =SYS_pause; - else if (Dout[35]) - Next_state_SYS =SYS_wait_end; - else if (Empty) - Next_state_SYS =FF_emtpy_err; - else - Next_state_SYS =Current_state_SYS; - SYS_pause: - if (Rx_mac_rd) - Next_state_SYS =SYS_read; - else - Next_state_SYS =Current_state_SYS; - FF_emtpy_err: - if (!Empty) - Next_state_SYS =SYS_read; - else - Next_state_SYS =Current_state_SYS; - SYS_wait_end: - if (!Rx_mac_rd) - Next_state_SYS =SYS_idle; - else - Next_state_SYS =Current_state_SYS; - default: - Next_state_SYS =SYS_idle; - endcase // case(Current_state_SYS) - - //gen Rx_mac_ra - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Packet_number_add_dl1 <=0; - Packet_number_add_dl2 <=0; - end - else - begin - Packet_number_add_dl1 <=Packet_number_add; - Packet_number_add_dl2 <=Packet_number_add_dl1; - end - assign Packet_number_add_edge=Packet_number_add_dl1&!Packet_number_add_dl2; - - always @ (Current_state_SYS or Next_state_SYS) - if (Current_state_SYS==SYS_read&&Next_state_SYS==SYS_wait_end) - Packet_number_sub =1; - else - Packet_number_sub =0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Packet_number_inFF <=0; - else if (Packet_number_add_edge&&!Packet_number_sub) - Packet_number_inFF <=Packet_number_inFF + 1; - else if (!Packet_number_add_edge&&Packet_number_sub&&Packet_number_inFF!=0) - Packet_number_inFF <=Packet_number_inFF - 1; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Fifo_data_count <=0; - else - Fifo_data_count <=Add_wr_ungray[MAC_RX_FF_DEPTH-1:MAC_RX_FF_DEPTH-5]-Add_rd[MAC_RX_FF_DEPTH-1:MAC_RX_FF_DEPTH-5]; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Rx_Hwmark_pl <=0; - Rx_Lwmark_pl <=0; - end - else - begin - Rx_Hwmark_pl <=Rx_Hwmark; - Rx_Lwmark_pl <=Rx_Lwmark; - end - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Rx_mac_ra <=0; - else if (Packet_number_inFF==0&&Fifo_data_count<=Rx_Lwmark_pl) - Rx_mac_ra <=0; - else if (Packet_number_inFF>=1||Fifo_data_count>=Rx_Hwmark_pl) - Rx_mac_ra <=1; - - - //control Add_rd signal; - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_rd <=0; - else if (Current_state_SYS==SYS_read&&!Dout[35]) - Add_rd <=Add_rd + 1; - - // - always @ (posedge Reset or posedge Clk_SYS) - if (Reset) - Add_rd_gray <=0; - else - begin - Add_rd_gray[MAC_RX_FF_DEPTH-1] <=Add_rd[MAC_RX_FF_DEPTH-1]; - for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1) - Add_rd_gray[i] <=Add_rd[i+1]^Add_rd[i]; - end - // - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_wr_gray_dl1 <=0; - else - Add_wr_gray_dl1 <=Add_wr_gray; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_wr_jump_rd_pl1 <=0; - else - Add_wr_jump_rd_pl1 <=Add_wr_jump; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_wr_ungray =0; - else if (!Add_wr_jump_rd_pl1) - begin - Add_wr_ungray[MAC_RX_FF_DEPTH-1] =Add_wr_gray_dl1[MAC_RX_FF_DEPTH-1]; - for (i=MAC_RX_FF_DEPTH-2;i>=0;i=i-1) - Add_wr_ungray[i] =Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; - end - //empty signal gen - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Empty <=1; - else if (Add_rd==Add_wr_ungray) - Empty <=1; - else - Empty <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Dout_dl1 <=0; - else - Dout_dl1 <=Dout; - - assign Rx_mac_data =Dout_dl1[31:0]; - assign Rx_mac_BE =Dout_dl1[33:32]; - assign Rx_mac_eop =Dout_dl1[35]; - - //aligned to Addr_rd - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Rx_mac_pa_tmp <=0; - else if (Current_state_SYS==SYS_read&&!Dout[35]) - Rx_mac_pa_tmp <=1; - else - Rx_mac_pa_tmp <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Rx_mac_pa <=0; - else - Rx_mac_pa <=Rx_mac_pa_tmp; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Rx_mac_sop_tmp <=0; - else if (Current_state_SYS==SYS_idle&&Next_state_SYS==SYS_read) - Rx_mac_sop_tmp <=1; - else - Rx_mac_sop_tmp <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Rx_mac_sop_tmp_dl1 <=0; - Rx_mac_sop <=0; - end - else - begin - Rx_mac_sop_tmp_dl1 <=Rx_mac_sop_tmp; - Rx_mac_sop <=Rx_mac_sop_tmp_dl1; - end - - //****************************************************************************** - - duram #(36,MAC_RX_FF_DEPTH) - U_duram(.data_a (Din ), - .wren_a (Wr_en ), - .address_a (Add_wr ), - .address_b (Add_rd ), - .clock_a (Clk_MAC ), - .clock_b (Clk_SYS ), - .q_b (Dout )); - -endmodule // MAC_rx_FF diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_add_chk.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_add_chk.v deleted file mode 100644 index 1019779e..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_add_chk.v +++ /dev/null @@ -1,156 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_rx_add_chk.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/wr_en/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_rx_add_chk.v,v $ -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:17 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module MAC_rx_add_chk ( -Reset , -Clk , -Init , -data , -MAC_add_en , -MAC_rx_add_chk_err , -//From CPU -MAC_rx_add_chk_en , -MAC_add_prom_data , -MAC_add_prom_add , -MAC_add_prom_wr - -); -input Reset ; -input Clk ; -input Init ; -input [7:0] data ; -input MAC_add_en ; -output MAC_rx_add_chk_err ; - //From CPU -input MAC_rx_add_chk_en ; -input [7:0] MAC_add_prom_data ; -input [2:0] MAC_add_prom_add ; -input MAC_add_prom_wr ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -reg [2:0] addr_rd; -wire[2:0] addr_wr; -wire[7:0] din; -wire[7:0] dout; -wire wr_en; - -reg MAC_rx_add_chk_err; -reg MAC_add_prom_wr_dl1; -reg MAC_add_prom_wr_dl2; -reg [7:0] data_dl1 ; -reg MAC_add_en_dl1 ; -//****************************************************************************** -//write data from cpu to prom -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - data_dl1 <=0; - MAC_add_en_dl1 <=0; - end - else - begin - data_dl1 <=data; - MAC_add_en_dl1 <=MAC_add_en; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - MAC_add_prom_wr_dl1 <=0; - MAC_add_prom_wr_dl2 <=0; - end - else - begin - MAC_add_prom_wr_dl1 <=MAC_add_prom_wr; - MAC_add_prom_wr_dl2 <=MAC_add_prom_wr_dl1; - end - -assign wr_en =MAC_add_prom_wr_dl1&!MAC_add_prom_wr_dl2; -assign addr_wr =MAC_add_prom_add; -assign din =MAC_add_prom_data; - -//****************************************************************************** -//mac add verify -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - addr_rd <=0; - else if (Init) - addr_rd <=0; - else if (MAC_add_en) - addr_rd <=addr_rd + 1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - MAC_rx_add_chk_err <=0; - else if (Init) - MAC_rx_add_chk_err <=0; - else if (MAC_rx_add_chk_en&&MAC_add_en_dl1&&dout!=data_dl1) - MAC_rx_add_chk_err <=1; - - -//****************************************************************************** -//a port for read ,b port for write . -//****************************************************************************** -duram #(8,3,"M512","DUAL_PORT") U_duram( -.data_a (din ), -.wren_a (wr_en ), -.address_a (addr_wr ), -.address_b (addr_rd ), -.clock_a (Clk ), -.clock_b (Clk ), -.q_b (dout )); - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_ctrl.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_ctrl.v deleted file mode 100644 index 24701498..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_rx/MAC_rx_ctrl.v +++ /dev/null @@ -1,536 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_rx_ctrl.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_rx_ctrl.v,v $ -// Revision 1.4 2006/06/25 04:58:56 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.3 2005/12/16 06:44:17 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.2 2005/12/13 12:15:37 Administrator -// no message -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module MAC_rx_ctrl ( -Reset , -Clk , -//RMII interface -MCrs_dv , // -MRxD , // -MRxErr , // -//CRC_chk interface -CRC_en , -CRC_init , -CRC_err , -//MAC_rx_add_chk interface -MAC_add_en , -MAC_rx_add_chk_err , -//broadcast_filter -broadcast_ptr , -broadcast_drop , -//flow_control signals -pause_quanta , -pause_quanta_val , -//MAC_rx_FF interface -Fifo_data , -Fifo_data_en , -Fifo_data_err , -Fifo_data_end , -Fifo_full , -//RMON interface -Rx_pkt_type_rmon , -Rx_pkt_length_rmon , -Rx_apply_rmon , -Rx_pkt_err_type_rmon , -//CPU -RX_IFG_SET , -RX_MAX_LENGTH, -RX_MIN_LENGTH -); - -input Reset ; -input Clk ; - //RMII interface -input MCrs_dv ; -input [7:0] MRxD ; -input MRxErr ; - //CRC_chk interface -output CRC_en ; -output CRC_init; -input CRC_err ; - //MAC_rx_add_chk interface -output MAC_add_en ; -input MAC_rx_add_chk_err ; - //broadcast_filter -output broadcast_ptr ; -input broadcast_drop ; - //flow_control signals -output [15:0] pause_quanta ; -output pause_quanta_val ; - //MAC_rx_FF interface -output [7:0] Fifo_data ; -output Fifo_data_en ; -output Fifo_data_err ; -output Fifo_data_end ; -input Fifo_full; - //RMON interface -output [15:0] Rx_pkt_length_rmon ; -output Rx_apply_rmon ; -output [2:0] Rx_pkt_err_type_rmon ; -output [2:0] Rx_pkt_type_rmon ; - //CPU -input [5:0] RX_IFG_SET ; -input [15:0] RX_MAX_LENGTH ;// 1518 -input [6:0] RX_MIN_LENGTH ;// 64 - -//****************************************************************************** -//internal signals -//****************************************************************************** -parameter State_idle =4'd00; -parameter State_preamble =4'd01; -parameter State_SFD =4'd02; -parameter State_data =4'd03; -parameter State_checkCRC =4'd04; -parameter State_OkEnd =4'd07; -parameter State_drop =4'd08; -parameter State_ErrEnd =4'd09; -parameter State_CRCErrEnd =4'd10; -parameter State_FFFullDrop =4'd11; -parameter State_FFFullErrEnd =4'd12; -parameter State_IFG =4'd13; - -parameter Pause_idle =4'd0; -parameter Pause_pre_syn =4'd1; -parameter Pause_quanta_hi =4'd2; -parameter Pause_quanta_lo =4'd3; -parameter Pause_syn =4'd4; - -reg [3:0] Current_state /* synthesis syn_keep=1 */; -reg [3:0] Next_state; -reg [3:0] Pause_current /* synthesis syn_keep=1 */; -reg [3:0] Pause_next; -reg [5:0] IFG_counter; -reg Crs_dv ; -reg [7:0] RxD ; -reg [7:0] RxD_dl1 ; -reg RxErr ; -reg [15:0] Frame_length_counter; -reg Too_long; -reg Too_short; -reg Fifo_data_en; -reg Fifo_data_end; -reg Fifo_data_err; -reg CRC_en; -reg CRC_init; -reg Rx_apply_rmon; -reg Rx_apply_rmon_tmp; -reg Rx_apply_rmon_tmp_pl1; -reg [2:0] Rx_pkt_err_type_rmon; -reg MAC_add_en; -reg [2:0] Rx_pkt_type_rmon; -reg [7:0] pause_quanta_h ; -reg [15:0] pause_quanta ; -reg pause_quanta_val ; -reg pause_quanta_val_tmp; -reg pause_frame_ptr ; -reg broadcast_ptr ; -//****************************************************************************** -//delay signals -//****************************************************************************** - -always @ (posedge Reset or posedge Clk) - if (Reset) - begin - Crs_dv <=0; - RxD <=0; - RxErr <=0; - end - else - begin - Crs_dv <=MCrs_dv ; - RxD <=MRxD ; - RxErr <=MRxErr ; - end - -always @ (posedge Reset or posedge Clk) - if (Reset) - RxD_dl1 <=0; - else - RxD_dl1 <=RxD; - -//****************************************************************************** -//State_machine -//****************************************************************************** - -always @ (posedge Reset or posedge Clk) - if (Reset) - Current_state <=State_idle; - else - Current_state <=Next_state; - -always @ (*) - case (Current_state) - State_idle: - if (Crs_dv&&RxD==8'h55) - Next_state =State_preamble; - else - Next_state =Current_state; - State_preamble: - if (!Crs_dv) - Next_state =State_ErrEnd; - else if (RxErr) - Next_state =State_drop; - else if (RxD==8'hd5) - Next_state =State_SFD; - else if (RxD==8'h55) - Next_state =Current_state; - else - Next_state =State_drop; - State_SFD: - if (!Crs_dv) - Next_state =State_ErrEnd; - else if (RxErr) - Next_state =State_drop; - else - Next_state =State_data; - State_data: - if (!Crs_dv&&!Too_short&&!Too_long) - Next_state =State_checkCRC; - else if (!Crs_dv&&(Too_short||Too_long)) - Next_state =State_ErrEnd; - else if (Fifo_full) - Next_state =State_FFFullErrEnd; - else if (RxErr||MAC_rx_add_chk_err||Too_long||broadcast_drop) - Next_state =State_drop; - else - Next_state =State_data; - State_checkCRC: - if (CRC_err) - Next_state =State_CRCErrEnd; - else - Next_state =State_OkEnd; - State_drop: - if (!Crs_dv) - Next_state =State_ErrEnd; - else - Next_state =Current_state; - State_OkEnd: - Next_state =State_IFG; - State_ErrEnd: - Next_state =State_IFG; - - State_CRCErrEnd: - Next_state =State_IFG; - State_FFFullDrop: - if (!Crs_dv) - Next_state =State_IFG; - else - Next_state =Current_state; - State_FFFullErrEnd: - Next_state =State_FFFullDrop; - State_IFG: - if (IFG_counter==RX_IFG_SET-4) //remove some additional time - Next_state =State_idle; - else - Next_state =Current_state; - - default: - Next_state =State_idle; - endcase - - -always @ (posedge Reset or posedge Clk) - if (Reset) - IFG_counter <=0; - else if (Current_state!=State_IFG) - IFG_counter <=0; - else - IFG_counter <=IFG_counter + 1; -//****************************************************************************** -//gen fifo interface signals -//****************************************************************************** - -assign Fifo_data =RxD_dl1; - -always @(Current_state) - if (Current_state==State_data) - Fifo_data_en =1; - else - Fifo_data_en =0; - -always @(Current_state) - if (Current_state==State_ErrEnd||Current_state==State_OkEnd - ||Current_state==State_CRCErrEnd||Current_state==State_FFFullErrEnd) - Fifo_data_end =1; - else - Fifo_data_end =0; - -always @(Current_state) - if (Current_state==State_ErrEnd||Current_state==State_CRCErrEnd||Current_state==State_FFFullErrEnd) - Fifo_data_err =1; - else - Fifo_data_err =0; - -//****************************************************************************** -//CRC_chk interface -//****************************************************************************** - -always @(Current_state) - if (Current_state==State_data) - CRC_en =1; - else - CRC_en =0; - -always @(Current_state) - if (Current_state==State_SFD) - CRC_init =1; - else - CRC_init =0; - -//****************************************************************************** -//gen rmon signals -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - Frame_length_counter <=0; - else if (Current_state==State_SFD) - Frame_length_counter <=1; - else if (Current_state==State_data) - Frame_length_counter <=Frame_length_counter+ 1'b1; - -always @ (Frame_length_counter or RX_MIN_LENGTH) - if (Frame_length_counterRX_MAX_LENGTH) - Too_long =1; - else - Too_long =0; - -assign Rx_pkt_length_rmon=Frame_length_counter-1'b1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Rx_apply_rmon_tmp <=0; - else if (Current_state==State_OkEnd||Current_state==State_ErrEnd - ||Current_state==State_CRCErrEnd||Current_state==State_FFFullErrEnd) - Rx_apply_rmon_tmp <=1; - else - Rx_apply_rmon_tmp <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Rx_apply_rmon_tmp_pl1 <=0; - else - Rx_apply_rmon_tmp_pl1 <=Rx_apply_rmon_tmp; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Rx_apply_rmon <=0; - else if (Current_state==State_OkEnd||Current_state==State_ErrEnd - ||Current_state==State_CRCErrEnd||Current_state==State_FFFullErrEnd) - Rx_apply_rmon <=1; - else if (Rx_apply_rmon_tmp_pl1) - Rx_apply_rmon <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Rx_pkt_err_type_rmon <=0; - else if (Current_state==State_CRCErrEnd) - Rx_pkt_err_type_rmon <=3'b001 ;// - else if (Current_state==State_FFFullErrEnd) - Rx_pkt_err_type_rmon <=3'b010 ;// - else if (Current_state==State_ErrEnd) - Rx_pkt_err_type_rmon <=3'b011 ;// - else if(Current_state==State_OkEnd) - Rx_pkt_err_type_rmon <=3'b100 ; - - - -always @ (posedge Clk or posedge Reset) - if (Reset) - Rx_pkt_type_rmon <=0; - else if (Current_state==State_OkEnd&&pause_frame_ptr) - Rx_pkt_type_rmon <=3'b100 ;// - else if(Current_state==State_SFD&&Next_state==State_data) - Rx_pkt_type_rmon <={1'b0,MRxD[7:6]}; - -always @ (posedge Clk or posedge Reset) - if (Reset) - broadcast_ptr <=0; - else if(Current_state==State_IFG) - broadcast_ptr <=0; - else if(Current_state==State_SFD&&Next_state==State_data&&MRxD[7:6]==2'b11) - broadcast_ptr <=1; - - - -//****************************************************************************** -//MAC add checker signals -//****************************************************************************** -always @ (Frame_length_counter or Fifo_data_en) - if(Frame_length_counter>=1&&Frame_length_counter<=6) - MAC_add_en <=Fifo_data_en; - else - MAC_add_en <=0; - -//****************************************************************************** -//flow control signals -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - Pause_current <=Pause_idle; - else - Pause_current <=Pause_next; - -always @ (*) - case (Pause_current) - Pause_idle : - if(Current_state==State_SFD) - Pause_next =Pause_pre_syn; - else - Pause_next =Pause_current; - Pause_pre_syn: - case (Frame_length_counter) - 16'd1: if (RxD_dl1==8'h01) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd2: if (RxD_dl1==8'h80) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd3: if (RxD_dl1==8'hc2) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd4: if (RxD_dl1==8'h00) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd5: if (RxD_dl1==8'h00) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd6: if (RxD_dl1==8'h01) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd13: if (RxD_dl1==8'h88) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd14: if (RxD_dl1==8'h08) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd15: if (RxD_dl1==8'h00) - Pause_next =Pause_current; - else - Pause_next =Pause_idle; - 16'd16: if (RxD_dl1==8'h01) - Pause_next =Pause_quanta_hi; - else - Pause_next =Pause_idle; - default: Pause_next =Pause_current; - endcase - Pause_quanta_hi : - Pause_next =Pause_quanta_lo; - Pause_quanta_lo : - Pause_next =Pause_syn; - Pause_syn : - if (Current_state==State_IFG) - Pause_next =Pause_idle; - else - Pause_next =Pause_current; - default - Pause_next =Pause_idle; - endcase - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta_h <=0; - else if(Pause_current==Pause_quanta_hi) - pause_quanta_h <=RxD_dl1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta <=0; - else if(Pause_current==Pause_quanta_lo) - pause_quanta <={pause_quanta_h,RxD_dl1}; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta_val_tmp <=0; - else if(Current_state==State_OkEnd&&Pause_current==Pause_syn) - pause_quanta_val_tmp <=1; - else - pause_quanta_val_tmp <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta_val <=0; - else if(Current_state==State_OkEnd&&Pause_current==Pause_syn||pause_quanta_val_tmp) - pause_quanta_val <=1; - else - pause_quanta_val <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_frame_ptr <=0; - else if(Pause_current==Pause_syn) - pause_frame_ptr <=1; - else - pause_frame_ptr <=0; - -endmodule - - \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v deleted file mode 100644 index c1b21154..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_top.v +++ /dev/null @@ -1,430 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_top.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_top.v,v $ -// Revision 1.3 2006/01/19 14:07:52 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:13 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - -module MAC_top( - //system signals -input Reset , -input Clk_125M , -input Clk_user , -input Clk_reg , -output [2:0] Speed , - //user interface -output Rx_mac_ra , -input Rx_mac_rd , -output [31:0] Rx_mac_data , -output [1:0] Rx_mac_BE , -output Rx_mac_pa , -output Rx_mac_sop , -output Rx_mac_eop , - //user interface -output Tx_mac_wa , -input Tx_mac_wr , -input [31:0] Tx_mac_data , -input [1:0] Tx_mac_BE ,//big endian -input Tx_mac_sop , -input Tx_mac_eop , - //Phy interface - //Phy interface -output Gtx_clk ,//used only in GMII mode -input Rx_clk , -input Tx_clk ,//used only in MII mode -output Tx_er , -output Tx_en , -output [7:0] Txd , -input Rx_er , -input Rx_dv , -input [7:0] Rxd , -input Crs , -input Col , - //host interface -input CSB , -input WRB , -input [15:0] CD_in , -output [15:0] CD_out , -input [7:0] CA , - //mdx -inout Mdio ,// MII Management Data In -output Mdc // MII Management Data Clock - -); -//****************************************************************************** -//internal signals -//****************************************************************************** - //RMON interface -wire [15:0] Rx_pkt_length_rmon ; -wire Rx_apply_rmon ; -wire [2:0] Rx_pkt_err_type_rmon ; -wire [2:0] Rx_pkt_type_rmon ; -wire [2:0] Tx_pkt_type_rmon ; -wire [15:0] Tx_pkt_length_rmon ; -wire Tx_apply_rmon ; -wire [2:0] Tx_pkt_err_type_rmon ; - //PHY interface -wire MCrs_dv ; -wire [7:0] MRxD ; -wire MRxErr ; - //flow_control signals -wire [15:0] pause_quanta ; -wire pause_quanta_val ; - //PHY interface -wire [7:0] MTxD ; -wire MTxEn ; -wire MCRS ; - //interface clk signals -wire MAC_tx_clk ; -wire MAC_rx_clk ; -wire MAC_tx_clk_div ; -wire MAC_rx_clk_div ; - //reg signals -wire [4:0] Tx_Hwmark ; -wire [4:0] Tx_Lwmark ; -wire pause_frame_send_en ; -wire [15:0] pause_quanta_set ; -wire MAC_tx_add_en ; -wire FullDuplex ; -wire [3:0] MaxRetry ; -wire [5:0] IFGset ; -wire [7:0] MAC_tx_add_prom_data ; -wire [2:0] MAC_tx_add_prom_add ; -wire MAC_tx_add_prom_wr ; -wire tx_pause_en ; -wire xoff_cpu ; -wire xon_cpu ; - //Rx host interface -wire MAC_rx_add_chk_en ; -wire [7:0] MAC_rx_add_prom_data ; -wire [2:0] MAC_rx_add_prom_add ; -wire MAC_rx_add_prom_wr ; -wire broadcast_filter_en ; -wire [15:0] broadcast_MAX ; -wire RX_APPEND_CRC ; -wire [4:0] Rx_Hwmark ; -wire [4:0] Rx_Lwmark ; -wire CRC_chk_en ; -wire [5:0] RX_IFG_SET ; -wire [15:0] RX_MAX_LENGTH ; -wire [6:0] RX_MIN_LENGTH ; - //RMON host interface -wire [5:0] CPU_rd_addr ; -wire CPU_rd_apply ; -wire CPU_rd_grant ; -wire [31:0] CPU_rd_dout ; - //Phy int host interface -wire Line_loop_en ; - //MII to CPU -wire [7:0] Divider ; -wire [15:0] CtrlData ; -wire [4:0] Rgad ; -wire [4:0] Fiad ; -wire NoPre ; -wire WCtrlData ; -wire RStat ; -wire ScanStat ; -wire Busy ; -wire LinkFail ; -wire Nvalid ; -wire [15:0] Prsd ; -wire WCtrlDataStart ; -wire RStatStart ; -wire UpdateMIIRX_DATAReg ; -wire [15:0] broadcast_bucket_depth ; -wire [15:0] broadcast_bucket_interval ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -MAC_rx U_MAC_rx( -.Reset (Reset ), -.Clk_user (Clk_user ), -.Clk (MAC_rx_clk_div ), - //RMII interface (//PHY interface ), -.MCrs_dv (MCrs_dv ), -.MRxD (MRxD ), -.MRxErr (MRxErr ), - //flow_control signals (//flow_control signals ), -.pause_quanta (pause_quanta ), -.pause_quanta_val (pause_quanta_val ), - //user interface (//user interface ), -.Rx_mac_ra (Rx_mac_ra ), -.Rx_mac_rd (Rx_mac_rd ), -.Rx_mac_data (Rx_mac_data ), -.Rx_mac_BE (Rx_mac_BE ), -.Rx_mac_pa (Rx_mac_pa ), -.Rx_mac_sop (Rx_mac_sop ), -.Rx_mac_eop (Rx_mac_eop ), - //CPU (//CPU ), -.MAC_rx_add_chk_en (MAC_rx_add_chk_en ), -.MAC_add_prom_data (MAC_rx_add_prom_data ), -.MAC_add_prom_add (MAC_rx_add_prom_add ), -.MAC_add_prom_wr (MAC_rx_add_prom_wr ), -.broadcast_filter_en (broadcast_filter_en ), -.broadcast_bucket_depth (broadcast_bucket_depth ), -.broadcast_bucket_interval (broadcast_bucket_interval ), -.RX_APPEND_CRC (RX_APPEND_CRC ), -.Rx_Hwmark (Rx_Hwmark ), -.Rx_Lwmark (Rx_Lwmark ), -.CRC_chk_en (CRC_chk_en ), -.RX_IFG_SET (RX_IFG_SET ), -.RX_MAX_LENGTH (RX_MAX_LENGTH ), -.RX_MIN_LENGTH (RX_MIN_LENGTH ), - //RMON interface (//RMON interface ), -.Rx_pkt_length_rmon (Rx_pkt_length_rmon ), -.Rx_apply_rmon (Rx_apply_rmon ), -.Rx_pkt_err_type_rmon (Rx_pkt_err_type_rmon ), -.Rx_pkt_type_rmon (Rx_pkt_type_rmon ) -); - -MAC_tx U_MAC_tx( -.Reset (Reset ), -.Clk (MAC_tx_clk_div ), -.Clk_user (Clk_user ), - //PHY interface (//PHY interface ), -.TxD (MTxD ), -.TxEn (MTxEn ), -.CRS (MCRS ), - //RMON (//RMON ), -.Tx_pkt_type_rmon (Tx_pkt_type_rmon ), -.Tx_pkt_length_rmon (Tx_pkt_length_rmon ), -.Tx_apply_rmon (Tx_apply_rmon ), -.Tx_pkt_err_type_rmon (Tx_pkt_err_type_rmon ), - //user interface (//user interface ), -.Tx_mac_wa (Tx_mac_wa ), -.Tx_mac_wr (Tx_mac_wr ), -.Tx_mac_data (Tx_mac_data ), -.Tx_mac_BE (Tx_mac_BE ), -.Tx_mac_sop (Tx_mac_sop ), -.Tx_mac_eop (Tx_mac_eop ), - //host interface (//host interface ), -.Tx_Hwmark (Tx_Hwmark ), -.Tx_Lwmark (Tx_Lwmark ), -.pause_frame_send_en (pause_frame_send_en ), -.pause_quanta_set (pause_quanta_set ), -.MAC_tx_add_en (MAC_tx_add_en ), -.FullDuplex (FullDuplex ), -.MaxRetry (MaxRetry ), -.IFGset (IFGset ), -.MAC_add_prom_data (MAC_tx_add_prom_data ), -.MAC_add_prom_add (MAC_tx_add_prom_add ), -.MAC_add_prom_wr (MAC_tx_add_prom_wr ), -.tx_pause_en (tx_pause_en ), -.xoff_cpu (xoff_cpu ), -.xon_cpu (xon_cpu ), - //MAC_rx_flow (//MAC_rx_flow ), -.pause_quanta (pause_quanta ), -.pause_quanta_val (pause_quanta_val ) -); - -RMON U_RMON( -.Clk (Clk_reg ), -.Reset (Reset ), - //Tx_RMON (//Tx_RMON ), -.Tx_pkt_type_rmon (Tx_pkt_type_rmon ), -.Tx_pkt_length_rmon (Tx_pkt_length_rmon ), -.Tx_apply_rmon (Tx_apply_rmon ), -.Tx_pkt_err_type_rmon (Tx_pkt_err_type_rmon ), - //Tx_RMON (//Tx_RMON ), -.Rx_pkt_type_rmon (Rx_pkt_type_rmon ), -.Rx_pkt_length_rmon (Rx_pkt_length_rmon ), -.Rx_apply_rmon (Rx_apply_rmon ), -.Rx_pkt_err_type_rmon (Rx_pkt_err_type_rmon ), - //CPU (//CPU ), -.CPU_rd_addr (CPU_rd_addr ), -.CPU_rd_apply (CPU_rd_apply ), -.CPU_rd_grant (CPU_rd_grant ), -.CPU_rd_dout (CPU_rd_dout ) -); - -Phy_int U_Phy_int( -.Reset (Reset ), -.MAC_rx_clk (MAC_rx_clk ), -.MAC_tx_clk (MAC_tx_clk ), - //Rx interface (//Rx interface ), -.MCrs_dv (MCrs_dv ), -.MRxD (MRxD ), -.MRxErr (MRxErr ), - //Tx interface (//Tx interface ), -.MTxD (MTxD ), -.MTxEn (MTxEn ), -.MCRS (MCRS ), - //Phy interface (//Phy interface ), -.Tx_er (Tx_er ), -.Tx_en (Tx_en ), -.Txd (Txd ), -.Rx_er (Rx_er ), -.Rx_dv (Rx_dv ), -.Rxd (Rxd ), -.Crs (Crs ), -.Col (Col ), - //host interface (//host interface ), -.Line_loop_en (Line_loop_en ), -.Speed (Speed ) -); - -Clk_ctrl U_Clk_ctrl( -.Reset (Reset ), -.Clk_125M (Clk_125M ), - //host interface (//host interface ), -.Speed (Speed ), - //Phy interface (//Phy interface ), -.Gtx_clk (Gtx_clk ), -.Rx_clk (Rx_clk ), -.Tx_clk (Tx_clk ), - //interface clk (//interface clk ), -.MAC_tx_clk (MAC_tx_clk ), -.MAC_rx_clk (MAC_rx_clk ), -.MAC_tx_clk_div (MAC_tx_clk_div ), -.MAC_rx_clk_div (MAC_rx_clk_div ) -); - -eth_miim U_eth_miim( -.Clk (Clk_reg ), -.Reset (Reset ), -.Divider (Divider ), -.NoPre (NoPre ), -.CtrlData (CtrlData ), -.Rgad (Rgad ), -.Fiad (Fiad ), -.WCtrlData (WCtrlData ), -.RStat (RStat ), -.ScanStat (ScanStat ), -.Mdio (Mdio ), -.Mdc (Mdc ), -.Busy (Busy ), -.Prsd (Prsd ), -.LinkFail (LinkFail ), -.Nvalid (Nvalid ), -.WCtrlDataStart (WCtrlDataStart ), -.RStatStart (RStatStart ), -.UpdateMIIRX_DATAReg (UpdateMIIRX_DATAReg )); - -reg_int U_reg_int( -.Reset (Reset ), -.Clk_reg (Clk_reg ), -.CSB (CSB ), -.WRB (WRB ), -.CD_in (CD_in ), -.CD_out (CD_out ), -.CA (CA ), - //Tx host interface (//Tx host interface ), -.Tx_Hwmark (Tx_Hwmark ), -.Tx_Lwmark (Tx_Lwmark ), -.pause_frame_send_en (pause_frame_send_en ), -.pause_quanta_set (pause_quanta_set ), -.MAC_tx_add_en (MAC_tx_add_en ), -.FullDuplex (FullDuplex ), -.MaxRetry (MaxRetry ), -.IFGset (IFGset ), -.MAC_tx_add_prom_data (MAC_tx_add_prom_data ), -.MAC_tx_add_prom_add (MAC_tx_add_prom_add ), -.MAC_tx_add_prom_wr (MAC_tx_add_prom_wr ), -.tx_pause_en (tx_pause_en ), -.xoff_cpu (xoff_cpu ), -.xon_cpu (xon_cpu ), - //Rx host interface (//Rx host interface ), -.MAC_rx_add_chk_en (MAC_rx_add_chk_en ), -.MAC_rx_add_prom_data (MAC_rx_add_prom_data ), -.MAC_rx_add_prom_add (MAC_rx_add_prom_add ), -.MAC_rx_add_prom_wr (MAC_rx_add_prom_wr ), -.broadcast_filter_en (broadcast_filter_en ), -.broadcast_bucket_depth (broadcast_bucket_depth ), -.broadcast_bucket_interval (broadcast_bucket_interval ), -.RX_APPEND_CRC (RX_APPEND_CRC ), -.Rx_Hwmark (Rx_Hwmark ), -.Rx_Lwmark (Rx_Lwmark ), -.CRC_chk_en (CRC_chk_en ), -.RX_IFG_SET (RX_IFG_SET ), -.RX_MAX_LENGTH (RX_MAX_LENGTH ), -.RX_MIN_LENGTH (RX_MIN_LENGTH ), - //RMON host interface (//RMON host interface ), -.CPU_rd_addr (CPU_rd_addr ), -.CPU_rd_apply (CPU_rd_apply ), -.CPU_rd_grant (CPU_rd_grant ), -.CPU_rd_dout (CPU_rd_dout ), - //Phy int host interface (//Phy int host interface ), -.Line_loop_en (Line_loop_en ), -.Speed (Speed ), - //MII to CPU (//MII to CPU ), -.Divider (Divider ), -.CtrlData (CtrlData ), -.Rgad (Rgad ), -.Fiad (Fiad ), -.NoPre (NoPre ), -.WCtrlData (WCtrlData ), -.RStat (RStat ), -.ScanStat (ScanStat ), -.Busy (Busy ), -.LinkFail (LinkFail ), -.Nvalid (Nvalid ), -.Prsd (Prsd ), -.WCtrlDataStart (WCtrlDataStart ), -.RStatStart (RStatStart ), -.UpdateMIIRX_DATAReg (UpdateMIIRX_DATAReg ) -); - -endmodule - - - - - - - - - - - - - - - - - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v deleted file mode 100644 index f5e605bc..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx.v +++ /dev/null @@ -1,266 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_tx.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_tx.v,v $ -// Revision 1.4 2006/11/17 17:53:07 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:53 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:14 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// -module MAC_tx( -input Reset , -input Clk , -input Clk_user , - //PHY interface -output [7:0] TxD , -output TxEn , -input CRS , - //RMON -output [2:0] Tx_pkt_type_rmon , -output [15:0] Tx_pkt_length_rmon , -output Tx_apply_rmon , -output [2:0] Tx_pkt_err_type_rmon, - //user interface -output Tx_mac_wa , -input Tx_mac_wr , -input [31:0] Tx_mac_data , -input [1:0] Tx_mac_BE ,//big endian -input Tx_mac_sop , -input Tx_mac_eop , - //host interface -input [4:0] Tx_Hwmark , -input [4:0] Tx_Lwmark , -input pause_frame_send_en , -input [15:0] pause_quanta_set , -input MAC_tx_add_en , -input FullDuplex , -input [3:0] MaxRetry , -input [5:0] IFGset , -input [7:0] MAC_add_prom_data , -input [2:0] MAC_add_prom_add , -input MAC_add_prom_wr , -input tx_pause_en , -input xoff_cpu , -input xon_cpu , - //MAC_rx_flow , -input [15:0] pause_quanta , -input pause_quanta_val -); -//****************************************************************************** -//internal signals -//****************************************************************************** - //CRC_gen Interface -wire CRC_init ; -wire[7:0] Frame_data ; -wire Data_en ; -wire CRC_rd ; -wire CRC_end ; -wire[7:0] CRC_out ; - //Ramdon_gen interface -wire Random_init ; -wire[3:0] RetryCnt ; -wire Random_time_meet ;//levle hight indicate random time passed away - //flow control -wire pause_apply ; -wire pause_quanta_sub ; -wire xoff_gen ; -wire xoff_gen_complete ; -wire xon_gen ; -wire xon_gen_complete ; - //MAC_rx_FF -wire[7:0] Fifo_data ; -wire Fifo_rd ; -wire Fifo_eop ; -wire Fifo_da ; -wire Fifo_rd_finish ; -wire Fifo_rd_retry ; -wire Fifo_ra ; -wire Fifo_data_err_empty ; -wire Fifo_data_err_full ; - //MAC_tx_addr_add -wire MAC_tx_addr_init ; -wire MAC_tx_addr_rd ; -wire[7:0] MAC_tx_addr_data ; - -//****************************************************************************** -//instantiation -//****************************************************************************** -MAC_tx_ctrl U_MAC_tx_ctrl( -.Reset (Reset ), -.Clk (Clk ), - //CRC_gen Interface (//CRC_gen Interface ), -.CRC_init (CRC_init ), -.Frame_data (Frame_data ), -.Data_en (Data_en ), -.CRC_rd (CRC_rd ), -.CRC_end (CRC_end ), -.CRC_out (CRC_out ), - //Random_gen interfac (//Random_gen interfac ), -.Random_init (Random_init ), -.RetryCnt (RetryCnt ), -.Random_time_meet (Random_time_meet ), - //flow control (//flow control ), -.pause_apply (pause_apply ), -.pause_quanta_sub (pause_quanta_sub ), -.xoff_gen (xoff_gen ), -.xoff_gen_complete (xoff_gen_complete ), -.xon_gen (xon_gen ), -.xon_gen_complete (xon_gen_complete ), - //MAC_tx_FF (//MAC_tx_FF ), -.Fifo_data (Fifo_data ), -.Fifo_rd (Fifo_rd ), -.Fifo_eop (Fifo_eop ), -.Fifo_da (Fifo_da ), -.Fifo_rd_finish (Fifo_rd_finish ), -.Fifo_rd_retry (Fifo_rd_retry ), -.Fifo_ra (Fifo_ra ), -.Fifo_data_err_empty (Fifo_data_err_empty ), -.Fifo_data_err_full (Fifo_data_err_full ), - //RMII (//RMII ), -.TxD (TxD ), -.TxEn (TxEn ), -.CRS (CRS ), - //MAC_tx_addr_add (//MAC_tx_addr_add ), -.MAC_tx_addr_rd (MAC_tx_addr_rd ), -.MAC_tx_addr_data (MAC_tx_addr_data ), -.MAC_tx_addr_init (MAC_tx_addr_init ), - //RMON (//RMON ), -.Tx_pkt_type_rmon (Tx_pkt_type_rmon ), -.Tx_pkt_length_rmon (Tx_pkt_length_rmon ), -.Tx_apply_rmon (Tx_apply_rmon ), -.Tx_pkt_err_type_rmon (Tx_pkt_err_type_rmon ), - //CPU (//CPU ), -.pause_frame_send_en (pause_frame_send_en ), -.pause_quanta_set (pause_quanta_set ), -.MAC_tx_add_en (MAC_tx_add_en ), -.FullDuplex (FullDuplex ), -.MaxRetry (MaxRetry ), -.IFGset (IFGset ) -); - -CRC_gen U_CRC_gen( -.Reset (Reset ), -.Clk (Clk ), -.Init (CRC_init ), -.Frame_data (Frame_data ), -.Data_en (Data_en ), -.CRC_rd (CRC_rd ), -.CRC_out (CRC_out ), -.CRC_end (CRC_end ) -); - -flow_ctrl U_flow_ctrl( -.Reset (Reset ), -.Clk (Clk ), - //host processor (//host processor ), -.tx_pause_en (tx_pause_en ), -.xoff_cpu (xoff_cpu ), -.xon_cpu (xon_cpu ), - //MAC_rx_flow (//MAC_rx_flow ), -.pause_quanta (pause_quanta ), -.pause_quanta_val (pause_quanta_val ), - //MAC_tx_ctrl (//MAC_tx_ctrl ), -.pause_apply (pause_apply ), -.pause_quanta_sub (pause_quanta_sub ), -.xoff_gen (xoff_gen ), -.xoff_gen_complete (xoff_gen_complete ), -.xon_gen (xon_gen ), -.xon_gen_complete (xon_gen_complete ) -); - -`ifdef MAC_SOURCE_REPLACE_EN -MAC_tx_addr_add U_MAC_tx_addr_add( -.Reset (Reset ), -.Clk (Clk ), -.MAC_tx_addr_rd (MAC_tx_addr_rd ), -.MAC_tx_addr_init (MAC_tx_addr_init ), -.MAC_tx_addr_data (MAC_tx_addr_data ), - //CPU (//CPU ), -.MAC_add_prom_data (MAC_add_prom_data ), -.MAC_add_prom_add (MAC_add_prom_add ), -.MAC_add_prom_wr (MAC_add_prom_wr ) -); -`else -assign MAC_tx_addr_data=0; -`endif -MAC_tx_FF #(.MAC_TX_FF_DEPTH(9)) - U_MAC_tx_FF(.Reset (Reset ), - .Clk_MAC (Clk ), - .Clk_SYS (Clk_user ), - //MAC_rx_ctrl interf (//MAC_rx_ctrl interf ), - .Fifo_data (Fifo_data ), - .Fifo_rd (Fifo_rd ), - .Fifo_rd_finish (Fifo_rd_finish ), - .Fifo_rd_retry (Fifo_rd_retry ), - .Fifo_eop (Fifo_eop ), - .Fifo_da (Fifo_da ), - .Fifo_ra (Fifo_ra ), - .Fifo_data_err_empty (Fifo_data_err_empty ), - .Fifo_data_err_full (Fifo_data_err_full ), - //user interface (//user interface ), - .Tx_mac_wa (Tx_mac_wa ), - .Tx_mac_wr (Tx_mac_wr ), - .Tx_mac_data (Tx_mac_data ), - .Tx_mac_BE (Tx_mac_BE ), - .Tx_mac_sop (Tx_mac_sop ), - .Tx_mac_eop (Tx_mac_eop ), - //host interface (//host interface ), - .FullDuplex (FullDuplex ), - .Tx_Hwmark (Tx_Hwmark ), - .Tx_Lwmark (Tx_Lwmark ) - ); - -random_gen U_random_gen( -.Reset (Reset ), -.Clk (Clk ), -.Init (Random_init ), -.RetryCnt (RetryCnt ), -.Random_time_meet (Random_time_meet ) -); - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CRC_gen.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CRC_gen.v deleted file mode 100644 index c3b6b080..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CRC_gen.v +++ /dev/null @@ -1,168 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// CRC_gen.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: CRC_gen.v,v $ -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:17 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module CRC_gen ( -Reset , -Clk , -Init , -Frame_data , -Data_en , -CRC_rd , -CRC_end , -CRC_out - -); -input Reset ; -input Clk ; -input Init ; -input [7:0] Frame_data ; -input Data_en ; -input CRC_rd ; -output [7:0] CRC_out ; -output CRC_end ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -reg [7:0] CRC_out ; -reg [31:0] CRC_reg; -reg CRC_end; -reg [3:0] Counter; -//****************************************************************************** -//****************************************************************************** -//input data width is 8bit, and the first bit is bit[0] -function[31:0] NextCRC; - input[7:0] D; - input[31:0] C; - reg[31:0] NewCRC; - begin - NewCRC[0]=C[24]^C[30]^D[1]^D[7]; - NewCRC[1]=C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; - NewCRC[2]=C[26]^D[5]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; - NewCRC[3]=C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; - NewCRC[4]=C[28]^D[3]^C[27]^D[4]^C[26]^D[5]^C[24]^C[30]^D[1]^D[7]; - NewCRC[5]=C[29]^D[2]^C[28]^D[3]^C[27]^D[4]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; - NewCRC[6]=C[30]^D[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; - NewCRC[7]=C[31]^D[0]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7]; - NewCRC[8]=C[0]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7]; - NewCRC[9]=C[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]; - NewCRC[10]=C[2]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7]; - NewCRC[11]=C[3]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7]; - NewCRC[12]=C[4]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7]; - NewCRC[13]=C[5]^C[30]^D[1]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; - NewCRC[14]=C[6]^C[31]^D[0]^C[30]^D[1]^C[28]^D[3]^C[27]^D[4]^C[26]^D[5]; - NewCRC[15]=C[7]^C[31]^D[0]^C[29]^D[2]^C[28]^D[3]^C[27]^D[4]; - NewCRC[16]=C[8]^C[29]^D[2]^C[28]^D[3]^C[24]^D[7]; - NewCRC[17]=C[9]^C[30]^D[1]^C[29]^D[2]^C[25]^D[6]; - NewCRC[18]=C[10]^C[31]^D[0]^C[30]^D[1]^C[26]^D[5]; - NewCRC[19]=C[11]^C[31]^D[0]^C[27]^D[4]; - NewCRC[20]=C[12]^C[28]^D[3]; - NewCRC[21]=C[13]^C[29]^D[2]; - NewCRC[22]=C[14]^C[24]^D[7]; - NewCRC[23]=C[15]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7]; - NewCRC[24]=C[16]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; - NewCRC[25]=C[17]^C[27]^D[4]^C[26]^D[5]; - NewCRC[26]=C[18]^C[28]^D[3]^C[27]^D[4]^C[24]^C[30]^D[1]^D[7]; - NewCRC[27]=C[19]^C[29]^D[2]^C[28]^D[3]^C[25]^C[31]^D[0]^D[6]; - NewCRC[28]=C[20]^C[30]^D[1]^C[29]^D[2]^C[26]^D[5]; - NewCRC[29]=C[21]^C[31]^D[0]^C[30]^D[1]^C[27]^D[4]; - NewCRC[30]=C[22]^C[31]^D[0]^C[28]^D[3]; - NewCRC[31]=C[23]^C[29]^D[2]; - NextCRC=NewCRC; - end - endfunction -//****************************************************************************** - -always @ (posedge Clk or posedge Reset) - if (Reset) - CRC_reg <=32'hffffffff; - else if (Init) - CRC_reg <=32'hffffffff; - else if (Data_en) - CRC_reg <=NextCRC(Frame_data,CRC_reg); - else if (CRC_rd) - CRC_reg <={CRC_reg[23:0],8'hff}; - -always @ (CRC_rd or CRC_reg) - if (CRC_rd) - CRC_out <=~{ - CRC_reg[24], - CRC_reg[25], - CRC_reg[26], - CRC_reg[27], - CRC_reg[28], - CRC_reg[29], - CRC_reg[30], - CRC_reg[31] - }; - else - CRC_out <=0; - -//caculate CRC out length ,4 cycles -//CRC_end aligned to last CRC checksum data -always @(posedge Clk or posedge Reset) - if (Reset) - Counter <=0; - else if (!CRC_rd) - Counter <=0; - else - Counter <=Counter + 1; - -always @ (Counter) - if (Counter==3) - CRC_end=1; - else - CRC_end=0; - -endmodule - - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries deleted file mode 100644 index 58f964cb..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Entries +++ /dev/null @@ -1,7 +0,0 @@ -/CRC_gen.v/1.3/Thu Jan 19 14:07:54 2006// -/MAC_tx_addr_add.v/1.3/Thu Jan 19 14:07:54 2006// -/flow_ctrl.v/1.3/Thu Jan 19 14:07:54 2006// -/MAC_tx_FF.v/1.5/Tue May 1 07:35:17 2007// -/MAC_tx_Ctrl.v/1.4/Wed May 2 06:49:15 2007// -/Ramdon_gen.v/1.3/Wed May 2 06:49:15 2007// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Repository deleted file mode 100644 index 3f5abe3c..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/rtl/verilog/MAC_tx diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v deleted file mode 100644 index b13c0662..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_FF.v +++ /dev/null @@ -1,745 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_tx_FF.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_tx_FF.v,v $ -// Revision 1.5 2006/06/25 04:58:56 maverickist -// no message -// -// Revision 1.4 2006/05/28 05:09:20 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.3 2005/12/16 06:44:18 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.2 2005/12/13 12:15:39 Administrator -// no message -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module MAC_tx_FF - #(parameter MAC_TX_FF_DEPTH = 9) - (Reset , - Clk_MAC , - Clk_SYS , - //MAC_rx_ctrl interface - Fifo_data , - Fifo_rd , - Fifo_rd_finish , - Fifo_rd_retry , - Fifo_eop , - Fifo_da , - Fifo_ra , - Fifo_data_err_empty , - Fifo_data_err_full , - //user interface - Tx_mac_wa , - Tx_mac_wr , - Tx_mac_data , - Tx_mac_BE , - Tx_mac_sop , - Tx_mac_eop , - //host interface - FullDuplex , - Tx_Hwmark , - Tx_Lwmark); - - input Reset ; - input Clk_MAC ; - input Clk_SYS ; - //MAC_tx_ctrl - output [7:0] Fifo_data ; - input Fifo_rd ; - input Fifo_rd_finish ; - input Fifo_rd_retry ; - output Fifo_eop ; - output Fifo_da ; - output Fifo_ra ; - output Fifo_data_err_empty ; - output Fifo_data_err_full ; - //user interface - output Tx_mac_wa ; - input Tx_mac_wr ; - input [31:0] Tx_mac_data ; - input [1:0] Tx_mac_BE ;//big endian - input Tx_mac_sop ; - input Tx_mac_eop ; - //host interface - input FullDuplex ; - input [4:0] Tx_Hwmark ; - input [4:0] Tx_Lwmark ; - // ****************************************************************************** - //internal signals - // ****************************************************************************** - parameter MAC_byte3 =4'd00; - parameter MAC_byte2 =4'd01; - parameter MAC_byte1 =4'd02; - parameter MAC_byte0 =4'd03; - parameter MAC_wait_finish =4'd04; - parameter MAC_retry =4'd08; - parameter MAC_idle =4'd09; - parameter MAC_FFEmpty =4'd10; - parameter MAC_FFEmpty_drop =4'd11; - parameter MAC_pkt_sub =4'd12; - parameter MAC_FF_Err =4'd13; - - reg [3:0] Current_state_MAC /* synthesis syn_preserve =1 */ ; - reg [3:0] Current_state_MAC_reg /* synthesis syn_preserve =1 */ ; - reg [3:0] Next_state_MAC ; - - parameter SYS_idle =4'd0; - parameter SYS_WaitSop =4'd1; - parameter SYS_SOP =4'd2; - parameter SYS_MOP =4'd3; - parameter SYS_DROP =4'd4; - parameter SYS_EOP_ok =4'd5; - parameter SYS_FFEmpty =4'd6; - parameter SYS_EOP_err =4'd7; - parameter SYS_SOP_err =4'd8; - - reg [3:0] Current_state_SYS /* synthesis syn_preserve =1 */; - reg [3:0] Next_state_SYS; - - reg [MAC_TX_FF_DEPTH-1:0] Add_wr ; - reg [MAC_TX_FF_DEPTH-1:0] Add_wr_ungray ; - reg [MAC_TX_FF_DEPTH-1:0] Add_wr_gray ; - reg [MAC_TX_FF_DEPTH-1:0] Add_wr_gray_dl1 ; - wire [MAC_TX_FF_DEPTH-1:0] Add_wr_gray_tmp ; - - reg [MAC_TX_FF_DEPTH-1:0] Add_rd ; - reg [MAC_TX_FF_DEPTH-1:0] Add_rd_reg ; - reg [MAC_TX_FF_DEPTH-1:0] Add_rd_gray ; - reg [MAC_TX_FF_DEPTH-1:0] Add_rd_gray_dl1 ; - wire [MAC_TX_FF_DEPTH-1:0] Add_rd_gray_tmp ; - reg [MAC_TX_FF_DEPTH-1:0] Add_rd_ungray ; - wire [35:0] Din ; - wire [35:0] Dout ; - reg Wr_en ; - wire [MAC_TX_FF_DEPTH-1:0] Add_wr_pluse ; - wire [MAC_TX_FF_DEPTH-1:0] Add_wr_pluse_pluse; - wire [MAC_TX_FF_DEPTH-1:0] Add_rd_pluse ; - reg [MAC_TX_FF_DEPTH-1:0] Add_rd_reg_dl1 ; - reg Full /* synthesis syn_keep=1 */; - reg AlmostFull /* synthesis syn_keep=1 */; - reg Empty /* synthesis syn_keep=1 */; - - reg Tx_mac_wa ; - reg Tx_mac_wr_dl1 ; - reg [31:0] Tx_mac_data_dl1 ; - reg [1:0] Tx_mac_BE_dl1 ; - reg Tx_mac_sop_dl1 ; - reg Tx_mac_eop_dl1 ; - reg FF_FullErr ; - wire [1:0] Dout_BE ; - wire Dout_eop ; - wire Dout_err ; - wire [31:0] Dout_data ; - reg [35:0] Dout_reg /* synthesis syn_preserve=1 */; - reg Packet_number_sub_dl1 ; - reg Packet_number_sub_dl2 ; - reg Packet_number_sub_edge /* synthesis syn_preserve=1 */; - reg Packet_number_add /* synthesis syn_preserve=1 */; - reg [4:0] Fifo_data_count ; - reg Fifo_ra /* synthesis syn_keep=1 */; - reg [7:0] Fifo_data ; - reg Fifo_da ; - reg Fifo_data_err_empty /* synthesis syn_preserve=1 */; - reg Fifo_eop ; - reg Fifo_rd_dl1 ; - reg Fifo_ra_tmp ; - reg [5:0] Packet_number_inFF /* synthesis syn_keep=1 */; - reg [5:0] Packet_number_inFF_reg /* synthesis syn_preserve=1 */; - reg Pkt_sub_apply_tmp ; - reg Pkt_sub_apply ; - reg Add_rd_reg_rdy_tmp ; - reg Add_rd_reg_rdy ; - reg Add_rd_reg_rdy_dl1 ; - reg Add_rd_reg_rdy_dl2 ; - reg [4:0] Tx_Hwmark_pl ; - reg [4:0] Tx_Lwmark_pl ; - reg Add_rd_jump_tmp ; - reg Add_rd_jump_tmp_pl1 ; - reg Add_rd_jump ; - reg Add_rd_jump_wr_pl1 ; - - integer i ; - - // ****************************************************************************** - //write data to from FF . - //domain Clk_SYS - // ****************************************************************************** - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Current_state_SYS <=SYS_idle; - else - Current_state_SYS <=Next_state_SYS; - - always @ (Current_state_SYS or Tx_mac_wr or Tx_mac_sop or Full or AlmostFull - or Tx_mac_eop ) - case (Current_state_SYS) - SYS_idle: - if (Tx_mac_wr&&Tx_mac_sop&&!Full) - Next_state_SYS =SYS_SOP; - else - Next_state_SYS =Current_state_SYS ; - SYS_SOP: - Next_state_SYS =SYS_MOP; - SYS_MOP: - if (AlmostFull) - Next_state_SYS =SYS_DROP; - else if (Tx_mac_wr&&Tx_mac_sop) - Next_state_SYS =SYS_SOP_err; - else if (Tx_mac_wr&&Tx_mac_eop) - Next_state_SYS =SYS_EOP_ok; - else - Next_state_SYS =Current_state_SYS ; - SYS_EOP_ok: - if (Tx_mac_wr&&Tx_mac_sop) - Next_state_SYS =SYS_SOP; - else - Next_state_SYS =SYS_idle; - SYS_EOP_err: - if (Tx_mac_wr&&Tx_mac_sop) - Next_state_SYS =SYS_SOP; - else - Next_state_SYS =SYS_idle; - SYS_SOP_err: - Next_state_SYS =SYS_DROP; - SYS_DROP: //FIFO overflow - if (Tx_mac_wr&&Tx_mac_eop) - Next_state_SYS =SYS_EOP_err; - else - Next_state_SYS =Current_state_SYS ; - default: - Next_state_SYS =SYS_idle; - endcase - - //delay signals - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Tx_mac_wr_dl1 <=0; - Tx_mac_data_dl1 <=0; - Tx_mac_BE_dl1 <=0; - Tx_mac_sop_dl1 <=0; - Tx_mac_eop_dl1 <=0; - end - else - begin - Tx_mac_wr_dl1 <=Tx_mac_wr ; - Tx_mac_data_dl1 <=Tx_mac_data ; - Tx_mac_BE_dl1 <=Tx_mac_BE ; - Tx_mac_sop_dl1 <=Tx_mac_sop ; - Tx_mac_eop_dl1 <=Tx_mac_eop ; - end - - always @(Current_state_SYS) - if (Current_state_SYS==SYS_EOP_err) - FF_FullErr =1; - else - FF_FullErr =0; - - reg Tx_mac_eop_gen; - - always @(Current_state_SYS) - if (Current_state_SYS==SYS_EOP_err||Current_state_SYS==SYS_EOP_ok) - Tx_mac_eop_gen =1; - else - Tx_mac_eop_gen =0; - - assign Din={Tx_mac_eop_gen,FF_FullErr,Tx_mac_BE_dl1,Tx_mac_data_dl1}; - - always @(Current_state_SYS or Tx_mac_wr_dl1) - if ((Current_state_SYS==SYS_SOP||Current_state_SYS==SYS_EOP_ok|| - Current_state_SYS==SYS_MOP||Current_state_SYS==SYS_EOP_err)&&Tx_mac_wr_dl1) - Wr_en = 1; - else - Wr_en = 0; - - - always @ (posedge Reset or posedge Clk_SYS) - if (Reset) - Add_wr_gray <=0; - else - begin - Add_wr_gray[MAC_TX_FF_DEPTH-1] <=Add_wr[MAC_TX_FF_DEPTH-1]; - for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1) - Add_wr_gray[i] <=Add_wr[i+1]^Add_wr[i]; - end - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_rd_gray_dl1 <=0; - else - Add_rd_gray_dl1 <=Add_rd_gray; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_rd_jump_wr_pl1 <=0; - else - Add_rd_jump_wr_pl1 <=Add_rd_jump; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_rd_ungray =0; - else if (!Add_rd_jump_wr_pl1) - begin - Add_rd_ungray[MAC_TX_FF_DEPTH-1] =Add_rd_gray_dl1[MAC_TX_FF_DEPTH-1]; - for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1) - Add_rd_ungray[i] =Add_rd_ungray[i+1]^Add_rd_gray_dl1[i]; - end - assign Add_wr_pluse =Add_wr+1; - assign Add_wr_pluse_pluse =Add_wr+4; - - always @ (Add_wr_pluse or Add_rd_ungray) - if (Add_wr_pluse==Add_rd_ungray) - Full =1; - else - Full =0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - AlmostFull <=0; - else if (Add_wr_pluse_pluse==Add_rd_ungray) - AlmostFull <=1; - else - AlmostFull <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_wr <= 0; - else if (Wr_en&&!Full) - Add_wr <= Add_wr +1; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Packet_number_sub_dl1 <=0; - Packet_number_sub_dl2 <=0; - end - else - begin - Packet_number_sub_dl1 <=Pkt_sub_apply; - Packet_number_sub_dl2 <=Packet_number_sub_dl1; - end - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Packet_number_sub_edge <=0; - else if (Packet_number_sub_dl1&!Packet_number_sub_dl2) - Packet_number_sub_edge <=1; - else - Packet_number_sub_edge <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Packet_number_add <=0; - else if (Current_state_SYS==SYS_EOP_ok||Current_state_SYS==SYS_EOP_err) - Packet_number_add <=1; - else - Packet_number_add <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Packet_number_inFF <=0; - else if (Packet_number_add&&!Packet_number_sub_edge) - Packet_number_inFF <=Packet_number_inFF + 1'b1; - else if (!Packet_number_add&&Packet_number_sub_edge) - Packet_number_inFF <=Packet_number_inFF - 1'b1; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Packet_number_inFF_reg <=0; - else - Packet_number_inFF_reg <=Packet_number_inFF; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Add_rd_reg_rdy_dl1 <=0; - Add_rd_reg_rdy_dl2 <=0; - end - else - begin - Add_rd_reg_rdy_dl1 <=Add_rd_reg_rdy; - Add_rd_reg_rdy_dl2 <=Add_rd_reg_rdy_dl1; - end - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Add_rd_reg_dl1 <=0; - else if (Add_rd_reg_rdy_dl1&!Add_rd_reg_rdy_dl2) - Add_rd_reg_dl1 <=Add_rd_reg; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Fifo_data_count <=0; - else if (FullDuplex) - Fifo_data_count <=Add_wr[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]-Add_rd_ungray[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]; - else - Fifo_data_count <=Add_wr[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]-Add_rd_reg_dl1[MAC_TX_FF_DEPTH-1:MAC_TX_FF_DEPTH-5]; //for half duplex backoff requirement - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Fifo_ra_tmp <=0; - else if (Packet_number_inFF_reg>=1||Fifo_data_count>=Tx_Lwmark) - Fifo_ra_tmp <=1; - else - Fifo_ra_tmp <=0; - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - begin - Tx_Hwmark_pl <=0; - Tx_Lwmark_pl <=0; - end - else - begin - Tx_Hwmark_pl <=Tx_Hwmark; - Tx_Lwmark_pl <=Tx_Lwmark; - end - - always @ (posedge Clk_SYS or posedge Reset) - if (Reset) - Tx_mac_wa <=0; - else if (Fifo_data_count>=Tx_Hwmark_pl) - Tx_mac_wa <=0; - else if (Fifo_data_count=0;i=i-1) - Add_rd_gray[i] <=Add_rd[i+1]^Add_rd[i]; - end - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr_gray_dl1 <=0; - else - Add_wr_gray_dl1 <=Add_wr_gray; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_wr_ungray =0; - else - begin - Add_wr_ungray[MAC_TX_FF_DEPTH-1] =Add_wr_gray_dl1[MAC_TX_FF_DEPTH-1]; - for (i=MAC_TX_FF_DEPTH-2;i>=0;i=i-1) - Add_wr_ungray[i] =Add_wr_ungray[i+1]^Add_wr_gray_dl1[i]; - end - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Empty <=1; - else if (Add_rd==Add_wr_ungray) - Empty <=1; - else - Empty <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_ra <=0; - else - Fifo_ra <=Fifo_ra_tmp; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Pkt_sub_apply_tmp <=0; - else if (Current_state_MAC==MAC_pkt_sub) - Pkt_sub_apply_tmp <=1; - else - Pkt_sub_apply_tmp <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Pkt_sub_apply <=0; - else if ((Current_state_MAC==MAC_pkt_sub)||Pkt_sub_apply_tmp) - Pkt_sub_apply <=1; - else - Pkt_sub_apply <=0; - - //reg Add_rd for collison retry - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_reg <=0; - else if (Fifo_rd_finish) - Add_rd_reg <=Add_rd; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_reg_rdy_tmp <=0; - else if (Fifo_rd_finish) - Add_rd_reg_rdy_tmp <=1; - else - Add_rd_reg_rdy_tmp <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_reg_rdy <=0; - else if (Fifo_rd_finish||Add_rd_reg_rdy_tmp) - Add_rd_reg_rdy <=1; - else - Add_rd_reg_rdy <=0; - - reg Add_rd_add /* synthesis syn_keep=1 */; - - always @ (Current_state_MAC or Next_state_MAC) - if ((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3) - Add_rd_add =1; - else - Add_rd_add =0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd <=0; - else if (Current_state_MAC==MAC_retry) - Add_rd <= Add_rd_reg; - else if (Add_rd_add) - Add_rd <= Add_rd + 1; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_jump_tmp <=0; - else if (Current_state_MAC==MAC_retry) - Add_rd_jump_tmp <=1; - else - Add_rd_jump_tmp <=0; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_jump_tmp_pl1 <=0; - else - Add_rd_jump_tmp_pl1 <=Add_rd_jump_tmp; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Add_rd_jump <=0; - else if (Current_state_MAC==MAC_retry) - Add_rd_jump <=1; - else if (Add_rd_jump_tmp_pl1) - Add_rd_jump <=0; - - //gen Fifo_data - always @ (Dout_data or Current_state_MAC) - case (Current_state_MAC) - MAC_byte3: - Fifo_data =Dout_data[31:24]; - MAC_byte2: - Fifo_data =Dout_data[23:16]; - MAC_byte1: - Fifo_data =Dout_data[15:8]; - MAC_byte0: - Fifo_data =Dout_data[7:0]; - default: - Fifo_data =0; - endcase - - //gen Fifo_da - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_rd_dl1 <=0; - else - Fifo_rd_dl1 <=Fifo_rd; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_da <=0; - else if ((Current_state_MAC==MAC_byte0||Current_state_MAC==MAC_byte1|| - Current_state_MAC==MAC_byte2||Current_state_MAC==MAC_byte3)&&Fifo_rd&&!Fifo_eop) - Fifo_da <=1; - else - Fifo_da <=0; - - //gen Fifo_data_err_empty - assign Fifo_data_err_full=Dout_err; - //gen Fifo_data_err_empty - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Current_state_MAC_reg <=0; - else - Current_state_MAC_reg <=Current_state_MAC; - - always @ (posedge Clk_MAC or posedge Reset) - if (Reset) - Fifo_data_err_empty <=0; - else if (Current_state_MAC_reg==MAC_FFEmpty) - Fifo_data_err_empty <=1; - else - Fifo_data_err_empty <=0; - - always @ (posedge Clk_MAC) - if (Current_state_MAC_reg==MAC_FF_Err) - begin - $finish(2); - $display("mac_tx_FF meet error status at time :%t",$time); - end - - //gen Fifo_eop aligned to last valid data byte¡£ - always @ (Current_state_MAC or Dout_eop) - if (((Current_state_MAC==MAC_byte0&&Dout_BE==2'b00|| - Current_state_MAC==MAC_byte1&&Dout_BE==2'b11|| - Current_state_MAC==MAC_byte2&&Dout_BE==2'b10|| - Current_state_MAC==MAC_byte3&&Dout_BE==2'b01)&&Dout_eop)) - Fifo_eop =1; - else - Fifo_eop =0; - //****************************************************************************** - duram #(36,MAC_TX_FF_DEPTH) - U_duram(.data_a (Din ), - .wren_a (Wr_en ), - .address_a (Add_wr ), - .address_b (Add_rd ), - .clock_a (Clk_SYS ), - .clock_b (Clk_MAC ), - .q_b (Dout )); - -endmodule // MAC_tx_FF diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_addr_add.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_addr_add.v deleted file mode 100644 index fa6cd4c2..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_addr_add.v +++ /dev/null @@ -1,128 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_tx_addr_add.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/wr_en/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_tx_addr_add.v,v $ -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:18 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module MAC_tx_addr_add ( -Reset , -Clk , -MAC_tx_addr_init , -MAC_tx_addr_rd , -MAC_tx_addr_data , -//CPU , -MAC_add_prom_data , -MAC_add_prom_add , -MAC_add_prom_wr -); - -input Reset ; -input Clk ; -input MAC_tx_addr_rd ; -input MAC_tx_addr_init ; -output [7:0] MAC_tx_addr_data ; - //CPU ; -input [7:0] MAC_add_prom_data ; -input [2:0] MAC_add_prom_add ; -input MAC_add_prom_wr ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -reg [2:0] add_rd; -wire[2:0] add_wr; -wire[7:0] din; -wire[7:0] dout; -wire wr_en; -reg MAC_add_prom_wr_dl1; -reg MAC_add_prom_wr_dl2; -//****************************************************************************** -//write data from cpu to prom -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - MAC_add_prom_wr_dl1 <=0; - MAC_add_prom_wr_dl2 <=0; - end - else - begin - MAC_add_prom_wr_dl1 <=MAC_add_prom_wr; - MAC_add_prom_wr_dl2 <=MAC_add_prom_wr_dl1; - end -assign # 2 wr_en =MAC_add_prom_wr_dl1&!MAC_add_prom_wr_dl2; -assign # 2 add_wr =MAC_add_prom_add; -assign # 2 din =MAC_add_prom_data; - -//****************************************************************************** -//read data from cpu to prom -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - add_rd <=0; - else if (MAC_tx_addr_init) - add_rd <=0; - else if (MAC_tx_addr_rd) - add_rd <=add_rd + 1; -assign MAC_tx_addr_data=dout; -//****************************************************************************** -//b port for read ,a port for write . -//****************************************************************************** -duram #(8,3,"M512","DUAL_PORT") U_duram( -.data_a (din ), -.wren_a (wr_en ), -.address_a (add_wr ), -.address_b (add_rd ), -.clock_a (Clk ), -.clock_b (Clk ), -.q_b (dout )); - - -endmodule - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v deleted file mode 100644 index 5412bd13..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/MAC_tx_ctrl.v +++ /dev/null @@ -1,646 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// MAC_tx_ctrl.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: MAC_tx_Ctrl.v,v $ -// Revision 1.4 2006/06/25 04:58:56 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.3 2005/12/16 06:44:17 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.2 2005/12/13 12:15:38 Administrator -// no message -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module MAC_tx_ctrl ( -Reset , -Clk , -//CRC_gen Interface -CRC_init , -Frame_data , -Data_en , -CRC_rd , -CRC_end , -CRC_out , -//Ramdon_gen interfac -Random_init , -RetryCnt , -Random_time_meet , -//flow control -pause_apply , -pause_quanta_sub , -xoff_gen , -xoff_gen_complete , -xon_gen , -xon_gen_complete , -//MAC_tx_FF -Fifo_data , -Fifo_rd , -Fifo_eop , -Fifo_da , -Fifo_rd_finish , -Fifo_rd_retry , -Fifo_ra , -Fifo_data_err_empty , -Fifo_data_err_full , -//RMII -TxD , -TxEn , -CRS , -//MAC_tx_addr_add -MAC_tx_addr_rd , -MAC_tx_addr_data , -MAC_tx_addr_init , -//RMON -Tx_pkt_type_rmon , -Tx_pkt_length_rmon , -Tx_apply_rmon , -Tx_pkt_err_type_rmon, -//CPU -pause_frame_send_en , -pause_quanta_set , -MAC_tx_add_en , -FullDuplex , -MaxRetry , -IFGset -); - -input Reset ; -input Clk ; - //CRC_gen Interface -output CRC_init ; -output [7:0] Frame_data ; -output Data_en ; -output CRC_rd ; -input CRC_end ; -input [7:0] CRC_out ; - //Ramdon_gen interface -output Random_init ; -output [3:0] RetryCnt ; -input Random_time_meet ;//levle hight indicate random time passed away - //flow control -input pause_apply ; -output pause_quanta_sub ; -input xoff_gen ; -output xoff_gen_complete ; -input xon_gen ; -output xon_gen_complete ; - //MAC_rx_FF -input [7:0] Fifo_data ; -output Fifo_rd ; -input Fifo_eop ; -input Fifo_da ; -output Fifo_rd_finish ; -output Fifo_rd_retry ; -input Fifo_ra ; -input Fifo_data_err_empty ; -input Fifo_data_err_full ; - //RMII -output [7:0] TxD ; -output TxEn ; -input CRS ; - //MAC_tx_addr_add -output MAC_tx_addr_init ; -output MAC_tx_addr_rd ; -input [7:0] MAC_tx_addr_data ; - //RMON -output [2:0] Tx_pkt_type_rmon ; -output [15:0] Tx_pkt_length_rmon ; -output Tx_apply_rmon ; -output [2:0] Tx_pkt_err_type_rmon; - //CPU -input pause_frame_send_en ; -input [15:0] pause_quanta_set ; -input MAC_tx_add_en ; -input FullDuplex ; -input [3:0] MaxRetry ; -input [5:0] IFGset ; -//****************************************************************************** -//internal signals -//****************************************************************************** -parameter StateIdle =4'd00; -parameter StatePreamble =4'd01; -parameter StateSFD =4'd02; -parameter StateData =4'd03; -parameter StatePause =4'd04; -parameter StatePAD =4'd05; -parameter StateFCS =4'd06; -parameter StateIFG =4'd07; -parameter StateJam =4'd08; -parameter StateBackOff =4'd09; -parameter StateJamDrop =4'd10; -parameter StateFFEmptyDrop =4'd11; -parameter StateSwitchNext =4'd12; -parameter StateDefer =4'd13; -parameter StateSendPauseFrame =4'd14; - -reg [3:0] Current_state /*synthesis syn_keep=1 */; -reg [3:0] Next_state; -reg [5:0] IFG_counter; -reg [4:0] Preamble_counter;// -reg [7:0] TxD_tmp ; -reg TxEn_tmp ; -reg [15:0] Tx_pkt_length_rmon ; -reg Tx_apply_rmon ; -reg Tx_apply_rmon_tmp ; -reg Tx_apply_rmon_tmp_pl1; -reg [2:0] Tx_pkt_err_type_rmon; -reg [3:0] RetryCnt ; -reg Random_init ; -reg Fifo_rd_finish ; -reg Fifo_rd_retry ; -reg [7:0] TxD ; -reg TxEn ; -reg CRC_init ; -reg Data_en ; -reg CRC_rd ; -reg Fifo_rd ; -reg MAC_tx_addr_rd ; -reg MAC_header_slot ; -reg MAC_header_slot_tmp ; -reg [2:0] Tx_pkt_type_rmon ; -wire Collision ; -reg MAC_tx_addr_init ; -reg Src_MAC_ptr ; -reg [7:0] IPLengthCounter ;//for pad append -reg [1:0] PADCounter ; -reg [7:0] JamCounter ; -reg PktDrpEvenPtr ; -reg [7:0] pause_counter ; -reg pause_quanta_sub ; -reg pause_frame_send_en_dl1 ; -reg [15:0] pause_quanta_set_dl1 ; -reg xoff_gen_complete ; -reg xon_gen_complete ; -//****************************************************************************** -//boundery signal processing -//****************************************************************************** -always @(posedge Clk or posedge Reset) - if (Reset) - begin - pause_frame_send_en_dl1 <=0; - pause_quanta_set_dl1 <=0; - end - else - begin - pause_frame_send_en_dl1 <=pause_frame_send_en ; - pause_quanta_set_dl1 <=pause_quanta_set ; - end -//****************************************************************************** -//state machine -//****************************************************************************** -assign Collision=TxEn&CRS; - -always @(posedge Clk or posedge Reset) - if (Reset) - pause_counter <=0; - else if (Current_state!=StatePause) - pause_counter <=0; - else - pause_counter <=pause_counter+1; - -always @(posedge Clk or posedge Reset) - if (Reset) - IPLengthCounter <=0; - else if (Current_state==StateDefer) - IPLengthCounter <=0; - else if (IPLengthCounter!=8'hff&&(Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD)) - IPLengthCounter <=IPLengthCounter+1; - -always @(posedge Clk or posedge Reset) - if (Reset) - PADCounter <=0; - else if (Current_state!=StatePAD) - PADCounter <=0; - else - PADCounter <=PADCounter+1; - -always @(posedge Clk or posedge Reset) - if (Reset) - Current_state <=StateDefer; - else - Current_state <=Next_state; - -always @ (*) - case (Current_state) - StateDefer: - if ((FullDuplex)||(!FullDuplex&&!CRS)) - Next_state=StateIFG; - else - Next_state=Current_state; - StateIFG: - if (!FullDuplex&&CRS) - Next_state=StateDefer; - else if ((FullDuplex&&IFG_counter==IFGset-4)||(!FullDuplex&&!CRS&&IFG_counter==IFGset-4))//remove some additional time - Next_state=StateIdle; - else - Next_state=Current_state; - StateIdle: - if (!FullDuplex&&CRS) - Next_state=StateDefer; - else if (pause_apply) - Next_state=StatePause; - else if ((FullDuplex&&Fifo_ra)||(!FullDuplex&&!CRS&&Fifo_ra)||(pause_frame_send_en_dl1&&(xoff_gen||xon_gen))) - Next_state=StatePreamble; - else - Next_state=Current_state; - StatePause: - if (pause_counter==512/8) - Next_state=StateDefer; - else - Next_state=Current_state; - StatePreamble: - if (!FullDuplex&&Collision) - Next_state=StateJam; - else if ((FullDuplex&&Preamble_counter==6)||(!FullDuplex&&!Collision&&Preamble_counter==6)) - Next_state=StateSFD; - else - Next_state=Current_state; - StateSFD: - if (!FullDuplex&&Collision) - Next_state=StateJam; - else if (pause_frame_send_en_dl1&&(xoff_gen||xon_gen)) - Next_state=StateSendPauseFrame; - else - Next_state=StateData; - StateSendPauseFrame: - if (IPLengthCounter==17) - Next_state=StatePAD; - else - Next_state=Current_state; - StateData: - if (!FullDuplex&&Collision) - Next_state=StateJam; - else if (Fifo_data_err_empty) - Next_state=StateFFEmptyDrop; - else if (Fifo_eop&&IPLengthCounter>=59)//IP+MAC+TYPE=60 ,start from 0 - Next_state=StateFCS; - else if (Fifo_eop) - Next_state=StatePAD; - else - Next_state=StateData; - StatePAD: - if (!FullDuplex&&Collision) - Next_state=StateJam; - else if (IPLengthCounter>=59) - Next_state=StateFCS; - else - Next_state=Current_state; - StateJam: - if (RetryCnt<=MaxRetry&&JamCounter==16) - Next_state=StateBackOff; - else if (RetryCnt>MaxRetry) - Next_state=StateJamDrop; - else - Next_state=Current_state; - StateBackOff: - if (Random_time_meet) - Next_state =StateDefer; - else - Next_state =Current_state; - StateFCS: - if (!FullDuplex&&Collision) - Next_state =StateJam; - else if (CRC_end) - Next_state =StateSwitchNext; - else - Next_state =Current_state; - StateFFEmptyDrop: - if (Fifo_eop) - Next_state =StateSwitchNext; - else - Next_state =Current_state; - StateJamDrop: - if (Fifo_eop) - Next_state =StateSwitchNext; - else - Next_state =Current_state; - StateSwitchNext: - Next_state =StateDefer; - default: - Next_state =StateDefer; - endcase - - - -always @ (posedge Clk or posedge Reset) - if (Reset) - JamCounter <=0; - else if (Current_state!=StateJam) - JamCounter <=0; - else if (Current_state==StateJam) - JamCounter <=JamCounter+1; - - -always @ (posedge Clk or posedge Reset) - if (Reset) - RetryCnt <=0; - else if (Current_state==StateSwitchNext) - RetryCnt <=0; - else if (Current_state==StateJam&&Next_state==StateBackOff) - RetryCnt <=RetryCnt + 1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - IFG_counter <=0; - else if (Current_state!=StateIFG) - IFG_counter <=0; - else - IFG_counter <=IFG_counter + 1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Preamble_counter <=0; - else if (Current_state!=StatePreamble) - Preamble_counter <=0; - else - Preamble_counter <=Preamble_counter+ 1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - PktDrpEvenPtr <=0; - else if(Current_state==StateJamDrop||Current_state==StateFFEmptyDrop) - PktDrpEvenPtr <=~PktDrpEvenPtr; -//****************************************************************************** -//generate output signals -//****************************************************************************** -//CRC related -always @(Current_state) - if (Current_state==StateSFD) - CRC_init =1; - else - CRC_init =0; - -assign Frame_data=TxD_tmp; - -always @(Current_state) - if (Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD) - Data_en =1; - else - Data_en =0; - -always @(Current_state) - if (Current_state==StateFCS) - CRC_rd =1; - else - CRC_rd =0; - -//Ramdon_gen interface -always @(Current_state or Next_state) - if (Current_state==StateJam&&Next_state==StateBackOff) - Random_init =1; - else - Random_init =0; - -//MAC_rx_FF -//data have one cycle delay after fifo read signals -always @ (*) - if (Current_state==StateData || - Current_state==StateSFD&&!(pause_frame_send_en_dl1&&(xoff_gen||xon_gen)) || - Current_state==StateJamDrop&&PktDrpEvenPtr|| - Current_state==StateFFEmptyDrop&&PktDrpEvenPtr ) - Fifo_rd =1; - else - Fifo_rd =0; - -always @ (Current_state) - if (Current_state==StateSwitchNext) - Fifo_rd_finish =1; - else - Fifo_rd_finish =0; - -always @ (Current_state) - if (Current_state==StateJam) - Fifo_rd_retry =1; - else - Fifo_rd_retry =0; -//RMII -always @(Current_state) - if (Current_state==StatePreamble||Current_state==StateSFD|| - Current_state==StateData||Current_state==StateSendPauseFrame|| - Current_state==StateFCS||Current_state==StatePAD||Current_state==StateJam) - TxEn_tmp =1; - else - TxEn_tmp =0; - -//gen txd data -always @(*) - case (Current_state) - StatePreamble: - TxD_tmp =8'h55; - StateSFD: - TxD_tmp =8'hd5; - StateData: - if (Src_MAC_ptr&&MAC_tx_add_en) - TxD_tmp =MAC_tx_addr_data; - else - TxD_tmp =Fifo_data; - StateSendPauseFrame: - if (Src_MAC_ptr&&MAC_tx_add_en) - TxD_tmp =MAC_tx_addr_data; - else - case (IPLengthCounter) - 7'd0: TxD_tmp =8'h01; - 7'd1: TxD_tmp =8'h80; - 7'd2: TxD_tmp =8'hc2; - 7'd3: TxD_tmp =8'h00; - 7'd4: TxD_tmp =8'h00; - 7'd5: TxD_tmp =8'h01; - 7'd12: TxD_tmp =8'h88;//type - 7'd13: TxD_tmp =8'h08;// - 7'd14: TxD_tmp =8'h00;//opcode - 7'd15: TxD_tmp =8'h01; - 7'd16: TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[15:8]; - 7'd17: TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[7:0]; -// 7'd60: TxD_tmp =8'h26; -// 7'd61: TxD_tmp =8'h6b; -// 7'd62: TxD_tmp =8'hae; -// 7'd63: TxD_tmp =8'h0a; - default:TxD_tmp =0; - endcase - - StatePAD: - TxD_tmp =8'h00; - StateJam: - TxD_tmp =8'h01; //jam sequence - StateFCS: - TxD_tmp =CRC_out; - default: - TxD_tmp =2'b0; - endcase -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - TxD <=0; - TxEn <=0; - end - else - begin - TxD <=TxD_tmp; - TxEn <=TxEn_tmp; - end -//RMON - - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_pkt_length_rmon <=0; - else if (Current_state==StateSFD) - Tx_pkt_length_rmon <=0; - else if (Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD||Current_state==StateFCS) - Tx_pkt_length_rmon <=Tx_pkt_length_rmon+1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_apply_rmon_tmp <=0; - else if ((Fifo_eop&&Current_state==StateJamDrop)|| - (Fifo_eop&&Current_state==StateFFEmptyDrop)|| - CRC_end) - Tx_apply_rmon_tmp <=1; - else - Tx_apply_rmon_tmp <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_apply_rmon_tmp_pl1 <=0; - else - Tx_apply_rmon_tmp_pl1 <=Tx_apply_rmon_tmp; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_apply_rmon <=0; - else if ((Fifo_eop&&Current_state==StateJamDrop)|| - (Fifo_eop&&Current_state==StateFFEmptyDrop)|| - CRC_end) - Tx_apply_rmon <=1; - else if (Tx_apply_rmon_tmp_pl1) - Tx_apply_rmon <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_pkt_err_type_rmon <=0; - else if(Fifo_eop&&Current_state==StateJamDrop) - Tx_pkt_err_type_rmon <=3'b001;// - else if(Fifo_eop&&Current_state==StateFFEmptyDrop) - Tx_pkt_err_type_rmon <=3'b010;//underflow - else if(Fifo_eop&&Fifo_data_err_full) - Tx_pkt_err_type_rmon <=3'b011;//overflow - else if(CRC_end) - Tx_pkt_err_type_rmon <=3'b100;//normal - -always @ (posedge Clk or posedge Reset) - if (Reset) - MAC_header_slot_tmp <=0; - else if(Current_state==StateSFD&&Next_state==StateData) - MAC_header_slot_tmp <=1; - else - MAC_header_slot_tmp <=0; - -always @ (posedge Clk or posedge Reset) - if (Reset) - MAC_header_slot <=0; - else - MAC_header_slot <=MAC_header_slot_tmp; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Tx_pkt_type_rmon <=0; - else if (Current_state==StateSendPauseFrame) - Tx_pkt_type_rmon <=3'b100; - else if(MAC_header_slot) - Tx_pkt_type_rmon <={1'b0,TxD[7:6]}; - - -always @(Tx_pkt_length_rmon) - if (Tx_pkt_length_rmon>=6&&Tx_pkt_length_rmon<=11) - Src_MAC_ptr =1; - else - Src_MAC_ptr =0; - -//MAC_tx_addr_add -always @ (posedge Clk or posedge Reset) - if (Reset) - MAC_tx_addr_rd <=0; - else if ((Tx_pkt_length_rmon>=4&&Tx_pkt_length_rmon<=9)&&(MAC_tx_add_en||Current_state==StateSendPauseFrame)) - MAC_tx_addr_rd <=1; - else - MAC_tx_addr_rd <=0; - -always @ (Tx_pkt_length_rmon or Fifo_rd) - if ((Tx_pkt_length_rmon==3)&&Fifo_rd) - MAC_tx_addr_init=1; - else - MAC_tx_addr_init=0; - -//flow control -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta_sub <=0; - else if(pause_counter==512/8) - pause_quanta_sub <=1; - else - pause_quanta_sub <=0; - - -always @ (posedge Clk or posedge Reset) - if (Reset) - xoff_gen_complete <=0; - else if(Current_state==StateDefer&&xoff_gen) - xoff_gen_complete <=1; - else - xoff_gen_complete <=0; - - -always @ (posedge Clk or posedge Reset) - if (Reset) - xon_gen_complete <=0; - else if(Current_state==StateDefer&&xon_gen) - xon_gen_complete <=1; - else - xon_gen_complete <=0; - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/flow_ctrl.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/flow_ctrl.v deleted file mode 100644 index 76534e65..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/flow_ctrl.v +++ /dev/null @@ -1,203 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// flow_ctrl.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: flow_ctrl.v,v $ -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:19 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module flow_ctrl -( -Reset , -Clk , -//host processor , -tx_pause_en , -xoff_cpu , -xon_cpu , -//MAC_rx_flow , -pause_quanta , -pause_quanta_val , -//MAC_tx_ctrl , -pause_apply , -pause_quanta_sub , -xoff_gen , -xoff_gen_complete , -xon_gen , -xon_gen_complete - -); - -input Reset ; -input Clk ; - //host processor ; -input tx_pause_en ; -input xoff_cpu ; -input xon_cpu ; - //MAC_rx_flow ; -input [15:0] pause_quanta ; -input pause_quanta_val ; - //MAC_tx_ctrl ; -output pause_apply ; -input pause_quanta_sub ; -output xoff_gen ; -input xoff_gen_complete ; -output xon_gen ; -input xon_gen_complete ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -reg xoff_cpu_dl1 ; -reg xoff_cpu_dl2 ; -reg xon_cpu_dl1 ; -reg xon_cpu_dl2 ; -reg [15:0] pause_quanta_dl1 ; -reg pause_quanta_val_dl1 ; -reg pause_quanta_val_dl2 ; -reg pause_apply ; -reg xoff_gen ; -reg xon_gen ; -reg [15:0] pause_quanta_counter ; -reg tx_pause_en_dl1 ; -reg tx_pause_en_dl2 ; -//****************************************************************************** -//boundery signal processing -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - xoff_cpu_dl1 <=0; - xoff_cpu_dl2 <=0; - end - else - begin - xoff_cpu_dl1 <=xoff_cpu; - xoff_cpu_dl2 <=xoff_cpu_dl1; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - xon_cpu_dl1 <=0; - xon_cpu_dl2 <=0; - end - else - begin - xon_cpu_dl1 <=xon_cpu; - xon_cpu_dl2 <=xon_cpu_dl1; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - pause_quanta_dl1 <=0; - end - else - begin - pause_quanta_dl1 <=pause_quanta; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - pause_quanta_val_dl1 <=0; - pause_quanta_val_dl2 <=0; - end - else - begin - pause_quanta_val_dl1 <=pause_quanta_val; - pause_quanta_val_dl2 <=pause_quanta_val_dl1; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - tx_pause_en_dl1 <=0; - tx_pause_en_dl2 <=0; - end - else - begin - tx_pause_en_dl1 <=tx_pause_en; - tx_pause_en_dl2 <=tx_pause_en_dl1; - end - -//****************************************************************************** -//gen output signals -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - xoff_gen <=0; - else if (xoff_gen_complete) - xoff_gen <=0; - else if (xoff_cpu_dl1&&!xoff_cpu_dl2) - xoff_gen <=1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - xon_gen <=0; - else if (xon_gen_complete) - xon_gen <=0; - else if (xon_cpu_dl1&&!xon_cpu_dl2) - xon_gen <=1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_quanta_counter <=0; - else if(pause_quanta_val_dl1&&!pause_quanta_val_dl2) - pause_quanta_counter <=pause_quanta_dl1; - else if(pause_quanta_sub&&pause_quanta_counter!=0) - pause_quanta_counter <=pause_quanta_counter-1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - pause_apply <=0; - else if(pause_quanta_counter==0) - pause_apply <=0; - else if (tx_pause_en_dl2) - pause_apply <=1; - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v deleted file mode 100644 index ba344693..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/MAC_tx/random_gen.v +++ /dev/null @@ -1,123 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// random_gen.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: Ramdon_gen.v,v $ -// Revision 1.3 2006/01/19 14:07:54 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:19 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// - -module random_gen( -Reset , -Clk , -Init , -RetryCnt , -Random_time_meet -); -input Reset ; -input Clk ; -input Init ; -input [3:0] RetryCnt ; -output Random_time_meet; - -//****************************************************************************** -//internal signals -//****************************************************************************** -reg [9:0] Random_sequence ; -reg [9:0] Random ; -reg [9:0] Random_counter ; -reg [7:0] Slot_time_counter; //256*2=512bit=1 slot time -reg Random_time_meet; - -//****************************************************************************** -always @ (posedge Clk or posedge Reset) - if (Reset) - Random_sequence <=0; - else - Random_sequence <={Random_sequence[8:0],~(Random_sequence[2]^Random_sequence[9])}; - -always @ (RetryCnt or Random_sequence) - case (RetryCnt) - 4'h0 : Random={9'b0,Random_sequence[0]}; - 4'h1 : Random={8'b0,Random_sequence[1:0]}; - 4'h2 : Random={7'b0,Random_sequence[2:0]}; - 4'h3 : Random={6'b0,Random_sequence[3:0]}; - 4'h4 : Random={5'b0,Random_sequence[4:0]}; - 4'h5 : Random={4'b0,Random_sequence[5:0]}; - 4'h6 : Random={3'b0,Random_sequence[6:0]}; - 4'h7 : Random={2'b0,Random_sequence[7:0]}; - 4'h8 : Random={1'b0,Random_sequence[8:0]}; - 4'h9 : Random={ Random_sequence[9:0]}; - default : Random={ Random_sequence[9:0]}; - endcase - -always @ (posedge Clk or posedge Reset) - if (Reset) - Slot_time_counter <=0; - else if(Init) - Slot_time_counter <=0; - else if(!Random_time_meet) - Slot_time_counter <=Slot_time_counter+1; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Random_counter <=0; - else if (Init) - Random_counter <=Random; - else if (Random_counter!=0&&Slot_time_counter==255) - Random_counter <=Random_counter -1 ; - -always @ (posedge Clk or posedge Reset) - if (Reset) - Random_time_meet <=1; - else if (Init) - Random_time_meet <=0; - else if (Random_counter==0) - Random_time_meet <=1; - -endmodule - - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/Phy_int.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/Phy_int.v deleted file mode 100644 index 7e0090f5..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/Phy_int.v +++ /dev/null @@ -1,227 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// Phy_int.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: Phy_int.v,v $ -// Revision 1.3 2006/01/19 14:07:53 maverickist -// verification is complete. -// -// Revision 1.3 2005/12/16 06:44:14 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.2 2005/12/13 12:15:36 Administrator -// no message -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - -module Phy_int ( -Reset , -MAC_rx_clk , -MAC_tx_clk , -//Rx interface , -MCrs_dv , -MRxD , -MRxErr , -//Tx interface , -MTxD , -MTxEn , -MCRS , -//Phy interface , -Tx_er , -Tx_en , -Txd , -Rx_er , -Rx_dv , -Rxd , -Crs , -Col , -//host interface , -Line_loop_en , -Speed - -); -input Reset ; -input MAC_rx_clk ; -input MAC_tx_clk ; - //Rx interface -output MCrs_dv ; -output [7:0] MRxD ; -output MRxErr ; - //Tx interface -input [7:0] MTxD ; -input MTxEn ; -output MCRS ; - //Phy interface -output Tx_er ; -output Tx_en ; -output [7:0] Txd ; -input Rx_er ; -input Rx_dv ; -input [7:0] Rxd ; -input Crs ; -input Col ; - //host interface -input Line_loop_en ; -input [2:0] Speed ; -//****************************************************************************** -//internal signals -//****************************************************************************** -reg [7:0] MTxD_dl1 ; -reg MTxEn_dl1 ; -reg Tx_odd_data_ptr ; -reg Rx_odd_data_ptr ; -reg Tx_en ; -reg [7:0] Txd ; -reg MCrs_dv ; -reg [7:0] MRxD ; -reg Rx_er_dl1 ; -reg Rx_dv_dl1 ; -reg Rx_dv_dl2 ; -reg [7:0] Rxd_dl1 ; -reg [7:0] Rxd_dl2 ; -reg Crs_dl1 ; -reg Col_dl1 ; -//****************************************************************************** -//Tx control -//****************************************************************************** -//reg boundery signals -always @ (posedge MAC_tx_clk or posedge Reset) - if (Reset) - begin - MTxD_dl1 <=0; - MTxEn_dl1 <=0; - end - else - begin - MTxD_dl1 <=MTxD ; - MTxEn_dl1 <=MTxEn ; - end - -always @ (posedge MAC_tx_clk or posedge Reset) - if (Reset) - Tx_odd_data_ptr <=0; - else if (!MTxD_dl1) - Tx_odd_data_ptr <=0; - else - Tx_odd_data_ptr <=!Tx_odd_data_ptr; - - -always @ (posedge MAC_tx_clk or posedge Reset) - if (Reset) - Txd <=0; - else if(Speed[2]&&MTxEn_dl1) - Txd <=MTxD_dl1; - else if(MTxEn_dl1&&!Tx_odd_data_ptr) - Txd <={4'b0,MTxD_dl1[3:0]}; - else if(MTxEn_dl1&&Tx_odd_data_ptr) - Txd <={4'b0,MTxD_dl1[7:4]}; - else - Txd <=0; - -always @ (posedge MAC_tx_clk or posedge Reset) - if (Reset) - Tx_en <=0; - else if(MTxEn_dl1) - Tx_en <=1; - else - Tx_en <=0; - -assign Tx_er=0; - -//****************************************************************************** -//Rx control -//****************************************************************************** -//reg boundery signals -always @ (posedge MAC_rx_clk or posedge Reset) - if (Reset) - begin - Rx_er_dl1 <=0; - Rx_dv_dl1 <=0; - Rx_dv_dl2 <=0 ; - Rxd_dl1 <=0; - Rxd_dl2 <=0; - Crs_dl1 <=0; - Col_dl1 <=0; - end - else - begin - Rx_er_dl1 <=Rx_er ; - Rx_dv_dl1 <=Rx_dv ; - Rx_dv_dl2 <=Rx_dv_dl1 ; - Rxd_dl1 <=Rxd ; - Rxd_dl2 <=Rxd_dl1 ; - Crs_dl1 <=Crs ; - Col_dl1 <=Col ; - end - -assign MRxErr =Rx_er_dl1 ; -assign MCRS =Crs_dl1 ; - -always @ (posedge MAC_rx_clk or posedge Reset) - if (Reset) - MCrs_dv <=0; - else if(Line_loop_en) - MCrs_dv <=Tx_en; - else if(Rx_dv_dl2) - MCrs_dv <=1; - else - MCrs_dv <=0; - -always @ (posedge MAC_rx_clk or posedge Reset) - if (Reset) - Rx_odd_data_ptr <=0; - else if (!Rx_dv_dl1) - Rx_odd_data_ptr <=0; - else - Rx_odd_data_ptr <=!Rx_odd_data_ptr; - -always @ (posedge MAC_rx_clk or posedge Reset) - if (Reset) - MRxD <=0; - else if(Line_loop_en) - MRxD <=Txd; - else if(Speed[2]&&Rx_dv_dl2) - MRxD <=Rxd_dl2; - else if(Rx_dv_dl1&&Rx_odd_data_ptr) - MRxD <={Rxd_dl1[3:0],Rxd_dl2[3:0]}; - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON.v deleted file mode 100644 index c7821a97..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON.v +++ /dev/null @@ -1,180 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// RMON.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: RMON.v,v $ -// Revision 1.4 2006/06/25 04:58:56 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:53 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:16 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - -module RMON - (Clk , - Reset , - //Tx_RMON - Tx_pkt_type_rmon , - Tx_pkt_length_rmon , - Tx_apply_rmon , - Tx_pkt_err_type_rmon, - //Tx_RMON - Rx_pkt_type_rmon , - Rx_pkt_length_rmon , - Rx_apply_rmon , - Rx_pkt_err_type_rmon, - //CPU - CPU_rd_addr , - CPU_rd_apply , - CPU_rd_grant , - CPU_rd_dout - ); - - input Clk ; - input Reset ; - //Tx_RMON - input [2:0] Tx_pkt_type_rmon ; - input [15:0] Tx_pkt_length_rmon ; - input Tx_apply_rmon ; - input [2:0] Tx_pkt_err_type_rmon; - //Tx_RMON - input [2:0] Rx_pkt_type_rmon ; - input [15:0] Rx_pkt_length_rmon ; - input Rx_apply_rmon ; - input [2:0] Rx_pkt_err_type_rmon; - //CPU - input [5:0] CPU_rd_addr ; - input CPU_rd_apply ; - output CPU_rd_grant ; - output [31:0] CPU_rd_dout ; - - // ****************************************************************************** - //interface signals - // ****************************************************************************** - wire Reg_apply_0 ; - wire [4:0] Reg_addr_0 ; - wire [15:0] Reg_data_0 ; - wire Reg_next_0 ; - wire Reg_apply_1 ; - wire [4:0] Reg_addr_1 ; - wire [15:0] Reg_data_1 ; - wire Reg_next_1 ; - wire [5:0] Addra ; - wire [31:0] Dina ; - wire [31:0] Douta ; - wire Wea ; - - // ****************************************************************************** - - RMON_addr_gen - U_0_Rx_RMON_addr_gen(.Clk (Clk ), - .Reset (Reset ), - //RMON (//RMON ), - // .Pkt_type_rmon (Rx_pkt_type_rmon ), - .Pkt_length_rmon (Rx_pkt_length_rmon ), - .Apply_rmon (Rx_apply_rmon ), - .Pkt_err_type_rmon (Rx_pkt_err_type_rmon ), - //Rmon_ctrl (//Rmon_ctrl ), - .Reg_apply (Reg_apply_0 ), - .Reg_addr (Reg_addr_0 ), - .Reg_data (Reg_data_0 ), - .Reg_next (Reg_next_0 ), - //CPU (//CPU ), - .Reg_drop_apply ( )); - - RMON_addr_gen - U_0_Tx_RMON_addr_gen(.Clk (Clk ), - .Reset (Reset ), - //RMON (//RMON ), - .Pkt_type_rmon (Tx_pkt_type_rmon ), - .Pkt_length_rmon (Tx_pkt_length_rmon ), - .Apply_rmon (Tx_apply_rmon ), - .Pkt_err_type_rmon (Tx_pkt_err_type_rmon ), - //Rmon_ctrl (//Rmon_ctrl ), - .Reg_apply (Reg_apply_1 ), - .Reg_addr (Reg_addr_1 ), - .Reg_data (Reg_data_1 ), - .Reg_next (Reg_next_1 ), - //CPU (//CPU ), - .Reg_drop_apply ( )); - - RMON_ctrl - U_RMON_ctrl(.Clk (Clk ), - .Reset (Reset ), - //RMON_CTRL (//RMON_CTRL ), - .Reg_apply_0 (Reg_apply_0 ), - .Reg_addr_0 (Reg_addr_0 ), - .Reg_data_0 (Reg_data_0 ), - .Reg_next_0 (Reg_next_0 ), - .Reg_apply_1 (Reg_apply_1 ), - .Reg_addr_1 (Reg_addr_1 ), - .Reg_data_1 (Reg_data_1 ), - .Reg_next_1 (Reg_next_1 ), - //dual-port ram (//dual-port ram ), - .Addra (Addra ), - .Dina (Dina ), - .Douta (Douta ), - .Wea (Wea ), - //CPU (//CPU ), - .CPU_rd_addr (CPU_rd_addr ), - .CPU_rd_apply (CPU_rd_apply ), - .CPU_rd_grant (CPU_rd_grant ), - .CPU_rd_dout (CPU_rd_dout ) - ); - - RMON_dpram - U_Rx_RMON_dpram(.Reset (Reset ), - .Clk (Clk ), - //port-a for Rmon (//port-a for Rmon ), - .Addra (Addra ), - .Dina (Dina ), - .Douta ( ), - .Wea (Wea ), - //port-b for CPU (//port-b for CPU ), - .Addrb (Addra ), - .Doutb (Douta )); - -endmodule // RMON diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Entries deleted file mode 100644 index 5df4f14a..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/RMON_addr_gen.v/1.4/Sun Jun 25 04:58:57 2006// -/RMON_ctrl.v/1.4/Sun Jun 25 04:58:57 2006// -/RMON_dpram.v/1.2/Thu Jan 19 14:07:55 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Repository deleted file mode 100644 index 788bf5c9..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/rtl/verilog/RMON diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_addr_gen.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_addr_gen.v deleted file mode 100644 index 0a3b00cf..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_addr_gen.v +++ /dev/null @@ -1,295 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// RMON_addr_gen.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: RMON_addr_gen.v,v $ -// Revision 1.4 2006/06/25 04:58:57 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:55 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:19 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// -module RMON_addr_gen( -Clk , -Reset , -//RMON -Pkt_type_rmon , -Pkt_length_rmon , -Apply_rmon ,//pluse signal looks like eop -Pkt_err_type_rmon , -// -Reg_apply , -Reg_addr , -Reg_data , -Reg_next , -//CPU -Reg_drop_apply -); -input Clk ; -input Reset ; - //RMON -input [2:0] Pkt_type_rmon ; -input [15:0] Pkt_length_rmon ; -input Apply_rmon ;//pluse signal looks like eop -input [2:0] Pkt_err_type_rmon ; - //RMON_ctrl -output Reg_apply ; -output [4:0] Reg_addr ; -output [15:0] Reg_data ; -input Reg_next ; - //CPU -output Reg_drop_apply ; - -//****************************************************************************** -//internal signals -//****************************************************************************** -parameter StateIdle =4'd0; -parameter StatePktLength =4'd1; -parameter StatePktNumber =4'd2; -parameter StatePktType =4'd3; -parameter StatePktRange =4'd4; - -reg [3:0] CurrentState /* synthesys syn_keep=1 */; -reg [3:0] NextState; - -reg [2:0] PktTypeReg ; -reg [15:0] PktLengthReg ; -reg [2:0] PktErrTypeReg ; - -reg Reg_apply ; -reg [4:0] Reg_addr ; -reg [15:0] Reg_data ; -reg Reg_drop_apply ; -//****************************************************************************** -//register boundery signals - -//****************************************************************************** -reg Apply_rmon_dl1; -reg Apply_rmon_dl2; -reg Apply_rmon_pulse; -reg [2:0] Pkt_type_rmon_dl1 ; -reg [15:0] Pkt_length_rmon_dl1 ; -reg [2:0] Pkt_err_type_rmon_dl1 ; - -always @(posedge Clk or posedge Reset) - if (Reset) - begin - Pkt_type_rmon_dl1 <=0; - Pkt_length_rmon_dl1 <=0; - Pkt_err_type_rmon_dl1 <=0; - end - else - begin - Pkt_type_rmon_dl1 <=Pkt_type_rmon ; - Pkt_length_rmon_dl1 <=Pkt_length_rmon ; - Pkt_err_type_rmon_dl1 <=Pkt_err_type_rmon ; - end - -always @(posedge Clk or posedge Reset) - if (Reset) - begin - Apply_rmon_dl1 <=0; - Apply_rmon_dl2 <=0; - end - else - begin - Apply_rmon_dl1 <=Apply_rmon; - Apply_rmon_dl2 <=Apply_rmon_dl1; - end - -always @(Apply_rmon_dl1 or Apply_rmon_dl2) - if (Apply_rmon_dl1&!Apply_rmon_dl2) - Apply_rmon_pulse =1; - else - Apply_rmon_pulse =0; - - - -always @(posedge Clk or posedge Reset) - if (Reset) - begin - PktTypeReg <=0; - PktLengthReg <=0; - PktErrTypeReg <=0; - end - else if (Apply_rmon_pulse&&CurrentState==StateIdle) - begin - PktTypeReg <=Pkt_type_rmon_dl1 ; - PktLengthReg <=Pkt_length_rmon_dl1 ; - PktErrTypeReg <=Pkt_err_type_rmon_dl1 ; - end - - -//****************************************************************************** -//State Machine -//****************************************************************************** -always @(posedge Clk or posedge Reset) - if (Reset) - CurrentState <=StateIdle; - else - CurrentState <=NextState; - -always @(CurrentState or Apply_rmon_pulse or Reg_next) - case (CurrentState) - StateIdle: - if (Apply_rmon_pulse) - NextState =StatePktLength; - else - NextState =StateIdle; - StatePktLength: - if (Reg_next) - NextState =StatePktNumber; - else - NextState =CurrentState; - StatePktNumber: - if (Reg_next) - NextState =StatePktType; - else - NextState =CurrentState; - StatePktType: - if (Reg_next) - NextState =StatePktRange; - else - NextState =CurrentState; - StatePktRange: - if (Reg_next) - NextState =StateIdle; - else - NextState =CurrentState; - default: - NextState =StateIdle; - endcase - -//****************************************************************************** -//gen output signals -//****************************************************************************** -//Reg_apply -always @ (CurrentState) - if (CurrentState==StatePktLength||CurrentState==StatePktNumber|| - CurrentState==StatePktType||CurrentState==StatePktRange) - Reg_apply =1; - else - Reg_apply =0; - -//Reg_addr -always @ (posedge Clk or posedge Reset) - if (Reset) - Reg_addr <=0; - else case (CurrentState) - StatePktLength: - Reg_addr <=5'd00; - StatePktNumber: - Reg_addr <=5'd01; - StatePktType: - case(PktTypeReg) - 3'b011: - Reg_addr <=5'd02; //broadcast - 3'b001: - Reg_addr <=5'd03; //multicast - 3'b100: - Reg_addr <=5'd16; //pause frame - default: - Reg_addr <=5'd04; //unicast - endcase - StatePktRange: - case(PktErrTypeReg) - 3'b001: - Reg_addr <=5'd05; - 3'b010: - Reg_addr <=5'd06; - 3'b011: - Reg_addr <=5'd07; - 3'b100: - if (PktLengthReg<64) - Reg_addr <=5'd08; - else if (PktLengthReg==64) - Reg_addr <=5'd09; - else if (PktLengthReg<128) - Reg_addr <=5'd10; - else if (PktLengthReg<256) - Reg_addr <=5'd11; - else if (PktLengthReg<512) - Reg_addr <=5'd12; - else if (PktLengthReg<1024) - Reg_addr <=5'd13; - else if (PktLengthReg<1519) - Reg_addr <=5'd14; - else - Reg_addr <=5'd15; - default: - Reg_addr <=5'd05; - endcase - default: - Reg_addr <=5'd05; - endcase - -//Reg_data -always @ (CurrentState or PktLengthReg) - case (CurrentState) - StatePktLength: - Reg_data =PktLengthReg; - StatePktNumber: - Reg_data =1; - StatePktType: - Reg_data =1; - StatePktRange: - Reg_data =1; - default: - Reg_data =0; - endcase - -//Reg_drop_apply -always @ (posedge Clk or posedge Reset) - if (Reset) - Reg_drop_apply <=0; - else if (CurrentState!=StateIdle&&Apply_rmon_pulse) - Reg_drop_apply <=1; - else - Reg_drop_apply <=0; - - -endmodule - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v deleted file mode 100644 index 02ecab3f..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_ctrl.v +++ /dev/null @@ -1,290 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// RMON_ctrl.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: RMON_ctrl.v,v $ -// Revision 1.4 2006/06/25 04:58:57 maverickist -// no message -// -// Revision 1.3 2006/01/19 14:07:55 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:19 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// -module RMON_ctrl ( -Clk , -Reset , -//RMON_CTRL -Reg_apply_0 , -Reg_addr_0 , -Reg_data_0 , -Reg_next_0 , -Reg_apply_1 , -Reg_addr_1 , -Reg_data_1 , -Reg_next_1 , -//dual-port ram -Addra , -Dina , -Douta , -Wea , -//CPU -CPU_rd_addr , -CPU_rd_apply , -CPU_rd_grant , -CPU_rd_dout - -); -input Clk ; -input Reset ; - //RMON_CTRL -input Reg_apply_0 ; -input [4:0] Reg_addr_0 ; -input [15:0] Reg_data_0 ; -output Reg_next_0 ; -input Reg_apply_1 ; -input [4:0] Reg_addr_1 ; -input [15:0] Reg_data_1 ; -output Reg_next_1 ; - //dual-port ram - //port-a for Rmon -output [5:0] Addra ; -output [31:0] Dina ; -input [31:0] Douta ; -output Wea ; - //CPU -input [5:0] CPU_rd_addr ; -input CPU_rd_apply ; -output CPU_rd_grant ; -output [31:0] CPU_rd_dout ; - - - - -//****************************************************************************** -//internal signals -//****************************************************************************** - -parameter StateCPU =4'd00; -parameter StateMAC0 =4'd01; -parameter StateMAC1 =4'd02; - - -reg [3:0] CurrentState /* synthesys syn_keep=1 */; -reg [3:0] NextState; -reg [3:0] CurrentState_reg; - -reg [4:0] StepCounter; -reg [31:0] DoutaReg; -reg [5:0] Addra ; -reg [31:0] Dina; -reg Reg_next_0 ; -reg Reg_next_1 ; -reg Write; -reg Read; -reg Pipeline; -reg [31:0] CPU_rd_dout ; -reg CPU_rd_apply_reg ; -//****************************************************************************** -//State Machine -//****************************************************************************** - -always @(posedge Clk or posedge Reset) - if (Reset) - CurrentState <=StateMAC0; - else - CurrentState <=NextState; - -always @(posedge Clk or posedge Reset) - if (Reset) - CurrentState_reg <=StateMAC0; - else if(CurrentState!=StateCPU) - CurrentState_reg <=CurrentState; - -always @(CurrentState or CPU_rd_apply_reg or Reg_apply_0 or CurrentState_reg - or Reg_apply_1 - or StepCounter - ) - case(CurrentState) - StateMAC0: - if(!Reg_apply_0&&CPU_rd_apply_reg) - NextState =StateCPU; - else if(!Reg_apply_0) - NextState =StateMAC1; - else - NextState =CurrentState; - StateMAC1: - if(!Reg_apply_1&&CPU_rd_apply_reg) - NextState =StateCPU; - else if(!Reg_apply_1) - NextState =StateMAC0; - else - NextState =CurrentState; - StateCPU: - if (StepCounter==3) - case (CurrentState_reg) - StateMAC0 :NextState =StateMAC0 ; - StateMAC1 :NextState =StateMAC1 ; - default :NextState =StateMAC0; - endcase - else - NextState =CurrentState; - - default: - NextState =StateMAC0; - endcase - - - -always @(posedge Clk or posedge Reset) - if (Reset) - StepCounter <=0; - else if(NextState!=CurrentState) - StepCounter <=0; - else if (StepCounter!=4'hf) - StepCounter <=StepCounter + 1; - -//****************************************************************************** -//temp signals -//****************************************************************************** -always @(StepCounter) - if( StepCounter==1||StepCounter==4|| - StepCounter==7||StepCounter==10) - Read =1; - else - Read =0; - -always @(StepCounter or CurrentState) - if( StepCounter==2||StepCounter==5|| - StepCounter==8||StepCounter==11) - Pipeline =1; - else - Pipeline =0; - -always @(StepCounter or CurrentState) - if( StepCounter==3||StepCounter==6|| - StepCounter==9||StepCounter==12) - Write =1; - else - Write =0; - -always @(posedge Clk or posedge Reset) - if (Reset) - DoutaReg <=0; - else if (Read) - DoutaReg <=Douta; - - -//****************************************************************************** -//gen output signals -//****************************************************************************** -//Addra -always @(*) - case(CurrentState) - StateMAC0 : Addra={1'd0 ,Reg_addr_0 }; - StateMAC1 : Addra={1'd1 ,Reg_addr_1 }; - StateCPU: Addra=CPU_rd_addr; - default: Addra=0; - endcase - -//Dina -always @(posedge Clk or posedge Reset) - if (Reset) - Dina <=0; - else - case(CurrentState) - StateMAC0 : Dina<=Douta+Reg_data_0 ; - StateMAC1 : Dina<=Douta+Reg_data_1 ; - StateCPU: Dina<=0; - default: Dina<=0; - endcase - -assign Wea =Write; -//Reg_next -always @(CurrentState or Pipeline) - if(CurrentState==StateMAC0) - Reg_next_0 =Pipeline; - else - Reg_next_0 =0; - -always @(CurrentState or Pipeline) - if(CurrentState==StateMAC1) - Reg_next_1 =Pipeline; - else - Reg_next_1 =0; - - -//CPU_rd_grant -reg CPU_rd_apply_dl1; -reg CPU_rd_apply_dl2; -//rising edge -always @ (posedge Clk or posedge Reset) - if (Reset) - begin - CPU_rd_apply_dl1 <=0; - CPU_rd_apply_dl2 <=0; - end - else - begin - CPU_rd_apply_dl1 <=CPU_rd_apply; - CPU_rd_apply_dl2 <=CPU_rd_apply_dl1; - end - -always @ (posedge Clk or posedge Reset) - if (Reset) - CPU_rd_apply_reg <=0; - else if (CPU_rd_apply_dl1&!CPU_rd_apply_dl2) - CPU_rd_apply_reg <=1; - else if (CurrentState==StateCPU&&Write) - CPU_rd_apply_reg <=0; - -assign CPU_rd_grant =!CPU_rd_apply_reg; - -always @ (posedge Clk or posedge Reset) - if (Reset) - CPU_rd_dout <=0; - else if (Pipeline&&CurrentState==StateCPU) - CPU_rd_dout <=Douta; - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v deleted file mode 100644 index 4b58512c..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/RMON/RMON_dpram.v +++ /dev/null @@ -1,46 +0,0 @@ -module RMON_dpram - (Reset , - Clk , - //port-a for Rmon - Addra, - Dina, - Douta, - Wea, - //port-b for CPU - Addrb, - Doutb - ); - - input Reset ; - input Clk ; - //port-a for Rmon - input [5:0] Addra; - input [31:0] Dina; - output [31:0] Douta; - input Wea; - //port-b for CPU - input [5:0] Addrb; - output [31:0] Doutb; - // ****************************************************************************** - //internal signals - // ****************************************************************************** - - wire Clka; - wire Clkb; - assign Clka=Clk; - assign #2 Clkb=Clk; - // ****************************************************************************** - - duram #(32,6) - U_duram(.data_a (Dina ), - .data_b (32'b0 ), - .wren_a (Wea ), - .wren_b (1'b0 ), - .address_a (Addra ), - .address_b (Addrb ), - .clock_a (Clka ), - .clock_b (Clkb ), - .q_a (Douta ), - .q_b (Doutb )); - -endmodule // RMON_dpram diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_SWITCH.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_SWITCH.v deleted file mode 100644 index d18d719f..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CLK_SWITCH.v +++ /dev/null @@ -1,68 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// CLK_SWITCH.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: CLK_SWITCH.v,v $ -// Revision 1.3 2006/01/19 14:07:56 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:20 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - - -////////////////////////////////////////////////////////////////////// -// This file can only used for simulation . -// You need to replace it with your own element according to technology -////////////////////////////////////////////////////////////////////// -module CLK_SWITCH ( -input IN_0, -input IN_1, -input SW , -output OUT - -); - -assign OUT=SW?IN_1:IN_0; - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries deleted file mode 100644 index 25cf148b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries +++ /dev/null @@ -1,5 +0,0 @@ -/CLK_SWITCH.v/1.3/Thu Jan 19 14:07:56 2006// -D/altera//// -D/xilinx//// -/duram.v/1.2/Wed May 2 02:54:45 2007// -/CLK_DIV2.v/1.3/Wed May 2 06:49:15 2007// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Repository deleted file mode 100644 index 3c7177d2..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/rtl/verilog/TECH diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_DIV2.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_DIV2.v deleted file mode 100644 index ce94e2de..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_DIV2.v +++ /dev/null @@ -1,74 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// CLK_DIV2.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: CLK_DIV2.v,v $ -// Revision 1.1 2006/10/22 16:12:24 maverickist -// no message -// -// Revision 1.1 2006/06/22 09:01:41 Administrator -// no message -// -// Revision 1.2 2005/12/16 06:44:20 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - - -////////////////////////////////////////////////////////////////////// -// This file can only used for simulation . -// You need to replace it with your own element according to technology -////////////////////////////////////////////////////////////////////// - -module CLK_DIV2 ( -input Reset, -input IN, -output reg OUT -); - -always @ (posedge IN or posedge Reset) - if (Reset) - OUT <=0; - else - OUT <=!OUT; - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_SWITCH.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_SWITCH.v deleted file mode 100644 index 4e1a5d35..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CLK_SWITCH.v +++ /dev/null @@ -1,71 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// CLK_SWITCH.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: CLK_SWITCH.v,v $ -// Revision 1.1 2006/10/22 16:12:24 maverickist -// no message -// -// Revision 1.1 2006/06/22 09:01:41 Administrator -// no message -// -// Revision 1.2 2005/12/16 06:44:20 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - - -////////////////////////////////////////////////////////////////////// -// This file can only used for simulation . -// You need to replace it with your own element according to technology -////////////////////////////////////////////////////////////////////// -module CLK_SWITCH ( -input IN_0, -input IN_1, -input SW , -output OUT - -); - -assign OUT=SW?IN_1:IN_0; - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Entries deleted file mode 100644 index 426ef42e..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/CLK_DIV2.v/1.1/Sun Oct 22 16:12:24 2006// -/CLK_SWITCH.v/1.1/Sun Oct 22 16:12:24 2006// -/duram.v/1.1/Sun Oct 22 16:12:24 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Repository deleted file mode 100644 index 25356ea5..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/rtl/verilog/TECH/altera diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/duram.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/duram.v deleted file mode 100644 index b653bedd..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/altera/duram.v +++ /dev/null @@ -1,87 +0,0 @@ -module duram( -data_a, -data_b, -wren_a, -wren_b, -address_a, -address_b, -clock_a, -clock_b, -q_a, -q_b); //synthesis syn_black_box - -parameter DATA_WIDTH = 32; -parameter ADDR_WIDTH = 5; -parameter BLK_RAM_TYPE = "AUTO"; -parameter DURAM_MODE = "BIDIR_DUAL_PORT"; -parameter ADDR_DEPTH = 2**ADDR_WIDTH; - - - -input [DATA_WIDTH -1:0] data_a; -input wren_a; -input [ADDR_WIDTH -1:0] address_a; -input clock_a; -output [DATA_WIDTH -1:0] q_a; -input [DATA_WIDTH -1:0] data_b; -input wren_b; -input [ADDR_WIDTH -1:0] address_b; -input clock_b; -output [DATA_WIDTH -1:0] q_b; - - - -altsyncram U_altsyncram ( -.wren_a (wren_a), -.wren_b (wren_b), -.data_a (data_a), -.data_b (data_b), -.address_a (address_a), -.address_b (address_b), -.clock0 (clock_a), -.clock1 (clock_b), -.q_a (q_a), -.q_b (q_b), -// synopsys translate_off -.aclr0 (), -.aclr1 (), -.addressstall_a (), -.addressstall_b (), -.byteena_a (), -.byteena_b (), -.clocken0 (), -.clocken1 (), -.rden_b () -// synopsys translate_on -); - defparam - U_altsyncram.intended_device_family = "Stratix", - U_altsyncram.ram_block_type = BLK_RAM_TYPE, - U_altsyncram.operation_mode = DURAM_MODE, - U_altsyncram.width_a = DATA_WIDTH, - U_altsyncram.widthad_a = ADDR_WIDTH, -// U_altsyncram.numwords_a = 256, - U_altsyncram.width_b = DATA_WIDTH, - U_altsyncram.widthad_b = ADDR_WIDTH, -// U_altsyncram.numwords_b = 256, - U_altsyncram.lpm_type = "altsyncram", - U_altsyncram.width_byteena_a = 1, - U_altsyncram.width_byteena_b = 1, - U_altsyncram.outdata_reg_a = "UNREGISTERED", - U_altsyncram.outdata_aclr_a = "NONE", - U_altsyncram.outdata_reg_b = "UNREGISTERED", - U_altsyncram.indata_aclr_a = "NONE", - U_altsyncram.wrcontrol_aclr_a = "NONE", - U_altsyncram.address_aclr_a = "NONE", - U_altsyncram.indata_reg_b = "CLOCK1", - U_altsyncram.address_reg_b = "CLOCK1", - U_altsyncram.wrcontrol_wraddress_reg_b = "CLOCK1", - U_altsyncram.indata_aclr_b = "NONE", - U_altsyncram.wrcontrol_aclr_b = "NONE", - U_altsyncram.address_aclr_b = "NONE", - U_altsyncram.outdata_aclr_b = "NONE", - U_altsyncram.power_up_uninitialized = "FALSE"; - -endmodule - - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v deleted file mode 100644 index 00b2712a..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/clkdiv2.v +++ /dev/null @@ -1,71 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// CLK_DIV2.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode///// -//// //// -//// Author(s): //// -//// - Jon Gao (gaojon@yahoo.com) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: CLK_DIV2.v,v $ -// Revision 1.3 2006/01/19 14:07:56 maverickist -// verification is complete. -// -// Revision 1.2 2005/12/16 06:44:20 Administrator -// replaced tab with space. -// passed 9.6k length frame test. -// -// Revision 1.1.1.1 2005/12/13 01:51:44 Administrator -// no message -// - - -////////////////////////////////////////////////////////////////////// -// This file can only used for simulation . -// You need to replace it with your own element according to technology -////////////////////////////////////////////////////////////////////// - -module clkdiv2 ( -input Reset, -input IN, -output reg OUT -); - -always @ (posedge IN or posedge Reset) - if (Reset) - OUT <=0; - else - OUT <=!OUT; - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v deleted file mode 100644 index f831932b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/TECH/duram.v +++ /dev/null @@ -1,103 +0,0 @@ - - -module duram - (data_a, - data_b, - wren_a, - wren_b, - address_a, - address_b, - clock_a, - clock_b, - q_a, - q_b); - - parameter DATA_WIDTH = 32; - parameter ADDR_WIDTH = 5; - parameter ADDR_DEPTH = 1<>1) -1; // We are counting half of period - - - // Counter counts half period - always @ (posedge Clk or posedge Reset) - begin - if(Reset) - Counter[7:0] <= #Tp 8'h1; - else - begin - if(CountEq0) - begin - Counter[7:0] <= #Tp CounterPreset[7:0]; - end - else - Counter[7:0] <= #Tp Counter - 8'h1; - end - end - - - // Mdc is asserted every other half period - always @ (posedge Clk or posedge Reset) - begin - if(Reset) - Mdc <= #Tp 1'b0; - else - begin - if(CountEq0) - Mdc <= #Tp ~Mdc; - end - end - - - assign CountEq0 = Counter == 8'h0; - assign MdcEn = CountEq0 & ~Mdc; - assign MdcEn_n = CountEq0 & Mdc; - -endmodule // eth_clockgen - - - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_outputcontrol.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_outputcontrol.v deleted file mode 100644 index 9c45b088..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_outputcontrol.v +++ /dev/null @@ -1,162 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// eth_outputcontrol.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects/ethmac/ //// -//// //// -//// Author(s): //// -//// - Igor Mohor (igorM@opencores.org) //// -//// //// -//// All additional information is avaliable in the Readme.txt //// -//// file. //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: eth_outputcontrol.v,v $ -// Revision 1.2 2005/12/13 12:54:49 maverickist -// first simulation passed -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// -// Revision 1.2 2005/04/27 15:58:46 Administrator -// no message -// -// Revision 1.1.1.1 2004/12/15 06:38:54 Administrator -// no message -// -// Revision 1.4 2002/07/09 20:11:59 mohor -// Comment removed. -// -// Revision 1.3 2002/01/23 10:28:16 mohor -// Link in the header changed. -// -// Revision 1.2 2001/10/19 08:43:51 mohor -// eth_timescale.v changed to timescale.v This is done because of the -// simulation of the few cores in a one joined project. -// -// Revision 1.1 2001/08/06 14:44:29 mohor -// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex). -// Include files fixed to contain no path. -// File names and module names changed ta have a eth_ prologue in the name. -// File eth_timescale.v is used to define timescale -// All pin names on the top module are changed to contain _I, _O or _OE at the end. -// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O -// and Mdo_OE. The bidirectional signal must be created on the top level. This -// is done due to the ASIC tools. -// -// Revision 1.1 2001/07/30 21:23:42 mohor -// Directory structure changed. Files checked and joind together. -// -// Revision 1.3 2001/06/01 22:28:56 mohor -// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated. -// -// - -`timescale 1ns/10ps - -module eth_outputcontrol(Clk, Reset, InProgress, ShiftedBit, BitCounter, WriteOp, NoPre, MdcEn_n, Mdo, MdoEn); - -parameter Tp = 1; - -input Clk; // Host Clock -input Reset; // General Reset -input WriteOp; // Write Operation Latch (When asserted, write operation is in progress) -input NoPre; // No Preamble (no 32-bit preamble) -input InProgress; // Operation in progress -input ShiftedBit; // This bit is output of the shift register and is connected to the Mdo signal -input [6:0] BitCounter; // Bit Counter -input MdcEn_n; // MII Management Data Clock Enable signal is asserted for one Clk period before Mdc falls. - -output Mdo; // MII Management Data Output -output MdoEn; // MII Management Data Output Enable - -wire SerialEn; - -reg MdoEn_2d; -reg MdoEn_d; -reg MdoEn; - -reg Mdo_2d; -reg Mdo_d; -reg Mdo; // MII Management Data Output - - - -// Generation of the Serial Enable signal (enables the serialization of the data) -assign SerialEn = WriteOp & InProgress & ( BitCounter>31 | ( ( BitCounter == 0 ) & NoPre ) ) - | ~WriteOp & InProgress & (( BitCounter>31 & BitCounter<46 ) | ( ( BitCounter == 0 ) & NoPre )); - - -// Generation of the MdoEn signal -always @ (posedge Clk or posedge Reset) -begin - if(Reset) - begin - MdoEn_2d <= #Tp 1'b0; - MdoEn_d <= #Tp 1'b0; - MdoEn <= #Tp 1'b0; - end - else - begin - if(MdcEn_n) - begin - MdoEn_2d <= #Tp SerialEn | InProgress & BitCounter<32; - MdoEn_d <= #Tp MdoEn_2d; - MdoEn <= #Tp MdoEn_d; - end - end -end - - -// Generation of the Mdo signal. -always @ (posedge Clk or posedge Reset) -begin - if(Reset) - begin - Mdo_2d <= #Tp 1'b0; - Mdo_d <= #Tp 1'b0; - Mdo <= #Tp 1'b0; - end - else - begin - if(MdcEn_n) - begin - Mdo_2d <= #Tp ~SerialEn & BitCounter<32; - Mdo_d <= #Tp ShiftedBit | Mdo_2d; - Mdo <= #Tp Mdo_d; - end - end -end - - - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_shiftreg.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_shiftreg.v deleted file mode 100644 index a11ead1d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/eth_shiftreg.v +++ /dev/null @@ -1,164 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// eth_shiftreg.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects/ethmac/ //// -//// //// -//// Author(s): //// -//// - Igor Mohor (igorM@opencores.org) //// -//// //// -//// All additional information is avaliable in the Readme.txt //// -//// file. //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: eth_shiftreg.v,v $ -// Revision 1.2 2005/12/13 12:54:49 maverickist -// first simulation passed -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// -// Revision 1.2 2005/04/27 15:58:47 Administrator -// no message -// -// Revision 1.1.1.1 2004/12/15 06:38:54 Administrator -// no message -// -// Revision 1.5 2002/08/14 18:16:59 mohor -// LinkFail signal was not latching appropriate bit. -// -// Revision 1.4 2002/03/02 21:06:01 mohor -// LinkFail signal was not latching appropriate bit. -// -// Revision 1.3 2002/01/23 10:28:16 mohor -// Link in the header changed. -// -// Revision 1.2 2001/10/19 08:43:51 mohor -// eth_timescale.v changed to timescale.v This is done because of the -// simulation of the few cores in a one joined project. -// -// Revision 1.1 2001/08/06 14:44:29 mohor -// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex). -// Include files fixed to contain no path. -// File names and module names changed ta have a eth_ prologue in the name. -// File eth_timescale.v is used to define timescale -// All pin names on the top module are changed to contain _I, _O or _OE at the end. -// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O -// and Mdo_OE. The bidirectional signal must be created on the top level. This -// is done due to the ASIC tools. -// -// Revision 1.1 2001/07/30 21:23:42 mohor -// Directory structure changed. Files checked and joind together. -// -// Revision 1.3 2001/06/01 22:28:56 mohor -// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated. -// -// - -`timescale 1ns/10ps - - -module eth_shiftreg(Clk, Reset, MdcEn_n, Mdi, Fiad, Rgad, CtrlData, WriteOp, ByteSelect, - LatchByte, ShiftedBit, Prsd, LinkFail); - - -parameter Tp=1; - -input Clk; // Input clock (Host clock) -input Reset; // Reset signal -input MdcEn_n; // Enable signal is asserted for one Clk period before Mdc falls. -input Mdi; // MII input data -input [4:0] Fiad; // PHY address -input [4:0] Rgad; // Register address (within the selected PHY) -input [15:0]CtrlData; // Control data (data to be written to the PHY) -input WriteOp; // The current operation is a PHY register write operation -input [3:0] ByteSelect; // Byte select -input [1:0] LatchByte; // Byte select for latching (read operation) - -output ShiftedBit; // Bit shifted out of the shift register -output[15:0]Prsd; // Read Status Data (data read from the PHY) -output LinkFail; // Link Integrity Signal - -reg [7:0] ShiftReg; // Shift register for shifting the data in and out -reg [15:0]Prsd; -reg LinkFail; - - - - -// ShiftReg[7:0] :: Shift Register Data -always @ (posedge Clk or posedge Reset) -begin - if(Reset) - begin - ShiftReg[7:0] <= #Tp 8'h0; - Prsd[15:0] <= #Tp 16'h0; - LinkFail <= #Tp 1'b0; - end - else - begin - if(MdcEn_n) - begin - if(|ByteSelect) - begin - case (ByteSelect[3:0]) - 4'h1 : ShiftReg[7:0] <= #Tp {2'b01, ~WriteOp, WriteOp, Fiad[4:1]}; - 4'h2 : ShiftReg[7:0] <= #Tp {Fiad[0], Rgad[4:0], 2'b10}; - 4'h4 : ShiftReg[7:0] <= #Tp CtrlData[15:8]; - 4'h8 : ShiftReg[7:0] <= #Tp CtrlData[7:0]; - default : ShiftReg[7:0] <= #Tp 8'h0; - endcase - end - else - begin - ShiftReg[7:0] <= #Tp {ShiftReg[6:0], Mdi}; - if(LatchByte[0]) - begin - Prsd[7:0] <= #Tp {ShiftReg[6:0], Mdi}; - if(Rgad == 5'h01) - LinkFail <= #Tp ~ShiftReg[1]; // this is bit [2], because it is not shifted yet - end - else - begin - if(LatchByte[1]) - Prsd[15:8] <= #Tp {ShiftReg[6:0], Mdi}; - end - end - end - end -end - - -assign ShiftedBit = ShiftReg[7]; - - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/timescale.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/timescale.v deleted file mode 100644 index 4517d897..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/miim/timescale.v +++ /dev/null @@ -1,62 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// timescale.v //// -//// //// -//// This file is part of the Ethernet IP core project //// -//// http://www.opencores.org/projects/ethmac/ //// -//// //// -//// Author(s): //// -//// - Igor Mohor (igorM@opencores.org) //// -//// //// -//// All additional information is avaliable in the Readme.txt //// -//// file. //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: timescale.v,v $ -// Revision 1.2 2005/12/13 12:54:49 maverickist -// first simulation passed -// -// Revision 1.1.1.1 2005/12/13 01:51:45 Administrator -// no message -// -// Revision 1.1.1.1 2004/12/15 06:38:54 Administrator -// no message -// -// Revision 1.3 2002/01/23 10:28:16 mohor -// Link in the header changed. -// -// Revision 1.2 2001/10/19 11:36:31 mohor -// Log file added. -// -// -// - -`timescale 1ns / 1ns diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v b/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v deleted file mode 100644 index cbb67a98..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/rtl/verilog/reg_int.v +++ /dev/null @@ -1,179 +0,0 @@ -module reg_int ( -input Reset , -input Clk_reg , -input CSB , -input WRB , -input [15:0] CD_in , -output reg [15:0] CD_out , -input [7:0] CA , - //Tx host interface -output [4:0] Tx_Hwmark , -output [4:0] Tx_Lwmark , -output pause_frame_send_en , -output [15:0] pause_quanta_set , -output MAC_tx_add_en , -output FullDuplex , -output [3:0] MaxRetry , -output [5:0] IFGset , -output [7:0] MAC_tx_add_prom_data , -output [2:0] MAC_tx_add_prom_add , -output MAC_tx_add_prom_wr , -output tx_pause_en , -output xoff_cpu , -output xon_cpu , - //Rx host interface -output MAC_rx_add_chk_en , -output [7:0] MAC_rx_add_prom_data , -output [2:0] MAC_rx_add_prom_add , -output MAC_rx_add_prom_wr , -output broadcast_filter_en , -output [15:0] broadcast_bucket_depth , -output [15:0] broadcast_bucket_interval , -output RX_APPEND_CRC , -output [4:0] Rx_Hwmark , -output [4:0] Rx_Lwmark , -output CRC_chk_en , -output [5:0] RX_IFG_SET , -output [15:0] RX_MAX_LENGTH ,// 1518 -output [6:0] RX_MIN_LENGTH ,// 64 - //RMON host interface -output [5:0] CPU_rd_addr , -output CPU_rd_apply , -input CPU_rd_grant , -input [31:0] CPU_rd_dout , - //Phy int host interface -output Line_loop_en , -output [2:0] Speed , - //MII to CPU -output [7:0] Divider ,// Divider for the host clock -output [15:0] CtrlData ,// Control Data (to be written to the PHY reg.) -output [4:0] Rgad ,// Register Address (within the PHY) -output [4:0] Fiad ,// PHY Address -output NoPre ,// No Preamble (no 32-bit preamble) -output WCtrlData ,// Write Control Data operation -output RStat ,// Read Status operation -output ScanStat ,// Scan Status operation -input Busy ,// Busy Signal -input LinkFail ,// Link Integrity Signal -input Nvalid ,// Invalid Status (qualifier for the valid scan result) -input [15:0] Prsd ,// Read Status Data (data read from the PHY) -input WCtrlDataStart ,// This signals resets the WCTRLDATA bit in the MIIM Command register -input RStatStart ,// This signal resets the RSTAT BIT in the MIIM Command register -input UpdateMIIRX_DATAReg // Updates MII RX_DATA register with read data -); - - RegCPUData U_0_000(Tx_Hwmark ,7'd000,16'h0009,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_001(Tx_Lwmark ,7'd001,16'h0008,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_002(pause_frame_send_en ,7'd002,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_003(pause_quanta_set ,7'd003,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_004(IFGset ,7'd004,16'h000c,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_005(FullDuplex ,7'd005,16'h0001,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_006(MaxRetry ,7'd006,16'h0002,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_007(MAC_tx_add_en ,7'd007,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_008(MAC_tx_add_prom_data ,7'd008,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_009(MAC_tx_add_prom_add ,7'd009,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_010(MAC_tx_add_prom_wr ,7'd010,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_011(tx_pause_en ,7'd011,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_012(xoff_cpu ,7'd012,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_013(xon_cpu ,7'd013,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_014(MAC_rx_add_chk_en ,7'd014,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_015(MAC_rx_add_prom_data ,7'd015,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_016(MAC_rx_add_prom_add ,7'd016,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_017(MAC_rx_add_prom_wr ,7'd017,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_018(broadcast_filter_en ,7'd018,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_019(broadcast_bucket_depth ,7'd019,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_020(broadcast_bucket_interval,7'd020,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_021(RX_APPEND_CRC ,7'd021,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_022(Rx_Hwmark ,7'd022,16'h001a,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_023(Rx_Lwmark ,7'd023,16'h0010,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_024(CRC_chk_en ,7'd024,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_025(RX_IFG_SET ,7'd025,16'h000c,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_026(RX_MAX_LENGTH ,7'd026,16'h2710,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_027(RX_MIN_LENGTH ,7'd027,16'h0040,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_028(CPU_rd_addr ,7'd028,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_029(CPU_rd_apply ,7'd029,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); -// RegCPUData U_0_030(CPU_rd_grant ,7'd030,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); -// RegCPUData U_0_031(CPU_rd_dout_l ,7'd031,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); -// RegCPUData U_0_032(CPU_rd_dout_h ,7'd032,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_033(Line_loop_en ,7'd033,16'h0000,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - RegCPUData U_0_034(Speed ,7'd034,16'h0004,Reset,Clk_reg,!WRB,CSB,CA,CD_in); - -always @ (posedge Clk_reg or posedge Reset) - if (Reset) - CD_out <=0; - else if (!CSB&&WRB) - case (CA[7:1]) - 7'd00: CD_out<=Tx_Hwmark ; - 7'd01: CD_out<=Tx_Lwmark ; - 7'd02: CD_out<=pause_frame_send_en ; - 7'd03: CD_out<=pause_quanta_set ; - 7'd04: CD_out<=IFGset ; - 7'd05: CD_out<=FullDuplex ; - 7'd06: CD_out<=MaxRetry ; - 7'd07: CD_out<=MAC_tx_add_en ; - 7'd08: CD_out<=MAC_tx_add_prom_data ; - 7'd09: CD_out<=MAC_tx_add_prom_add ; - 7'd10: CD_out<=MAC_tx_add_prom_wr ; - 7'd11: CD_out<=tx_pause_en ; - 7'd12: CD_out<=xoff_cpu ; - 7'd13: CD_out<=xon_cpu ; - 7'd14: CD_out<=MAC_rx_add_chk_en ; - 7'd15: CD_out<=MAC_rx_add_prom_data ; - 7'd16: CD_out<=MAC_rx_add_prom_add ; - 7'd17: CD_out<=MAC_rx_add_prom_wr ; - 7'd18: CD_out<=broadcast_filter_en ; - 7'd19: CD_out<=broadcast_bucket_depth ; - 7'd20: CD_out<=broadcast_bucket_interval ; - 7'd21: CD_out<=RX_APPEND_CRC ; - 7'd22: CD_out<=Rx_Hwmark ; - 7'd23: CD_out<=Rx_Lwmark ; - 7'd24: CD_out<=CRC_chk_en ; - 7'd25: CD_out<=RX_IFG_SET ; - 7'd26: CD_out<=RX_MAX_LENGTH ; - 7'd27: CD_out<=RX_MIN_LENGTH ; - 7'd28: CD_out<=CPU_rd_addr ; - 7'd29: CD_out<=CPU_rd_apply ; - 7'd30: CD_out<=CPU_rd_grant ; - 7'd31: CD_out<=CPU_rd_dout[15:0] ; - 7'd32: CD_out<=CPU_rd_dout[31:16] ; - 7'd33: CD_out<=Line_loop_en ; - 7'd34: CD_out<=Speed ; - default: CD_out<=0 ; - endcase - else - CD_out<=0 ; - -endmodule - -module RegCPUData( -RegOut, -CA_reg_set, -RegInit, - -Reset, -Clk, -CWR_pulse, -CCSB, -CA_reg, -CD_in_reg -); -output[15:0] RegOut; -input[6:0] CA_reg_set; -input[15:0] RegInit; -// -input Reset; -input Clk; -input CWR_pulse; -input CCSB; -input[7:0] CA_reg; -input[15:0] CD_in_reg; -// -reg[15:0] RegOut; - -always @(posedge Reset or posedge Clk) - if(Reset) - RegOut <=RegInit; - else if (CWR_pulse && !CCSB && CA_reg[7:1] ==CA_reg_set[6:0]) - RegOut <=CD_in_reg; - -endmodule diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Entries deleted file mode 100644 index 9487498a..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/rtl_sim//// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Repository deleted file mode 100644 index cd76b955..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries deleted file mode 100644 index 110ed0af..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/ncsim_sim//// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Repository deleted file mode 100644 index 930bcb3d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries deleted file mode 100644 index 08bef4ec..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries +++ /dev/null @@ -1,6 +0,0 @@ -D/bin//// -D/data//// -D/log//// -D/out//// -D/run//// -D/script//// diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Repository deleted file mode 100644 index 06f0c568..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Entries deleted file mode 100644 index 75c10e88..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Entries +++ /dev/null @@ -1,12 +0,0 @@ -/cds.lib/1.2/Thu Jan 19 14:07:56 2006// -/com.nc/1.2/Fri Jan 20 12:18:05 2006// -/config.ini/1.1/Tue Dec 13 12:54:51 2005// -/hdl.var/1.1/Tue Dec 13 12:54:51 2005// -/ip_32W_check.dll/1.1/Thu Jan 19 14:07:56 2006/-kb/ -/ip_32W_check_vpi.dll/1.1/Tue Dec 13 12:54:51 2005/-kb/ -/ip_32W_gen.dll/1.1/Thu Jan 19 14:07:56 2006/-kb/ -/ip_32W_gen_vpi.dll/1.1/Tue Dec 13 12:54:51 2005/-kb/ -/sim.nc/1.3/Fri Jan 20 12:18:05 2006// -/sim_only.nc/1.1/Thu Jan 19 14:07:56 2006// -/vlog.list/1.2/Thu Jan 19 14:07:56 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Repository deleted file mode 100644 index f3861d09..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/cds.lib b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/cds.lib deleted file mode 100644 index c8b8c7c8..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/cds.lib +++ /dev/null @@ -1,2 +0,0 @@ -DEFINE work ./worknc - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/com.nc b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/com.nc deleted file mode 100644 index 566452b8..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/com.nc +++ /dev/null @@ -1,36 +0,0 @@ -if test -d worknc -then -echo worknc is ready -else -mkdir worknc -echo worknc is created -fi - -ncvlog -f vlog.list -logfile ../log/ncvlog.log - -if test $? -ne 0 -then -echo compiling err occured... -exit 1 -fi - -ncelab work.tb_top -NEVERWARN -loadvpi ip_32W_gen:PLI_register -loadvpi ip_32W_check:PLI_register -snapshot work:snap -timescale 1ns/1ps -message -access +rw -logfile ../log/ncelab.log - -if test $? -ne 0 -then -echo ncelab err occured... -exit 1 -fi - -if test -f ../log/.sim_failed -then - echo "../log/.sim_failed log file has been removed!" - rm ../log/.sim_failed -fi - -if test -f ../log/sim_succeed -then - echo "../log/sim_succeed log file has been removed!" - rm ../log/sim_succeed -fi - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/config.ini b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/config.ini deleted file mode 100644 index cbcc5a0d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/config.ini +++ /dev/null @@ -1,3 +0,0 @@ -46,1500,1,0 - -#Pkt_begin_length,Pkt_end_length,Pkt_number,Random_en diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/hdl.var b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/hdl.var deleted file mode 100644 index 1899fcea..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/hdl.var +++ /dev/null @@ -1 +0,0 @@ -DEFINE WORK work diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check.dll b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check.dll deleted file mode 100644 index 675f2fed2b5f7e8e34a7a4219e82a6b45a6e92b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check_vpi.dll b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_check_vpi.dll deleted file mode 100644 index 1b905b7e4afaafeaf67e22e7d351d3d9c1ae4f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeHw4|r77weOkC2@YYx43cQHPzMcG3u4Gjl9^2Yk_-e)a6(98Lh0s+S}s-8gm4qIsUp})g{xR;@4-nmloTS4Iq$djnF-OV z@80+N?)TpJ&3xZFd+)W^UTf{O*WP>WJtvcrJ9lzMj^lWMrg7W>r1Z&S&o6$QK=sV) zo}I}(GyOO74j77mGjFxOuGQAu(sWNt%_iH1n#RT^!FIRL)*?3A>Kbi@x0l&AHP!kS z#mC1bhgrY%y+iwcaN+59BQSpU#djY@x#jFn-u)rcYub*H(R^JW;P>7C2dv8mT0wF11XY-M?r$sY8H zq})yvhz_3^_C$e|BdK0YxkG0)XEn!VF}lxrbZ}fB8UDZe@p9b3FKDw!@U;o3Uzvgj z>6aHykwiW=j$6N|rM5<>;kXVHu;9sPDV_4kL+eF48TZJQs8|mmo|I1c&+S|DnHs0E@Hh*}_Ofv5%k8!b?- zjFk4S-^5vEPe^JHaYCX}5>jTl%T2-z#S>DBOmaym_(!S|i|WnlF`O5r!#t>!@{r;& z$uUwkHRnWXIFwJvNe)$VB4LAx#3P>ZFEUM{30Y#6i+JUaYX|--8u0eM;4~7vB+^tG znKR@$V}Q^h&xmt9XC3m4_RgYY>|-3}hdkq?(2yrYNx*Z)tG<2(>p@twG~xg$Rn~L$ zhAWKf0>k zpl*(|eSOGtVg^JEc~0Fso0K|D0-?8_sFXmS>=_M|oG4YDIwN~uSjX)n-5_B4k4&jZ(zRC8J9Du(AXl89|NIZgfE+1-CONhyEbSRU$*Q#`x-RjX3+y0IkGoo`UeclW;sF|Qjvp>A)Cj_)bo z-Cb%_JSXI?HVwUbo}R`nE+s%2Ejh3T7Q>KBhj_VsESLx1k@_HNESLs|llo)ilCj`d z838mI3ts1MqY*MQwR!&zDrm86$klU5$!_(l)p3S`eV)d+8pN+CC1cXrnWgnJq5CQ| z2e%l~VYA{H^VW0Fvs8T(1_Oo>UlH~gGN@-vUSfucVaZ2UsXq_Vc$oB&d*VtAHQ*rN zp8;@mX(Yv;vXbLeMc0Td<}oQnNo;stUj>J&iYSKJ74oXi2;mv@wp6`2QaptoLr=X3 z>nSBiWlS)zJ0oLql$=n?Psyb)_KCqfE4pxEDBp}OU}~ONg%R+o#;K}8we2Hjbb6?3 z{3E&s zT|_CJHgxp~S1GL7YiGBgvq=a3tTPGDRK80jue~R;H26zhx=t(a=;EO6*?Ks{5MxEI zp_H49v+CC%-9Juy0K`;qPMP=9staL?_30BcU^43I?o zA(@HOX{B@FE(gD_lY^F;dQ3)-)&5dXQONz8rHg|prgHlP#m7YP))aZxPxF`{3cBHo z@JRYJg+>%VAc}IU^xjMiXGH!-@Iu(cita7Bq?Z zT8mXv+HL=kp_cm1HE41a7o1pC{8lOqgbR02VSl)=n+iV-7gQ=dq8HR}Aq}?rQ|<Z3io|vMy=Jn@MZ;D>6zS&J$yTxBK@J|2G&vKHSJi+Oh^DjmFnN zdXn$JwnYCEMxWs4HlXkWy|KCjDcjW)kF|f?G@rQ$S>McfxetlgpypF(BhWEHpPwgA z-mn@pu4a;J)a_%Yu0VDn5iMXuSbD554k4~(2$O#|72?AzB9@B7h?Av0K+2SpM$F+& z(f>3xIK>F~@O~Mbu6V|2=6kTTo4+sp!D2krKhC>6%|BRQjYV-H8=hN)@Bzx{<&)w|#2zx%vp1as{Cq2{J z5UprJvPs2s;i{?zq;1Lk=`Gg-#jA6G>guZ!uW}V8n*<``)j=4TaBtcB1}YRZbf=ww zR$FFNs57wjP}Q8S3!<^!uudAZNPilwsOPk_oh^`(coQV9BMByh_<)v}f?_?lX9qM; zdvvyz&Tm6zFQG90@d2dFVft?&ly%Q8JmvU@@$5fsGWPG;iJX?W5RCThf(UgMZr}I# zfmH2?JJess<8cw|znTn3&|+&*Q*XHAkQu=X^-27Ti{T!)PK&2HSL|Ut#aPu2a`lJQ z@D?Z*{54{om$6rrDQis?ifFD>+O6p1bSax!alsp<34;(TO~i=T_dX0gu-Z?rtSHlt zB4b8IHDRo}`a}xjR#N$g&=YNBjJ6s0j7o2rdIm8~*9Br@6mKM=BTnvz=LQH&Qxx_29B zprD27N!2QWhj9ilu=c)sj_l*7Z!;{r`n+1A6E^PZ+d~5>B&s`@XNZ=_$U0DqcGSGg ze$q9!8)W6mEqOpcP}sWzrHV==I}61?v)Rw(K^G3ZwRG(bKi5Gq9%Z%7{G_w|RvJtw za5F~RUa4NEr4f_MwNnMJT{Ga%!!S+OGDm~5)I>B4Nb@_9;iUPb6<2TA(}8p-whd2o zkGo@_mns704yI_p-0kjfO;A=R^9#J@?UzW;mMf&bgrJHZvREcTDaZO_DyvZPt;$~( z+-FwqM3@$;?0?^)yrSG6s(XpY!hD@Bfgm&s|?Rj+N2pmyK&f%12;8&E1za$0(QFuL}2KRa8oO zcj*-Ep9Q0i!BZT#f_JYli5q%~uiz!k)?H$m=m|4A>a%pdO=`w(LrI?l{qIsgbqai)7stQc;Y zXO;GL(-7-?l|1W2QGrfSWbN2m0Gmkb`3Z)R+Dw|*P=*Q7Y}VdjD6RSO>`A0~$(&wE zq&X7cJNi$@C`TCKf+KU;wQ*rK^FXz`-E5pqSjf`*G!yf0uGeHKU2FKBkkf@9ix9A^fOf_MOr7i zPJ&cOC{y1=u}ZnkDjSpntK`(gE9`w|EkMe1nU)1s#VTFW*e%Yqkiyi-PFG+S5P5uaqWoAHc+4 z=e}s^q<|?rNop`b+80dD0W1Q6ZBG8;ae3{?4R>`H%76)r2v;{LB_s1@1Q$=87mPNr zgL&x1LU{g_f<@g8F-IH19K7CtvVer-|gzN~E@#3l(i;RE+x4KzJtQx+3SX_~{hTelwN`40g^ZiL z)GQ`wo2`>VX!0WtxmsFj(&QZZ0bYxxsjV!vN+wMitX{`%rr7>gsoZB(@=f-WU48JU z(*^LSf%@FKKHA>y40NWjz0DJn^GtFcFZG#Lz&sz-^Zox}F>b{+Pay{_a$#K%nV2x6 z&wdBi4t$SZl5k(zk`-8Hm5RnSse8l%rw??8kPPL8Mv=gT-JuU~-Y(*YI#eJC8B1&f zMWgPQHxD7C4%}{z9fuFs8>&Gj=bHj6aKUDh^LeTE(Lzo>_$W=jo}~pnM<)6^`>^zM zuPhLa)7yBq%qqV={@%r7^SmZyKp!gsra({>qaF2Iag6kv@KA@r!p~C?uYg$9=TXGb zasW3|1_V!Lbv8qo5&rixK9bxtZOBJIu zt_kTqB^-h>VbO(tlQ;ufu7{Se^p}+(<<_hFWeD~QwEAIp7>Iq)c02~z6*?%aY@sJt1%zK zV$AGxBj-rtG2*n2m3&^%LMQe(WKBUH&yE7=BjdIoYD{r0k)z>Tw|0$mxNxB21yYNR zUz}H6JRLrHBUdF2^4llKa@+p6PLIX?C{$G9EYLO+hEAi?kzMPVmN_6?nUyUVmQ|=W zoOY@L!Zbrr4e-yC_j=VooMU6}J};*|Nq%XnpRRrn_ODX1iG%Yx!Bt+V{s~eQwaU|x zn=M>luKp7mxd*D`X^h-Yzd*wXJuN2uH@p><>eZ}ONIINQB&Y2L>*{rT z9zmi9HA+d6;z=m0kmhlUXvI;`JVdTWaZ;BinB)w&93uJ-=k;P?kJpgbap`*D=FVfn ze9Qi07aq)S=B&J6)(kl6P3y6CU$r!k<$ufa!B<#;@3@g$N(`3f1q&D^mR0vy^DO({ zydX_w65Es1{pF>QViTrA%Jhy))5YP=W1_JrXo3vBW244Nz9g>0iFtP#diGd}HkRm& zdBJlGe+2lc$}8mwTFj8gME$a#>~P*C@_AVONu`As1`OhSyXI<765>1B4A%#|29Z|| z1#yfq!5H>quJRitSJ};PuVu^x!8@x$N6hNhnyFapYz6Xq6 zhaHbQ`w$*DWLvtnBLg2Y>+LO_hfv<=`m!=8%*@N%=t>el)RVs~7*w+F0K3=5%gXY~ z%Dfe2WpZJ%1M$A<4hpH|>izHQQwD3Ka6?&HxfdHnGN`mS=pc`RRjt5fca?lsvK5!lNt+I&g+yRAui9EBz{DX3k!zw6t!HP4KY~Cp)+s45S&q7 zS)uk|)+4aTV$?tk2ZJ&8K3ZG!OCVg)%$Bn0G6SOoHFzy?8_4wAlTX|>d^K|0Fwak4 zHmON?^u7*rR)zObjj&|DDw@~ZNA|+bbf5Ur0Tnk9ZmTc@>vev1TP+r?a}~n_}xum!@4!w*{_&|r2L|8N<0 zUv&u5%&K; z*Lt{{zm0Jn!Tp(zsPw8IOcwkCt9=UyZT|@Rq|L+QY9tb1u-SpUGXm2@?Qdr<}RuwQx2IOv|(Y;uoV z9&CdZFAhNwQYF4HXffmKEaMR^xhv%s+^i)B zZbJ1=q)(%`GY^jj$^dS7t!G;I6+KH0-OCI;OJl&cds&P$Xq1K+^WjP6f#uvJEu%6> zgE7)j45{$MB-KuxW+^C^QO%CY8nm}Si4bIt0Y(640H*-21BL-g;kVAng%6!Usv=d9 zjvyUDI*N1@=@`;6q~l1(k%o|BxeuV*oN?4R9g%ds8rVs_otoEs z9>ze&Pgnz{h|mUv#W)(dLSg$SU$%ez$LAjpLGHd=Aw|3RdsulrvfvdNj}P_nSU}@( z0J?yJh<6@AUIkcD=vivK;kE8%#+6`vJ6Uf36t<*Sxc>4Oy&ofez^uPx3gylzbkH8X z3y;04D$=#5*!BOO5FLlyP8X^mfV^pl_hjai17Bc7cuU zBe_By4Z=eCOI2qCMF&*9+gJ%%^HsMKjjRD?SiW0hd_2i=NaMJpJILBgqcWi zT^kepO<=1Qj1O#`2$}+0KMooLTSE|F4)edJXI4J8(Aw^+mxV>VAB>f+M%=;VD2A{k zW!9vucR=sxydZq#BDN|>x{^{RYDm5sk+`XPV56QHTo%Jk7ODrj!?o1Eu=oVMdwG%W zVV#5pzOav}=wq_p$Jv+rn9r=Xpno8cKSBIi?&HZEb(wJN&NZp5qEZu0YBy~j*vQhX zO$hu%TprW|V?XIWZ|SU{+_3}Q*hpL{LW|UwvLw6BN4rYEqk6G(c48RW{+$fU`aFAI z)r)z}K((s|nK3;7)X(I(g$S!H-}nHX>S%u-I}6>21WG>WnbmpB()n`~Ec^2{#3JrP zmT%HowxgTHV|l^%FS9)VRKT%HUK{HF6aTZoqYp!)4mYR#T3FaqYQRt+7BpD)Uvdv^ z!Ci8w=i411FzqBZdG4Xjf6dSDaB<@6xB`*}On3!_Z|R4J55+D-pP@PD-9x=s2T8I0 zJJ9w;8_JJAUbTmGe>_+Y23s}G(p7{xi!EE%(3F==TXD;|3U+_56JKT;oF>mD0roz| z?Ww1p3dXzUo@m7Uo~eEd4b^|a12+do9OBtw8Gge{^N9jc(S(R&A>~OyZT@Oz>W@E( z>}JT2XzAr3=rZ{Lak^zMCXaBvr1HYmk{U0Viv%NX+z;^B`UVbM$(}rp3m4R}T>aN|Ozo8k&rk<;|OKp}j0XY2@qfjswM z%UF-+FN0lFvSEs5lvM`G&s+A#S@!q2`?t)+9qBRel5LYJpZ#L zOL~@Qoqgib>NWM)-A68A4AN*^bkSa*z_!AR7iALA9Y*sp(U4*llhqY^BefTrGa7s? z|7jXO{Yg%kZY$`d!*|*H0s#`aQJHn&kU_XgA9`!guGkR>>E4+KA;CEp4#fyoy~;*a z;2nIoV>eZDdHMM;z>C4_~k@8_JYrdUq;i|eyO6G z;+F0bpGI4)F^KQ#2g2t=)i!0Z$X= z?-9SS8j?ioO81-w zQv2PWGe~+Vk3-v4+EMzhLzvl1SRi8YRkm^hr@*8L;QEEQVH?1g#li96VeHlBO5B~_ zUs0y~9`6MtTpXlW2vL$%yaHn(HU;PPOk3K0#j@qXd@QLq>-A!gEuLbj^sZ5e*9lO2 zE3OH!Cs^04s~*rJXW>d}YU%6&({L>PzTUI}6}O3()~wUR7#0UD7ygGH3QdcILRaDb zNe{c;!v4Duq0pDZp^#Y*g~UPm>L9&yggp|unflvD$no}LjHkVCxe#aXldnLWwOkyB z!eUoMN334;ntvPy^`Fk+thK$+lJnNe^C`uvnh0KGpNdP9Y!jAPacL#4hS!w&N6~=o zJcw-)6EIk?wMm{!G{NgDE6e;NAfUP=R%hwF9t-ABEY;I_+SQ)$fK|iozGzh+MNL(e z>`CaQTDlsTtBG?oF-fo2a7!TK0-6||rT4H{7<8O5v56+OAIlzFC1NaMr+AXt&E;uR zo>voXTH+kEQ}C7A8TZ?k&PULUzQE(Zgf|kCLuxbjV{}hBEPGB#B_S<1n_dJ^sKatQ z!zgRdxY|z%8_P8Dlr8}`=Mlc>bO}1ks&p;M6w0V9o^W3jQZIPoc_Gi$KF88Y0f<|i z^Yt(5UHfzs+$ML?6%F=4-w}K-Tr1UFU=FPSW|5y!JHH`N~P1 z?I#JLK>FLlGq`9J&wNTXDEtWYsjL+F%F5t0U73n9zm0Zd>J{Di;9?11uib}DTNymt zK*{Q4oN$u)u45H}6&mi&oSb0FQ_d~N{rY(n)`_tTP(7d=qL2mdWL^C^?nJRLbni7| zq!IZJh&l9vFW$JRU>=1)*9--qC68O3xl~u7dlF`?mDN}}Ux6{|WA4~PJjh#;70(=S zitQc6w4UlSxM`p^XMc286Z62b2n?^=?a}cxlEWVSdx;6>B*_7 zw{&|I@C|=z)Q5**N?5C$zL)WHn3{BkD1x}P@Ctf+iq04p^Lf0w#2p|95iGQfV63ci z%mG@#2GE?Qxwn48Z=$)ar2)%@=Qe6=${i-9*(^+5K(!u)mnR-Oc57M7ZoRc067tB7T~ z4V0BW*Maj)FfN?Imvr)NCb@u@?=@GgImC0r!xaUoDR&g4q@dr@2wqXC#J9$4F*K%& zd90I`t_LBKz28Q!zT@&+E(j^DX60)p>OoDwyjj}z5YGvoit@m{R&Dh|{MvQkFr!bf zw`GB&+ zS|DnHs0E@Hh*}_Ofv5$d7KmCPYJvaPEFe_i=iC4@@w;`QN{)LE@Fw78z%ziofNuj{ zCV z*A&*D&!nwsxkn_z)`)#mQprvm8=4@l@g7@qQ(dFL+yIzbU#)J>lDZ8oO|4BE1zSa3 zD-Bh_f(5o!VFxX)ySt^Ph5iPXi-S`}&>r&Jd2w-G{YNu1;lkXaMT@wsNG}^};N4>5 zy^T#<8gn>qnNKLLX%+I}0-Jr_re?93;q-E4U1M$27OuqC+FEmuZ%I>IJ}0*NTI{Kd zY8x6z^5qY1C$)8M&U!b1@>gbY)~f)N|3};%{s5q^zD)l#=G;y%{z`BP?pmxF9B`lY z`Tu!cxh7_Fb6s_d@1D9=_*ix8)>dI7$0dCdyWwumz%cjt1nx^L*NR^}<+y(^2pg+w zn>JzzY4vjntfsjI{sJBrR;mM6%tmeoEBR|0Ya4tVH=UKht$K4!g9rpGZ*1}Ts+;bv z$Bg5e8|uKu*Rl~yjy|H_HxyxY%5R{b-h7#Sqo8TiCh#k+YxL!Fc&XhdRQOt2v08B4 zj~H#CuT^Mi+RFWql?pH~p$PY4OohI>EQL7k$E=QJx#uD^x)AO$R=3Kh7uz`x))e^e z2DlveXw2&Hl=MYV+(o99*wTX86hUr^Df0!r7q-mK@t0Orsk;+T!8hop_ zHv2fQUR#6puX%an#-@BOnJ^_ywPJ&hs8(W*q)KX<6M=LTlBMtuV+m;{UgdIMZk2v3ITI3hP>FXb^cgRqTRVK_5{XAos)O2-I zM1Af>LvcY#O|#x-Q1wkML&GxStJjiMK~eEZ3}|kRStT@-H*Uc?!rkUswbE1kS!+k+ zH+ApE{5N3oN8k>W?*gm`Ja6T=R-_zP*IaE+t*qYQ_iebBd9Am2`Q+sKtfeE0i&`LR zfv5$d7KmCPYJvYo3pC+f(f^e=?CXpsdFr-~MxIrxZeNvYOQwTfwSXYAdNV>+9E)3g z_lb3gV{ECm$x{{1KXEqJ!q&850}i*fnItz(@Z<39uWPBDB(=5r8f)o5PC>YD6Hc$K z_uBA32AUchw%QOU*VWpZHrg^%+ENy#v@Hgt0_+i9D{o(9o1c=}Mqpd+wH5ms?-BfH zpE*CpQEMw$Rd9_}s%=Y6t8Fq+uC>jJ zkbEj7MW*t(+qanikryNDa`tjQJ|EIyIaIP1jZUS7#qkc=*j1_bT+g>=BIomjy3jr zy*Av<)cRV;A?O%S-A}Qnq@*q;{~`gOp!qCS*qDDd{|4PzU~aN<%{{(|n3@gj9!9Tc ze#>Nq>G6Lq;AwiHdLu&qTC}@t1afp;w=f%wWu1@4aKwF(t z3cDw`#l~^WwTWjK3X}C;^BJdiw(z0zJXPXVFD@BxQQ}Q|ZhRGIosM)EDYbhNDNX8a zNM|7}MoRzg;U=WBk%me+YZB7KNa^qCA3=I8(pscnLb?zs{YDm#v<>MP-UOnHjx$K_ zNBTNa`s2i-Na-&x`j8@FA43fNEd%Zdq3`+!w>~&eM{`fSt!H{4*VFAkK20pRyazg1 z`XuQ4_q@5srdR*XbNhsj$_uBz{7=&7hw1l&{?*6MJa#Sj$H&yi)_gwy2YOkH(pZiw zeRJKLHm>^3`ZrVmmj3vOw@!bElimXn&2$o5?03kd(NEL@Q42&Z5Vb(m0#OS@EfBRp z)B^uK7NAHR7x=L$g(-KY_)_jm`DV&*QeICvnX-6s^Ww)+kEfnaU1P7dZ?NBEKb2-l zpOb!bdU|?6dS&{q^e59z8O{t(#zPs;Wc*vku?(Zr?cC`6hVw_xUpj}K$DAjeZ#mC6 z-*b*SFE~Ta7?;U)o2$_!xFlDP>qoA~UHe@7T?bu*u3^_}u9L36x~6B&%Dg&rS!Pw{ zFEfv3zMc6|rqP|^&TtpGSGw1^eeMRg;QpceC+>fC|H|F(9&*3o{&)8o_n+Nk?vOhs zD?TeRt2U=4r!D8(Ip529BIoIxgE>Pvzt0)TxtQ~DPE4*TH!(Lg*O^<8yF9lnw<@QkJHcrdFjkq_(7Xr#_VW-P9kaKA!rs)P1RasV}9zn>vd0`^J2pGo9RbI896xaEbv*C*H^9SH}kp7S2E4+8{Kwyj=RKN?e21a+r8WUl=}tu zA7O#?tQA@QEFo)W*5g^vWgW^gW!tj9l6`BoBiossmF>$`vLDZWI(uLCGua2S4`%me zAI?6KePvEk&YT=uPI699&UbV6<@_rw)|YcQ=bfAxx!Jjexkb6fx!&B>xp(B=mAgLo zXSw@wpUFLtdoY(v;W#I3c2mltl>Wsh7psf^y4aL@W$KqwOH$XQZc6=D>aNsZroNc^ za_Xz8Z=`;Z%G=}YSJ~&Cv@3o8euiLxqN9@P!Z`e=S-?3k^bB-p52wU!T z{HtTw@t$Mc5u28nmY%jGZFSn+Y4@c)n06%XblQKUeULVmHl7wro1cDLx-Y#Uy*XV- zZ%f~n-jUv!-kp9d{Y3hy^wa5Q(pO}ZXEbMQ$=H_Bk{Z03e+(+HcthHHtvYyO3ob^W5TUn!7?K_ZMYS%AAN70fFy*Tn;d3Gf+NYnt%olHXHH2;IcguVkJ&?Z zp4H89Bs&&59F8nUp`+Nb+Hseo*3sY)h&cL*S|DnHs0E@Hh*}_Ofv5$d7KmCPYJsQ) I{*xB?pA9;(xBvhE diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen.dll b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen.dll deleted file mode 100644 index 9afbaed18ad503f756212b4d24899a29d5c62d6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 zcmeFa4_s8oxj%fCU0{KQT@@4!#x-J^gv0emi}SVexOLFR!U>w6AYi_dr9%TKnpX`ucUe{r)O@gHUg;t+(ecEwZm&S6MYH zGBP~gkNQpJ{I-4nB?`x>m0bwf$JQ&&VlP3xXyv=9JtPb>m0bwf$JQ& z&Vm0AIZ!O05znM{yLt?0wA*zwbvtM4cD-{~G)27&u^;Ysoy=xYACcvA^|+N=qc~1H zV3Pk@)`|L#b{2_eZm;9&ij@pjXqH^>$gX$Xb*0M8K*q4xG|UN;YjV+s5~kx&E=6*j zqrLwLv@aJ77b<^68n`9bkX$^ptj?euVHv>JD>n6p@{?=UQ}shSn6g)|?xyOlVYl+* z%hd~p3Q_%uvDFh%{ROHn`>QwU)yGlw;^Ae=1DC72hTN#`zPfr3RbT9{o~2hm4#qIz zZ_)Ex+WDC^X9#eHp22Wy7S=N*Ot16|DuK5VEb5y!o;ZCP31ljIbcP}@QF5L46`U+o z_UH&|;=TjS2mOgkO6>I~UZ%u<`V;3V@w`8g@h?a`v!HWlAs0HrH`V zj}8FtN7u}L5;b1bGaz2~GWi&gT*Ec@p@hAxm;8jc>;WO-uj!W)V(C@YR8s8+bi}AV z6}5d3W?w;Hq3@{|0JzN8@-iaioGz?sC5%r|{bh=sA&rw6Qn&Ieor0QF;$ga;kXrTv zRQA!Y*kMO6-dQHQ`XFtxkB}nc^fE;ZCZ@znu9LD3UvOG7%TKYYtZiw&Nyi~Giljnw z0I*NWxA-9;Jo9ZjSa(h|y20rM-SgvE!jJl-lphoCMCi2G9+l?m+d2Wrfjcl*bpb2r6FW?Jd*c2m=OOFkUr^&NsxcEL zR`2HEe6eRZTWpV(T*hJe_& z+yK?_9fq7FK0ukvkEkj0s}NnL4!u6_%MI7u%A%|BV0I@k80_oxJPHZg8Jq{C02)H{fq^wIAq&^0&9>dev~W^E28KC%HdHpYwmV2Cjf{t2=%hdW^@gA zaT++pMgVwcGZqhb1z~<2#_*t43T(!L;VuK_;9(}?VDA5wQ<+9HvXE{ zCR|f1`kGoX*VM9KQ)~J)wQjnm){JXv#a~lv<~6m<*VKXzyNZjhYieP1jdH`>@i7E| zxZ8R)liFP7)}T?)Zr2crvl=!=@t8#=Jk2%KI8lFNZN)>am-(vx9&+8$4@sx@+Zuiq zVQs}00PCxA@eJ0J!y5h|i$<44azSVY{LK{%FgY2JiwB&=HmDbunPx=v%5iMl2T+&P z6V*A{@|5>E&gQ^;0>Lsf=|TU7#Q_b1rM`;pU}D;K3biz*eTO?fFmL++DPS3j z*iS1%fb^RI!Zh(v1ZGyu-Dn|pCTpx0*1hyAChFQm7a~uy_ESCH2wqG1QjD2$s9U83i`E*a8%-caiEr_fW-HU~bK^ z==p7UVe=zLDX{nlSP=_$!29!l-WQ)|96T>Jowqd=ImPhiMm-7;=j&C68& zdsc2{N)HgI_8MjH^H&Q9p!#&p9?JiTp5MQWWMGU?1PF1RXB{}dt?4`mBAW^^6X7L5 zN|0hgIlw3#z-$}VgrPGe_8G9ahD;9~>)&?PF7EjR@G8V+=-9`2qv~%l!=g~Kw2;84 z&rqv}wVCI=oK2fKz<$rLUxodiX1{&x_ayu6WxwyR-=pmJF#GMH-xSlc_~qlx3Iu~I zE$tMy#GCpy-h?cZ5{Imo_EKSDT5i0VCoq%pL%>nqpB?R;B{C{HQx1bM8zV}TzEHg= zu4Pa#))`ibT~_hKfs#5-OR?=iD=~>^ag|=nBfhQ4d6r$-e6ZM~sp-2!es+oS9UI4$ z$V18u#M%a%Qe&l;XK86~3I@D7Ue1dHuOi%voeHYsxKg=WthR9Ft2%wT@fJ5Iv`|o{ zjAIo$mE@^JlVIqiGU@>f%1bv;xvjGGD$K;($oUq>n;W9H_0#hm^wVNs z`Hg21dgKEw2Kkh1ma|RnPB}N;w6h&d=-ffSwe4RnFml12&)&?j+>RmJOzmNgqiy}R zGl#)bpKHLa#bkgRK5S96m{dGf%dU^BoxvYt0v4P|C`c%jn1#fLNPI|%=}3Hl#0Qj! zMxqaiK1zh{=tZQud@Zxl5g?rnq~egq-yjYJ3FE89rXw65AvT@l_~1Ij3N;k7vJtE= z@%V(keT3pg{FUz{EUVns*Rk)%&lmJFL_dS{^Ev$txRvFQ42&f4KwQf~K1ebgB(X6Y zgsoakE}E_5cE&=ils3pbWW|cDF~{woEGWdt$%vVT>bQflY&-4vl_KNuOUvz!opE^5 zVzPl~XEfwS*>V%d?K}^xI!%kD zvb10~5DLM{vjA5@sNx+UOnnO+ID~gnB$t^>WWnN*n{1HWFfo&Aaq7+Dhyl_$5+vNT zBNlW(^1?hNMcPq3Sn!~j!Dz@9t#6i4I%EcfY6R-bB0yw?xgK|sa(V3v9qn}-@u!Al+4^KVWMnaT+|s_2MkgPm zJO)H)$Ql@~`6xv_s$S%HFKwzBV8!ws%aOe`cZUV35|5neM$)(5Qp06~77nv=l;expZv9W%qX0WaBlBmNM-DVyOzovpCa) z2Tq(xRB?5Noj7G<>kb}z9TJ6ptN{Dv@(+^5+TPw8-~hQ8(=A_|z&NkslhaJ!lHzxVxpMVc%nhTu>&J zL9-9YmI;GwgCsoManV#aZ&A5aU~#^^!6-FZtOL0j*9?Q{%;sK7TQw{SbR!Ie;1f3L&7)CSWwnTPBz!_GrSR*;qCt zZ8n1#`BH~wS}JPuHW=&XmD76Y6gF;WtS!$0MFM7ctQUwvOe%}+aUKGh8-gYD`H-<} zSiS@VRNeW-h9LP1=iB^)m~-Sple2IP^=|-?_r%AHw&T;6U#5N>quyT}p#J#uC$FHs z(8N%h1CaC#FbNp$GLcQ@E|c>v zv#`2tai~eu?5zdXk&ae8H_r4nSveuSh6NWXjwFP3s?I5vhX}31NPh>_8L*Dc;&~eIY%(wiC z1fPwCqC)Lmy_{9?GbhY#W=Vg|Y@7H(E4^YJubgcg$zPxYvPe z0gDz%gTxt3ecE6Ym1sGVs!EYGm{cQxc2bd)LfwQ?I_MuNW11-{K|>y2#v=fxv5`MX zJT-uE0a057k#C9;k7y@86$^$mNjR_CAmo^I9D^qmB(c!jK`qI>&iADW9u=p%g%k7Il+uPK&qcm zy_*B|B3T)O{}k|1N-74l+}rXVK>6q*<&Q{~%6Ho&gS@~drfLG_$bKs_rKya{1vc3x zexYHp%ty^--XlV!znMBa8Yyo%xFz`5sfFqVtSRN?7fo__ z0`$*WEEhXQOiRR(d0R2?S2-_OnaQ8Xm2HbdOyUTJa75FsBOTtR2(A@5LIfL%@{tptg*itb zL3`Mi)?D?@F@TZ2C4pfZ_AMxtVc%XxEwbN4``#0uhLH^m%ajNyTv|MC7$ifn2?NGs zz9k0AN*>1hk)v7;`ZgP+EMbasDv7)>9=M!rcnhKaxdu6s**D+B27*2WB5A%U@i;VR zhmh#YmE0I|Zhczw1ZK097?;j&zCzR|CpLlkYtvw>Igo={&Wur{SMbf=rmvKp-BO;7 zzpc(x!`b~)t4E7j!LUhr79kodv*W#%cF0rT0?1Qm-Mrd%n%?g5H7ByU%{44#o26`%*lxZH?738D>iEcN z+>B`+vn!k3{j^}gV8)2<|1P-g`&T*{>HK12hHs%w%pcOk)-zbBYrfWDMBUlL1Bk%F z*5S`!{LVLZdlh6*W-y`kX{JvClYgm6 zUTOwPi5^Vy!!*cX&PX_7z)TM#p!M;efhTekS?Opd_bpBu9$gHSo%h9Iinq!4vifB< zsnje%*_N85yUqA@mYRi?qtodG|8zRt+ce>t>C~6IJy+-Q+bZT;09-qjHZ#hhNdmJT z83|}`<|bnZNsA3M42vzkJcBfUSjtTv>R$*ZLfbAtWc8&JN6Rd?0yD4h&M8 zRAwPXhYaXCTI8%6bPeNGv{1i=VZRb&1>lf#saaSE)zWyQuKbRiPb$(LCf%{Bv#1y&V@rIrGqVpm%_=@h zTkMbclRM=vc@)@E=TO}<>m{=F2yp3%5 z-4vw@52eoEl=5*NkhUc3IkctH|49aL0~;3D}u;R-DTz{Ya7f;2sUNa+o~-WE;-su zr4T94EajQ}MhDv6!N>p%=zocV?HX-QnFV51=U`rBHnvT$IxGe;7kW!q-9URLFov43 zINtN1CAmjDW%OPQ66RL_)NJ6BY^YT&gUqV@{ zq2dyYU3?2R53^Wp;-rvrxpURM*jp*kx?Cw5@i+z@?>V%zly>lWYr&3PKL&eDuV62i zD(71UJ48Man{4d=tZro%*(!+fQx~XHD3=qk3kl+*+{y%hkq{Iyl;>o~w)~t`lsow# zxf`OP8zK&1ka??A4&4)|cWoh1aLw&f*%&H+%XQ8ml^wP2 zUS-G|LtJN_$*nv`D8~@j$%r$d(eW^(X|6s@w7%R0N8$fhtHeu79?s%diI;BUlf_GU z{BrTqB0gNav{;xs;yS0gyju-(gxkGagJ%2kf`l2G>!?`O%ZXJdIe9?+#)#{4^(OIB z4L?b|w1%o}Vr}Mtrhhtq>MB>sWoN`o zcUW7t0-(#)Z|Hvr56JZWA_Ha)6bVtS&(Ndq7n%4~gT+e;SPD0pwF10~VUKbIc;wzv ztST`fG@0RI=J+t!PRk&iTjBp?4}n)~sWTNR?W9N0(H$gvZKf4sAH7?6F3tldo+fFo z)2%n=G3@IvWB*m^)W=XkfXU1cxRQYsFp%e{tTlw_7!@ei+Oq#fYe8dL6Pr$h#muXE zsfrI1FS)EOUJUfn);Dy8ROv*%1t%6*0A|tJI=D3?PiNDO0azh;I%L(#$bD7^2ILh? zA#>)nOko1gm;#v~rl`N7@mZuaklzdxmcleQ2r-~{Yi%jOljb_?y_xg1&^vQm-*lbR zgm?0xwKsu3P;33S0tONV_3b+Ecc^+HwOb*j9~<`d!UokJL6divsI0d(?<7%DjMioa zUC+*Ks-{Q>XdXs5OK%>gQI^B9xu0mmD@ttRlM_7 zSzCTW?Ckb!GW7odPb643K>`F=)gVJ5U9PhRb)0`R)Bw3IW#XkoYl{n1_)C`PCEiP$ zz*7EB@1+&|ZQ{r#92!C|INn^hZdLz8KX}1#k&+7d($c!bd;7lxfFDU1Wy;u^o~hfU zzI~b6eMi9$Z-JuK*?q33>o_j z=unKu|KiIHe%c&6e~F+ZA6H+q?(S(jDtBC6tp3nD4}yt1To3>d!K_qGSk1gclA#G_ zB;lx1gwoPd#>c3D5L%m`21A$(PNB+}e4t+Vt#VJD0gc>aeX~qC@qygaanWdfb8+O; zj<;Hl@%Pc|6qb3LKIZrweYR+I^o!H z;y4V}{a{zM6q1*x8Zj~?;hp|UC{ifm{*@GiXt%PHFqEbVN3G4b;8B;Mhv}`k4x^V) zaScci6*%|BhgFMquKzyDLA(MnO((i06CgMJ27UZ}r8G^U=Gf~Nn~s8+R!9QV@hyKL zK^)m6EDa1!YmFCKMM^|0QK&`+l-5kjCL_{L#5l|$7oV&%l`1a)tO!SOq~eoG6A1Hb z#-ac^rjqu7G1rduGH7-oM!b~TROH8JELD~RpK8VFp>Rz&sR_M`5g9suCUdOrP%PJA)(?{#7WbprEfYSWsIkBsU(U&g*;AE~Kle3#VCj_MgHE=c{aUwe9(pW#gRP0Bvzefn$p^Q zgmnwzd@GZxqa0jzIE`7*ivwf@IO=6mZQiDHOu|f3s%os3Qb$~>26Mh(QRg#BKSdnt zEw%0r$#Zr>ThLOVIIxK7)W<|DgM1y3fQ!m=_7G4Om=6P~CfKl25(?lT@NP2H3%T+@ zTS#-ewWVYbb8Djhk}!rgat-B35 zQh4VwMWu?&v#2r0gc;5Wv+^J8HTvCw$gyc5%A1fidB~%@8jTv{X8ed&tju;%h=poO z&5t-6?cW`+*$rX63YA&GPswQDtr;7wEjQr>{?dTqsahNd#UlpQ{L3(8iARF!4EMAx zG%QT-v^LWqb)K*`zlYfRX1h4F{NV=vK2b^FU7|9XpCc+!d|bY@cJ+0ZNmKi1rcHf*up?V&5)Wpp-^V&!XcSM4h#wA%2ZOd9@d8qP1hyEA_#UA& zqNl$BofMV(`TTr-mZ(JV<3%Mz$R7MnyWsTxHoLzF#c5?j!YsJOsnKm8YWp;;Kf|9r zDUf}H%f?EKP7|OiAL=;XKN-*7-+KGUA+C7=bs;f@5DVqM@B*-PIbd_X)kN;9DY7eC z3$6q+rS%qRg-ME)R+yy~aZXQ`cZQg*CbLG2;KWOKteIKJl;k)eShae~lRl zdvM!erxEg}1#LCtDUU!m%ALNuwc7Tz=zhn=Ao=%_FoZ*gWdp|ja&er`l8vt8G?>rQ z^Web@V?iwaMn3mL&bCx+vKyqPGv%v%kB#$gE8Zd%n0Y%gHNh@sz5oc0pX9^wH{}V; z;-%P!W3?G#jNFA1xr6yqVISXd9-C(r1ZhWWqH$Qc#!M%c4}&MIhe}S z58&FTPJ7XGHF`ZClh1EZ6>j%jnnQm{&xyVom~FA^aSr(6W^DtKzahJ@>ww)_gG*ceU+Ji1%+ zWFrsOE$?;ZnYIbRb%QI^aJe)8LhlXjV*B5Km;+*YNYpfb5=^iD zW-QE+E@hFAKg7Gll&xCDA)^qEN3&|euXllX$++c*8Y5hbG12S8ND~j_c9y(JY-aBd zW}zdWKq=kKm5N=aZ6n0FEq{gSgWSFf5+xqEonOP&T23KHyhCdXN$=#xXJqn*g(b>L zvem%2W>6KM>DMH^I0gA9_U@hMq?Fktm*%=K<#whQG6_TKG(N2ub|2J~l~R{?UM7E2 zv9cDGoSiV+Fz_$?ATSE$25Z(JLrUgl#+{lc_cL!7Lp+!4m{A7x~Ryb6aX6? zpn~br)aq7#dy+bZldjHlpwO(`OB4p+$!=|W)Lr6HpoLIt7>8Q(rIg!&x_s5nTM+5~ zGr0gKsG^HX#ObhFve~SgL=82}EgEl@=0fCXlaqRrklW@qWP883iN6&af|*$O4?eQv zMb2j8Et&zAy^uCr>%_cl_WV2ctR7(r6E<;qgdi_lUBGgJS#g^!+q(OYgW^~u!ELeF z8ln|DABI-KykCR~hntTJ#(dR`HcZ}X4Hl1B&YOyH*9SV=Yy=xjaK>!)EX(gf{#fGW z;%F_X+hwMHIo|W8t`tn!a5NA}x5Ioc%!Hwe1&3U2^7jpgT5HRFqv*Hl5*o`!?mn9 zRX({`N&llhWS}GY8AV0Kbj~RrP};j#)*#NNFr~ zUIG=P6!RIW)8uYU?5VNBCHfgm=+2gvV&%ji{KFZ?T?W;NVo!TZY`yg&Ldl=SRfK|`Hjy7R5 zQS%xroq`N)_Zjp_hjA-rO-=hU6o zXA(>(oA5eT9rT~a_K+1A?j#uDMoU8&oLvn;I-)pV8Q(#kbgyuf_Y!`J8P#;>VEOZpY7Jg!KqBj{%* zOHltaw09EW9fZRO2N3omyoT^Hf}H#KX({)K(})$s3gR<}&mbN^Jb?H-;`4}y5Dy`S z$La~FdLO#Y83&9*0ZwStVH-jmLLve*`l|ASo!hCmW1sb&`*T3!72E(T0YgD`;5mS>!C ztaYJr2@o$O&g~w9mgw@AUw%iQ28o|B?mspLa{CxKP>zhuibIxIZbx1B9p_cz83X2TU1jAqrdSiL3~I);qKF1c5{qzTJ$ z%w(b1W#4v@E$4otE_jn_l_;U_=*wV-e;Mqv{F+efNF{@Fe`EC6)$llAH~wB#Iz9@P z-`Cw%bmFxH2T!ry@-!}!dt@BWa+|;t0T6SMtQq6CZG+!-m%-ZXffUgC%O*7qNlgRn zm=opgvh$X@AWxz4Gb~^+v&#@AFw<*o?tmo1>O@s=Fr>+Bee@&b_*%|f!m6NPH~}Xf z3v7+I;t}SnwlMF-a3NH44Rmpl*{$YmxySbuK_(p9c98?UTMpB-$a1jQK931XPkG$3 zQJbBp&rIm_0vMkSxb)S%g{~GPxGYYWt)b09_gkIa))q2vr8SxP^19#^X)d#{_%eGK zxB9&R(7A|v8fv$%;JgRc5SxYt&*esd`aF7sqiE_+E(1SJR+A~X=~1d?>JIO0o(|@E zQ>R#)e~SrUZz~QhNSX9%)QJhMfv*x=vJ13hT$I#Bx3sSkLicc3&8Q*Ht|pkwc2Ws> zE{~8sY$q8_$nZ5C7B`8xZ7KXFVA#a1KCihKrMG<2W<6WQJ?1TU$0`V5x_2tbgvy{D#~_yFf69LL8T%dj>d01I|yTU%(R+ZDuzTkJRu(f=Pv zSq#-bwHW9i8_r~W28~mS;|4gb5u$B~#X$}_Oz{`i5ep7*KpU(fxqUz`u?+5iM3^lv zv3bOc8V+J!?9iB%B}1RYGTv5$_w`|++_uzI?mhL0_u?b4j2y8`C6;YlV`<W&HnH6nmS>>@8xS>^L$HA|V`?pdHwzmp zI^bat%sAwcyemkUC2qyZ(@-2Mp}xo=&O9>??`}1ry=*CDFwc_BkJF;$5EvP($RLFG zc2Y)bED&jVrufeoJLFDg(@{?`V`v;sbHR>LGT7nuz$he;BT@8b6W6y7)89vTcCOCjB>}S8C?mT{2lrH^n5->A49ajkfxIQ z>YoY5=+~**RornqkCJS1e( z!8djn2^WpRw~-GA{1`M09F0j66$Tu`9AirV`p^Q znyOiKT!|)N<~j|PGoT6Qp?I{ISD>t53%J0K#|~S!&Ivc*u@d?Eyy8|4($OoqyZ`q< zqg(6>v}`quEOzvo%(x!%JlZa8a{=s}{FcR_FRNNz5xy}iD{oaqers-$N!SF@;|E=q zAilmXs7@{Wx8-2>Rp^@viq>O@E^An zGjD<9aYBRwDZm9CN_7^JS=jLj*0ME;&16B8?pRO$hpG86<4aRh@vF2#AYm_d{>|Dl zh?+H<0H9xFa>8*l9`dn+vgF9a_# z(L8^{4m%>}Z}{;E9a0Qg^HF~%+3r<~bO)uSJ19lAW;tcM7aRTJx_SHTXj4nM9mEyY zYyondw`FtF@1c;!rLBp#2@yM})O+7NPBrU~c8(dWQC&+(WHpaoS<~7)55tveTU%1_ zw1c1sL;syfd9z@QxS6u!b&AKiOO%i4&0twzZML99OQ9m=27E%IM0p>hCEKke_rQLO zgJ-|lNoCgN(_mnUTRDaSR%a~H`=FeF{$NDXX8QnE`9?H%hkzSGdF3U_dAK1;f1W7! z)E=}&K{GJ72#zBq@aFW+Euk4{4;%B;&%9ab!je3ge*g_0!p}pz$A=O8;Fm$q5$Ftn z{*VxV4IDf}W;l--0_&S0=mWhFK8_Ji%u%Kg;q-(q64l@}W11aT|6p-q$LF*(=A~iF z*~Q=zspvYxy>ec(Gnm9nusDNB*sRS#C{4>GVX-zJ2A{02N8Sjg6;`KZ+K73tN5)YS z@f3d?OR+E&Inj9XP|-wx5s6o!yGV@={yH+c}bk}Xw!}OzQ$wwu();hSf6;E;zL_+ zboSuVEFGinboOi+bRK&6b7#+1GeJHD2u#?J0b`ztenV>86^NVjkYIHjbOvV=ub=6F zZ>)ooZc0Agp?*g5T9d^9FQ2W%+QM%8z$I5^6RT`Sc|eHh_%KL*l%Ulx_DFs{`2-eA zwa3Y+=Ubq8I);Mei*=#KAzyR)%%?T2{0A4XD~K(37RNP3J=h+au;1v4!#V4VYIq=J z?18~JSV$F{pqb3_?&Z`#h`hTMvGd4QyVxJ9-T<2~xf8==OA8|)6c5zAu>g)hSTqx4 zSG*KSY@`0VZqfA?d%j)oywR1olRB;zGf-l#4obhlq+yJ%F`(4S=Ez`f<;}s1cCseN zy+H{$RihI2=ddg(lCbECk`~&B57Rkavs&kSAs%m%lQmk)dM(T{&}+c-L%RM|Rdp}&bw)nI87d={)7+2C(U9yi+7DZtNe9^}7q zVLxkWJjJZ3ZfTOfe6H3Xx)ug;<(>XSd1tG?l=|myK3eZycA$H-2H?KFkICp`yxzwN zm;0E*xR%h->B|`*{Osw=(I@IM<*`LrEQ~O;A#5eBg83=M`vP8wfIBXA$Z@=fTL8@^ z^mKer4_;MTBHtjkC(h5@1JBf!vp$#N#zNpZFWd82TjBv(myOfO`<{a@M{H6I5<__I zrJqStU%>Xy`sioql(*?qOa#Belds^jwsFnJtzQ2+rP8}z`UK% zWIMYz{4FQPo5tZh82neAIFLDPYUsdTr91d(^cj?M?w!WX5keTf(lH>cE$gsv*);YQWLXu)XxsOKN1=)Z3v& z`6%UaR8;6N5ezhRWtkmMp*@Q@lOV8^8WCU{p=Tmco4JRv`pYXbUt^iWf^`SY;FrPK z_Uw)qFnIWzM8$-|yh)u@7`n%V$+dIOc=l_8ZLV|AIC}QfWtW0fdVhFpexey) zc2X}GC(ws-zl{b$>T{hb!NnkA-561rNJ7)j%yO;G!DpaQvz=WH=i6MLcePN;jv+d? z$m1(MXWfnCH0{ogjZ<-zZ!ZJQ*<;6_{0Hnv&%GqSg^laEpUt1&HeYLQ7mk+Si!ai& zocRLpAcfwG-ZU9nfVRYqU1BB{XAA~MG4;}t(PFF@sFK3NXvtt;3Aq}khSu`AB0CiUxB3_Fb5zJ>=j4C^ z`_x5#u82c94U@&8dp1S~aP@dQ?5(W~(=>6YqG5tK^w7qr0JwEY|3k-}i)b;za)gx#l?ZDPc!X~w;Jy5B_&*4f_8fk9A?!goOgaA>{ttG#BJnwP zHe`NHWiu(Zb}x_*IWNIZld>1jH7k(q(XdzcUrl4tmC} zYNB?OuH^DjJ17?!!T92W+zStKY#`w124SN$DQ1MB!-p|fTRgbp`A|ub{0A)iqc3#P zS_rEod=~@bMp&m#ZwtvIn;t(CD)m;qTu_uo7;fY?~D6Xuet^WcMD(KyGmciuyxQP{y+7lP)J}YG!bW4^kvtdG5_9F~-}8T^)!Tn_%47Xcyb^JwPyX}9$SXb#R}@T6bbatG~pRc#m?+$87(rUvMI^ zDDl)89oj1YeX86s_o?n2%*NrxNVn4POPv=u#3YVHZ<)kkwArsH9oS5>M5!463KzIW zwU?bm#Ra#@z2E}P?R8qsCJ1s(>pBeJ9pEJAu9Rj{ES{l7qg18rSP4!J#9Aq%U_k!YpDR@UNGBn%( z*1Z`po9lJ@e?(2w0h1^3kX9BenAvJaa>e3A2m_W~cHOvX&W8CaR=2WCu0GiES7XiS z%YX-2Y&XUaD}#G*Nw-Ro&r8BdPZ2i!3gfUEfkj=XT&2({7!e*H_yum&gg)5BK#~O~ z8Ut8?l8D6OmkeaoTk>Z4st)7p4wd-E0RGrgj;*mRoa~^QRs0QRXWSzBa2mW9 za3}h&ANrjb#;!KE2`db1^RoaGtA=nh370BtocuQb0G1cR{e%1S`KfK$!5QIDCpGXTz5Rd;Y3GdXD4bg@r>s}x^Aqi3ogZ#Zoi$B#)$6d?a!hHht@J9 z1KDoe%6U4})=vf-8FyOG8;WtkH_^m=ZSb58p(=a@VcvP+g2`f1gW@l>8epr$C3IYG zG4?n+a8cMQz6CH?S=+b__?KvzpApGNK(}bP0`nat7p1|!hGS#4Y;S5fj=Q>SLF%fm z(8z^AqBiP%0j$r36?edk7O!{6f724CzJ>TM7G1<(7dZ3z2{1E)Ka+q)j#vnTVz7Fv zv&kYvc$>6vA-F3vT#bcife!yG--r8-OfM+GK`gWj`azQQk%d?osy1+!N1sD>Wuucp ztsx0b7Wfw7r~69XaIjN9e_Vs%%qhYzz(d+`wY1~1Hy_m^14`oJCp_*f^@)$Q|{WWY3w^bjzQ;C@()|Z7^FN!W_))F+prD0tMW3;x zOZ~8d3^n1lC05h~35)9zD0jUjxR>a{Xsr6K$n3Mhg5TdyBLZK`z#uA8CIcJJ?q@f_ z+RQR0f}$dYhp^$~5Qe)QZ&x0;@aG!_FZ>zbe$WE4N=S4OW=>G5Z7x!JFS6Eg%vz1S ztoNA@;^64b-+=oH=j1}^o@X&Bdt9YNa;*CbD$BS~#T}%%(3*G1pVG&T5(KzT<}SQ^ zR}@!ON|b0FLEx_5di}0mq|fw2-^x5(-<-QpeOvtU4!KhZy3orGfV1WJVY)*AX)s^d zPt&-NAqS-!gjwP3{LSeVI6D}AnxERC*wS-?gvrPpmtKKm;IKB}o3i1jh2t_D`JLNu zXg}7M-HEl~e#imGN4Evd2a^6AROq{~pTvmYRV@dJ`w91PF zDcz1`=T|*^6{fBm(o!-o0r92EEbQqpq}+NbP7vnN;X15avWk=feBGc_9%3hJ?{q6! zNIJVqH%yX4ycwyPg4I*xR{j&)NQeWiZ?HH}Psky@+*E^pgpM6w#njUJRZ~lxKDEGy zpIP}F44Zkd`5EplV)KfA#si1)V%hM=dD5u_quvCYpgzB#ERK~~n{NVdx`U~l7?Rc$ zz12UfD5O|Ram6co2bI#?GgTAfNVSidb#z4ie@0z4>6~Cl?4y&8-2<};O;WIhjhS@p z`lLfws7^cI*Kd~5r(;Yv=o3%VtNO%q0N-h*2}Xs_LZ5Losfp#tWvA1cPV&{5({Qhe zTA*pij~6^GKxbKzg-t!g3VA>hdf}c)9&|;T`0TW%IBPT66r4ib!#C<(ySfSvm$y6t z5Sp`ku9~y_cRzflIXcY;|4XO&ByK1(n#YgQj6s1;$Y}k2{x!_*!s)9>1Hn&&9*;*b zc|2-}PE1Kr4RbzFugD!iz9nn(H=%CjuKqO?Er$~qOTU)mCBC~f9HmXgeZ_3~>>|kN zIV4sI!3iktl=qXGgv1n+Pp4*AJ*^zf%It8CE5r0lpA#g_dm+aJmBa19dxsGbh|Org zCI#)GAxQRhWZB$xBQ>u8L8X?0T+YANL5W>nVV2ihpoie)!vR$O7T@d*vgPLzMln8| zEpGWa{Gj7&48Shu{@ko&qqesE=VrCD@(E_b!&uPQ^Of`!d7R4JY@&uBI`~M(GD{jh zLlw+u>ntk#RXglzYPkOa=MCsn3kyurgO<{J@m1Nwhf5YDC$3nKn8+3u_@b8wAKAf2 z99-rL*{qY+mPgP8`^+RAXu$z)X~D4EXpz5VrXE!IEE~ivPnbB~RZ{GG(55Ya!c>O4 z&X$OF-mxhIP({j5VMY-Tm{5w@;?FE$Mm2o)0B6yZ3VJ`LC!_@y)HS05isac(s5|yh z-_$tP6E%jAliTiDy?zeaM7DE|gxp+TSfDh-Uw6ZZO6|3zqptQDpA5B7e zf$>2r`Zp0+Q{2{2c$e2u)e8^j_*@6vOesF+C%2Fa&TYLNcVdGYZt}SfrIsDyr{Ib~ z`U&{V3v6v+>E;Gg`k@W~o=r!;KddvVFB0`htip@_3eV^jzK3fJtb#fHkoD0`c+srV z2mKG>v8af+fRj7{os1h-8TmQ|N>cSr_=tw7nq~>uvs?INt|WRj_%*ucK%Bo5KmV-Ya!9zPq98=swsk z?jU17!*#`+GLf>!s%{byeM9rwRg(jR54TU~vru$Ct++0e6m9_&DLD@=l;U6mCLqDg zJ9p647{_}!)?|IM6JAQB1dChwAzoDJPAbE9M3&>Dc>LtFOt$bCr~CpUgbrr~?BJL{ zTgWF|XHxF`85=aLBLBXWs@D-FpeWj3#E=}2QWM|;%cKUtAKIQNM@fL`s#fWi1>!u8 z&%#nBS)2X3FXMIP=h!BfQf7p_(3Hn)5bA*3#XfZ<3@gitTDn%1p{78`N~YJ<fQ^v}IuF#uj3C zkTu9dwSQZo#2dbp@|QdZ8`X&N6T?xu&5ZPkg>oc2mHV7^7lgi6hk#kxdlR4Du>GN<0VdT z;})1gLtP5N*KcSc*pE9{@^9eNF4s>R6_>QU=fNjAVV_Z!0##{09jAefD;CpyRFN_X zDwg{DFHf2B9Kq^MZ=hr#2r@# zHAvsd=)b=C+P$5AZ>_H~9t%o3b66zzf&yB`>H8dP$iwHS{((Q%e2_2nZ+$+A==I2* z9e=TvMD)tx`^b}vW6u{HZ{gm-Me(dgPTjX1UD)|-J4Jq7A#Nsf@1CFtXVbQQ2#$D# z1FOpK#imG}Kb+dj&w;3amU@!^2K=HQVIPI87-XG9RtU1*QNOpUT&H;c2=fD*l_~W-Zt_R_BiR1bZjv(wucopG!gnvPJ z6oE&$AK{Hh@ev|~K7;`T4t2*P*b!zSWFXvyP=Zj6z#}vx{0qW!2(KZyfoD%E$9;_F zA%t)|+Y!8rC(~IW7{mrsa#578U6^l;nyQEm=4w$>lCB z$XT@Ha?Y|jiOH#v;dj`D`ilG4RN47;_S*VdzP4gb?L$@enyQNR3=Kzca|y0~9dECy zUne|JV{cqvvAW7$jkedU+gLlMVg+BjuKsepIbT_?k+1xkdMQ+Iz0go)-%#7Y3l(eZ z)k6Jh!fjt&v1Scxfase2mH5lo)mLq*|!1;p#>8`psk zl~o&RSC4`9^Qdam`l{7@RVCxhWiE2WpCrZ~0WJDr)(UI*TE3>Cs-hAcTK(YF@L$ar zf2GO_z5?V%hF9EQzph~|7_h!!-2)93Ywdhh!`j;VEBTzr`tx_+PgOlQxUPO}RXq=U zpf!>8=kLN+G&~>>U}J#4iOIyL>NV@oT>S&~_3LWuc_s$PsjRBh`B_lAx?x@8x@z8D zQrk$cYC%GReVJcC7uVk3P|>iNWHuZ^8OU~#+)fVhX`}CX3gR<0==xSfOHG> z57w{SSf2%17U~Pu)h`#SJXMv;YlOUp+M)^`b?&OD&#St>prRpXeM3RT=DURYyM#44 z!UIKB>zA(Pm#o{6TeTWs-12)kZebO_xT2BIff#M5a<5x2tY>+8+EZI!xo#s@P}SI2 z@j%u5b(?ZHp|PsLkvyw%%^Jd>|6zlqy`g>XP&WLq0TX&KhV1ZoL6Axg2`@9w@6t^-!m4*|>(^fJ%zc%c`|h z&fP%i#p|H^Sdu$L(!5~Z+O?o-aczB74u=yKReVWRLnCw~$34SZ$*pSS8`f>+e#lY_ zppDQWZeLJ|u2b{CChkY9j6HI{3Y6&NanG}|WmS4|3Znrdhz(wjyMbG4Z(WOSNhR%F_g}$ zT~oDu^ZF{zt(R6{PFPP2%i-cFr(j*Bu%?QjmOyXhU>(3wk6f2^UlEVD`#@t3_w%nP z@o>k3Jhhco3u-DFmai)y{XKs(*cC$fuSLX}|9-v)?~co@ZKUaDIn)1s4Y&Z)RwMU* zkf#BXMU-+|sP9FWd-^jjZ;jAcLuK=Y>T0}7jyr7_rDXZK0D0VOPJfpKn#1j5e038$ zxL?w9&H^{bB@ul~T?O=a%r`m-e*|6prB&CjsdmX$EH#D&Y)%dn&SG6(7W7p z4x+riqM>RO`lc&$0Dr%Ze{?b{sc5JrCg*T>yOu3+ExuY)W9{_D;RU2cmqDi*5C=j& z(u)z?q-&wYD=6k_*OxnzJ>?Hn)w6NxUc6{j-B9uMzv~>h&VlP3xXyw9-*I5V63+HS z`DKgw9;B}!(x&IdUsm&+YuU1;%hK&*vg{32-xO*wL)sno(Y;VO;rctU07$a06&iVa z1#KOxYag&zV*<6)&gENSkGBSE2G*HmQ>ewV z^=o>Ek@U~^i7@=#v9@}hu%?n3G#-E)jTycT2^=?8TrUGMQxSuliFNeM%G<~M2O9@; zMdGHJiOHK1nN8ykJ7ADP#LAdrz%#8yZ^_dCM~Xv6*b&3-h%7@M1^OeK0ac(=FO~T2 zoEdQ{;xNP(#DqtAM6bUW@i?R(LyV6Oa5ac0AkIJ>i`ayCGUAilI2%4F$i0C02E=O+ z$05!|yb1Aa#AK+6NBj`tXvD*aZHRGe0w=~U>s6v3pAum75sl~qdnT7WwHb^Mi4cN7 zG>0Ns5U3v%vwk3^eo$EiLZFQBQeBFz2!x*$I^|J6sgD#We>wu?(_uME=lIjK@TW93 zKdjC&e}0ia#)g97FGWmkukq)vMQle{k3hU>KpNwd0N;A{HAA^yL3zxq*Zp zQ~j|ZSC;Dd3Fi9Wbq@S@Iq;_{&i3~L$=fUhil4;?l_<~%y87QOT;Si;C4VoC4<~-@ zzh;cHtN&eDV;e?j;Gco}$Nr7Q@CbMLUl2y-Kk_e7-ws~<-~Q)?0wtLkI7?SEmj6@i zaOeJW^Q5jCj#6B9L<-uKAnN2XH(e?NX-kMXSl z_P6aveKZAg*;~CV-UaxMoqybEXQkKvY#Y(@vi2owMOY)Z25Rac_TcYMz6SVu#&r(- zqa46!rnQzWaZ=)qi8B-V#GfaAo|u$$Pf}~rYe^kRN0Q!4Qj-3b6qIaDek}P1$v;l+ zP5wN2q9fPwY>GQ|dFqPPm8n&!FQmSa`kT~asUM}@oDrY7GV|M+KgoPE^Y@vatjesq zto2zNvbJPBlGU2^c-E6y|CaS!){nDZ&iX8C{JhwC=jVMfkF&!*4;sP~Z%#~1bSCB} z7AM}HxGr%+VoTzyiF*@=6OBm|lWt79HR;Zzl%#n{uB5w?mM7IGJ(ARxv^}Xk>3Gtt zmhuv|TBiWJe$ac6LC5|#jwPUSAaD2=0 zsN-?RpHkG6vndgCY;&f~nK>tAPWGH-bE@X7pR-}kx8`h{^Z1;X=KR;3y>s@@IXvh1 zoDb$Gb8eq|eD1!qLutp;{+gzy8Pd(^QR%ViH>S@>zcoEAeSZ4N^tI`Y>5rx>=|9c- z&#Zk}zt4)Bck{f$c`N2|i5&MN`k0mIN|Y0iCH5!QCq0@}=%{jh&+)2bpW}q1diF!J zkIx>OZJsk}?%cV?)G4XUQma!Zr6r^lrq!g)O7BiToqmt=CmEd??`DK%S~IIN|10xE z<|moMnW0&htch7SWG%_MC#xdsn^_yPwu09?vVNNNA6ajJir;0umo;_XjCncpO6Glg z-sAIj&O0{my?Mj)xNMx0fF2!}I13zKo%m$pza{QU>_|M4_@_i`(zK-e!Q)Lyk0t$E z(od3JPI@&dGC4YVW%7>XX2&y*h}FU;LF_w%_!bBE`0sixGrR3UYH>c6Hwo%$T4tRq!TothS(c1zmr zX^CmG(^Ati(z4Uq(zd5PnfCp(r_(-3`#eoc8<##c{igJ}=?l_5>D$wPmi{W<$8dV2 z)8Sm;yvtecY;?-be|P@cdBEB0>~{`3jTtc+w`62yEX-J*aZiSj@pwjd=H|>tGJTmZ zX18TVMyp;}f{j|E5H~9NCH@BQ z*7^g(dfw-I;Tsk#m*u{2#?5x6uH1d+Ho02Y>`oxvKJ<7ZvMmgXgQY<{sO>j;U|}jk zw%LS}nPe^ff!47kJH~3fKfO*Qm&P;r2)>Zl^EAkW36KZVz=I+vhQ;tTRKWMJ4(ebB zG{Js20w>`&xCl3)3+}*UNI^Op`>7zJP?U+yVz<~Q{t!<@ADS~kDmg>Wm5byza-G~I z_sWCvlsqRd$!qBDZTUbxk|{Yzja1{+WHn8J3RICQQOnh8by&5jk94-4sf%?|AJy%; zL*GTu-{^FIv>!#Hv;7i(p?^R2GWPKRGiG9DmDymnn`7p*=`?rEL-WM+nM|8&qgGgJ zi|k6f#>VZ>w#ojAJiBeL?L(evZj8%u4X(+Za_#Px>v8GW29pCoN6UiBpeEQE90a_ImdmEFe1_k-FvSe}lGU?DwwtxE1bfJyu@w8zOZT$8vEC$asz*HV3cNC}3e!2v zFYxQUm!~*|uV5ag)1S#%xB`Dc4|c~;kt6bi7SqLi%%Vzc7j5DLnJuj>l}qFqc|l&6 zU9uJ(9)@J|^cMY#j{2Uz%&+!q{5rqYKkNVPzxId6uEcJ{ZpR+Q3e6l-VXDnfrorqn z`^|CFfm8?C&+K~JXfNB(U5QJ$JFWn2D-Ze?>=lS-IjJV+$yM@zq{vtrrCaF^+D3n; zmuUy>r1$7!I*B<}${N@(uN)ox*Nbw+3wSBt!ng9h{17Kl1@-t|UC<<+qDu@-nuXK3 zOa7zqfcU#Tej|_bZM>1U@B~jHofG^t#~%d^+z(`sPcR)q+IbIu&R_AtkO5gR4sszM zI2f1(b6^21fo1S5R6@7-U#!-Zx>|44asA`K1m_!K@T~9&34{bf0wIBrKu91Y5E6KA G1l|HfvvW%T diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen_vpi.dll b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/ip_32W_gen_vpi.dll deleted file mode 100644 index 04d3b84a896ac4bb124eb3ad9b73d9a93ff5fbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim.nc b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim.nc deleted file mode 100644 index 6d38346a..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim.nc +++ /dev/null @@ -1,37 +0,0 @@ -if test -d worknc -then -echo worknc is ready -else -mkdir worknc -echo worknc is created -fi - -ncvlog -f vlog.list -logfile ../log/ncvlog.log - -if test $? -ne 0 -then -echo compiling err occured... -exit 1 -fi - -ncelab work.tb_top -NEVERWARN -loadvpi ip_32W_gen:PLI_register -loadvpi ip_32W_check:PLI_register -snapshot work:snap -timescale 1ns/1ps -message -access +rw -logfile ../log/ncelab.log - -if test $? -ne 0 -then -echo ncelab err occured... -exit 1 -fi - -if test -f ../log/.sim_failed -then - echo "../log/.sim_failed log file has been removed!" - rm ../log/.sim_failed -fi - -if test -f ../log/sim_succeed -then - echo "../log/sim_succeed log file has been removed!" - rm ../log/sim_succeed -fi - -ncsim work:snap $1 -UNBUFFERED -logfile ../log/ncsim.log -NOKEY diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim_only.nc b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim_only.nc deleted file mode 100644 index feae8e7d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/sim_only.nc +++ /dev/null @@ -1,13 +0,0 @@ -if test -f ../log/.sim_failed -then - echo "../log/.sim_failed log file has been removed!" - rm ../log/.sim_failed -fi - -if test -f ../log/sim_succeed -then - echo "../log/sim_succeed log file has been removed!" - rm ../log/sim_succeed -fi - -ncsim work:snap $1 -UNBUFFERED -logfile ../log/ncsim.log -NOKEY diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/vlog.list b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/vlog.list deleted file mode 100644 index a937c843..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/bin/vlog.list +++ /dev/null @@ -1,41 +0,0 @@ -../../../../rtl/verilog/header.v - -../../../../rtl/verilog/TECH/CLK_SWITCH.v -../../../../rtl/verilog/TECH/CLK_DIV2.v -../../../../rtl/verilog/TECH/duram.v - -../../../../rtl/verilog/MAC_tx/MAC_tx_FF.v -../../../../rtl/verilog/MAC_tx/Ramdon_gen.v -../../../../rtl/verilog/MAC_tx/CRC_gen.v -../../../../rtl/verilog/MAC_tx/MAC_tx_addr_add.v -../../../../rtl/verilog/MAC_tx/MAC_tx_Ctrl.v -../../../../rtl/verilog/MAC_tx/flow_ctrl.v - -../../../../rtl/verilog/MAC_rx/CRC_chk.v -../../../../rtl/verilog/MAC_rx/MAC_rx_add_chk.v -../../../../rtl/verilog/MAC_rx/MAC_rx_FF.v -../../../../rtl/verilog/MAC_rx/MAC_rx_ctrl.v -../../../../rtl/verilog/MAC_rx/Broadcast_filter.v - -../../../../rtl/verilog/miim/eth_clockgen.v -../../../../rtl/verilog/miim/eth_outputcontrol.v -../../../../rtl/verilog/miim/eth_shiftreg.v - -../../../../rtl/verilog/RMON/RMON_addr_gen.v -../../../../rtl/verilog/RMON/RMON_ctrl.v -../../../../rtl/verilog/RMON/RMON_dpram.v - -../../../../rtl/verilog/RMON.v -../../../../rtl/verilog/MAC_rx.v -../../../../rtl/verilog/MAC_tx.v -../../../../rtl/verilog/eth_miim.v -../../../../rtl/verilog/MAC_top.v -../../../../rtl/verilog/Phy_int.v -../../../../rtl/verilog/Clk_ctrl.v -../../../../rtl/verilog/Reg_int.v - -../../../../bench/verilog/altera_mf.v -../../../../bench/verilog/Phy_sim.v -../../../../bench/verilog/User_int_sim.v -../../../../bench/verilog/host_sim.v -../../../../bench/verilog/tb_top.v diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/1000Mbps_duplex.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/1000Mbps_duplex.vec deleted file mode 100644 index 36418359..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/1000Mbps_duplex.vec +++ /dev/null @@ -1 +0,0 @@ -01200004 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/100Mbps_duplex.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/100Mbps_duplex.vec deleted file mode 100644 index b4f602f8..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/100Mbps_duplex.vec +++ /dev/null @@ -1 +0,0 @@ -01200002 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/10Mbps_duplex.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/10Mbps_duplex.vec deleted file mode 100644 index a3b94187..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/10Mbps_duplex.vec +++ /dev/null @@ -1 +0,0 @@ -01200001 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/46-50.ini b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/46-50.ini deleted file mode 100644 index 313b49c7..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/46-50.ini +++ /dev/null @@ -1 +0,0 @@ -46,50,1,0 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CPU.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CPU.vec deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Entries deleted file mode 100644 index 0df4c079..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Entries +++ /dev/null @@ -1,11 +0,0 @@ -/1000Mbps_duplex.vec/1.1/Thu Jan 19 14:07:57 2006// -/100Mbps_duplex.vec/1.1/Thu Jan 19 14:07:57 2006// -/10Mbps_duplex.vec/1.1/Thu Jan 19 14:07:57 2006// -/46-50.ini/1.1/Thu Jan 19 14:07:57 2006// -/CPU.vec/1.1/Thu Jan 19 14:07:57 2006// -/batch.dat/1.1/Thu Jan 19 14:07:57 2006// -/config.ini/1.2/Sun Jun 25 04:58:57 2006// -/flow_ctrl.vec/1.1/Thu Jan 19 14:07:57 2006// -/source_mac_replace.vec/1.1/Thu Jan 19 14:07:57 2006// -/target_mac_check.vec/1.1/Thu Jan 19 14:07:57 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Repository deleted file mode 100644 index cc9effe3..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/batch.dat b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/batch.dat deleted file mode 100644 index a37f5040..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/batch.dat +++ /dev/null @@ -1,3 +0,0 @@ -{1000Mbps mode 46-80 length packet testcase} 46-50.ini 1000Mbps_duplex.vec -{100 Mbps mode 46-50 length packet testcase} 46-50.ini 100Mbps_duplex.vec -{10 Mbps mode 46-50 length packet testcase} 46-50.ini 10Mbps_duplex.vec diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/config.ini b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/config.ini deleted file mode 100644 index cd64f169..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/config.ini +++ /dev/null @@ -1 +0,0 @@ -46,1500,1,0,0 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/flow_ctrl.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/flow_ctrl.vec deleted file mode 100644 index 978689ab..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/flow_ctrl.vec +++ /dev/null @@ -1,4 +0,0 @@ -04020001 -0403000a -040b000a -040c0001 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/source_mac_replace.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/source_mac_replace.vec deleted file mode 100644 index f1f49894..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/source_mac_replace.vec +++ /dev/null @@ -1,24 +0,0 @@ -12070001 -12080030 -120a0001 -180a0000 -18080031 -18090001 -180a0001 -180a0000 -18080032 -18090002 -180a0001 -180a0000 -18080033 -18090003 -180a0001 -180a0000 -18080034 -18090004 -180a0001 -180a0000 -18080035 -18090005 -180a0001 -180a0000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/target_mac_check.vec b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/target_mac_check.vec deleted file mode 100644 index 71401b15..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/data/target_mac_check.vec +++ /dev/null @@ -1,25 +0,0 @@ -190e0001 -190f0010 -19100000 -19110001 -19110000 -190f0011 -19100001 -19110001 -19110000 -190f0012 -19100002 -19110001 -19110000 -190f0013 -19100003 -19110001 -19110000 -190f0014 -19100004 -19110001 -19110000 -190f0016 -19100005 -19110001 -19110000 \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Entries deleted file mode 100644 index 85b414b7..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/ncsim.log/1.3/Fri Nov 17 17:53:07 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Repository deleted file mode 100644 index 06099086..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/ncsim.log b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/ncsim.log deleted file mode 100644 index c2ede538..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/log/ncsim.log +++ /dev/null @@ -1,245 +0,0 @@ -ncsim: 05.00-p001: (c) Copyright 1995-2003 Cadence Design Systems, Inc. -////////////////////////////////////////////////////////////////////// -//// -//// $ip_32W_gen is used to generate stimulus with 32bit -//// width ip packet data flow. -//// The only parameter is config.ini file that is used to -//// control the generated packet data flow. -//// -////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////// -//// StartOfSim callback printing info -////////////////////////////////////////////////////////////////////// -ncsim> run - -the NO. 0001 IP Length is:0046 CRC-32check OK! -the NO. 0002 IP Length is:0047 CRC-32check OK! -the NO. 0003 IP Length is:0048 CRC-32check OK! -the NO. 0004 IP Length is:0049 CRC-32check OK! -the NO. 0005 IP Length is:0050 CRC-32check OK! -the NO. 0006 IP Length is:0051 CRC-32check OK! -the NO. 0007 IP Length is:0052 CRC-32check OK! -the NO. 0008 IP Length is:0053 CRC-32check OK! -the NO. 0009 IP Length is:0054 CRC-32check OK! -the NO. 000a IP Length is:0055 CRC-32check OK! -the NO. 000b IP Length is:0056 CRC-32check OK! -the NO. 000c IP Length is:0057 CRC-32check OK! -the NO. 000d IP Length is:0058 CRC-32check OK! -the NO. 000e IP Length is:0059 CRC-32check OK! -the NO. 000f IP Length is:0060 CRC-32check OK! -the NO. 0010 IP Length is:0061 CRC-32check OK! -the NO. 0011 IP Length is:0062 CRC-32check OK! -the NO. 0012 IP Length is:0063 CRC-32check OK! -the NO. 0013 IP Length is:0064 CRC-32check OK! -the NO. 0014 IP Length is:0065 CRC-32check OK! -the NO. 0015 IP Length is:0066 CRC-32check OK! -the NO. 0016 IP Length is:0067 CRC-32check OK! -the NO. 0017 IP Length is:0068 CRC-32check OK! -the NO. 0018 IP Length is:0069 CRC-32check OK! -the NO. 0019 IP Length is:0070 CRC-32check OK! -the NO. 001a IP Length is:0071 CRC-32check OK! -the NO. 001b IP Length is:0072 CRC-32check OK! -the NO. 001c IP Length is:0073 CRC-32check OK! -the NO. 001d IP Length is:0074 CRC-32check OK! -the NO. 001e IP Length is:0075 CRC-32check OK! -the NO. 001f IP Length is:0076 CRC-32check OK! -the NO. 0020 IP Length is:0077 CRC-32check OK! -the NO. 0021 IP Length is:0078 CRC-32check OK! -the NO. 0022 IP Length is:0079 CRC-32check OK! -the NO. 0023 IP Length is:0080 CRC-32check OK! -the NO. 0024 IP Length is:0081 CRC-32check OK! -the NO. 0025 IP Length is:0082 CRC-32check OK! -the NO. 0026 IP Length is:0083 CRC-32check OK! -the NO. 0027 IP Length is:0084 CRC-32check OK! -the NO. 0028 IP Length is:0085 CRC-32check OK! -the NO. 0029 IP Length is:0086 CRC-32check OK! -the NO. 002a IP Length is:0087 CRC-32check OK! -the NO. 002b IP Length is:0088 CRC-32check OK! -the NO. 002c IP Length is:0089 CRC-32check OK! -the NO. 002d IP Length is:0090 CRC-32check OK! -the NO. 002e IP Length is:0091 CRC-32check OK! -the NO. 002f IP Length is:0092 CRC-32check OK! -the NO. 0030 IP Length is:0093 CRC-32check OK! -the NO. 0031 IP Length is:0094 CRC-32check OK! -the NO. 0032 IP Length is:0095 CRC-32check OK! -the NO. 0033 IP Length is:0096 CRC-32check OK! -the NO. 0034 IP Length is:0097 CRC-32check OK! -the NO. 0035 IP Length is:0098 CRC-32check OK! -the NO. 0036 IP Length is:0099 CRC-32check OK! -the NO. 0037 IP Length is:0100 CRC-32check OK! -the NO. 0038 IP Length is:0101 CRC-32check OK! -the NO. 0039 IP Length is:0102 CRC-32check OK! -the NO. 003a IP Length is:0103 CRC-32check OK! -the NO. 003b IP Length is:0104 CRC-32check OK! -the NO. 003c IP Length is:0105 CRC-32check OK! -the NO. 003d IP Length is:0106 CRC-32check OK! -the NO. 003e IP Length is:0107 CRC-32check OK! -the NO. 003f IP Length is:0108 CRC-32check OK! -the NO. 0040 IP Length is:0109 CRC-32check OK! -the NO. 0041 IP Length is:0110 CRC-32check OK! -the NO. 0042 IP Length is:0111 CRC-32check OK! -the NO. 0043 IP Length is:0112 CRC-32check OK! -the NO. 0044 IP Length is:0113 CRC-32check OK! -the NO. 0045 IP Length is:0114 CRC-32check OK! -the NO. 0046 IP Length is:0115 CRC-32check OK! -the NO. 0047 IP Length is:0116 CRC-32check OK! -the NO. 0048 IP Length is:0117 CRC-32check OK! -the NO. 0049 IP Length is:0118 CRC-32check OK! -the NO. 004a IP Length is:0119 CRC-32check OK! -the NO. 004b IP Length is:0120 CRC-32check OK! -the NO. 004c IP Length is:0121 CRC-32check OK! -the NO. 004d IP Length is:0122 CRC-32check OK! -the NO. 004e IP Length is:0123 CRC-32check OK! -the NO. 004f IP Length is:0124 CRC-32check OK! -the NO. 0050 IP Length is:0125 CRC-32check OK! -the NO. 0051 IP Length is:0126 CRC-32check OK! -the NO. 0052 IP Length is:0127 CRC-32check OK! -the NO. 0053 IP Length is:0128 CRC-32check OK! -the NO. 0054 IP Length is:0129 CRC-32check OK! -the NO. 0055 IP Length is:0130 CRC-32check OK! -the NO. 0056 IP Length is:0131 CRC-32check OK! -the NO. 0057 IP Length is:0132 CRC-32check OK! -the NO. 0058 IP Length is:0133 CRC-32check OK! -the NO. 0059 IP Length is:0134 CRC-32check OK! -the NO. 005a IP Length is:0135 CRC-32check OK! -the NO. 005b IP Length is:0136 CRC-32check OK! -the NO. 005c IP Length is:0137 CRC-32check OK! -the NO. 005d IP Length is:0138 CRC-32check OK! -the NO. 005e IP Length is:0139 CRC-32check OK! -the NO. 005f IP Length is:0140 CRC-32check OK! -the NO. 0060 IP Length is:0141 CRC-32check OK! -the NO. 0061 IP Length is:0142 CRC-32check OK! -the NO. 0062 IP Length is:0143 CRC-32check OK! -the NO. 0063 IP Length is:0144 CRC-32check OK! -the NO. 0064 IP Length is:0145 CRC-32check OK! -the NO. 0065 IP Length is:0146 CRC-32check OK! -the NO. 0066 IP Length is:0147 CRC-32check OK! -the NO. 0067 IP Length is:0148 CRC-32check OK! -the NO. 0068 IP Length is:0149 CRC-32check OK! -the NO. 0069 IP Length is:0150 CRC-32check OK! -the NO. 006a IP Length is:0151 CRC-32check OK! -the NO. 006b IP Length is:0152 CRC-32check OK! -the NO. 006c IP Length is:0153 CRC-32check OK! -the NO. 006d IP Length is:0154 CRC-32check OK! -the NO. 006e IP Length is:0155 CRC-32check OK! -the NO. 006f IP Length is:0156 CRC-32check OK! -the NO. 0070 IP Length is:0157 CRC-32check OK! -the NO. 0071 IP Length is:0158 CRC-32check OK! -the NO. 0072 IP Length is:0159 CRC-32check OK! -the NO. 0073 IP Length is:0160 CRC-32check OK! -the NO. 0074 IP Length is:0161 CRC-32check OK! -the NO. 0075 IP Length is:0162 CRC-32check OK! -the NO. 0076 IP Length is:0163 CRC-32check OK! -the NO. 0077 IP Length is:0164 CRC-32check OK! -the NO. 0078 IP Length is:0165 CRC-32check OK! -the NO. 0079 IP Length is:0166 CRC-32check OK! -the NO. 007a IP Length is:0167 CRC-32check OK! -the NO. 007b IP Length is:0168 CRC-32check OK! -the NO. 007c IP Length is:0169 CRC-32check OK! -the NO. 007d IP Length is:0170 CRC-32check OK! -the NO. 007e IP Length is:0171 CRC-32check OK! -the NO. 007f IP Length is:0172 CRC-32check OK! -the NO. 0080 IP Length is:0173 CRC-32check OK! -the NO. 0081 IP Length is:0174 CRC-32check OK! -the NO. 0082 IP Length is:0175 CRC-32check OK! -the NO. 0083 IP Length is:0176 CRC-32check OK! -the NO. 0084 IP Length is:0177 CRC-32check OK! -the NO. 0085 IP Length is:0178 CRC-32check OK! -the NO. 0086 IP Length is:0179 CRC-32check OK! -the NO. 0087 IP Length is:0180 CRC-32check OK! -the NO. 0088 IP Length is:0181 CRC-32check OK! -the NO. 0089 IP Length is:0182 CRC-32check OK! -the NO. 008a IP Length is:0183 CRC-32check OK! -the NO. 008b IP Length is:0184 CRC-32check OK! -the NO. 008c IP Length is:0185 CRC-32check OK! -the NO. 008d IP Length is:0186 CRC-32check OK! -the NO. 008e IP Length is:0187 CRC-32check OK! -the NO. 008f IP Length is:0188 CRC-32check OK! -the NO. 0090 IP Length is:0189 CRC-32check OK! -the NO. 0091 IP Length is:0190 CRC-32check OK! -the NO. 0092 IP Length is:0191 CRC-32check OK! -the NO. 0093 IP Length is:0192 CRC-32check OK! -the NO. 0094 IP Length is:0193 CRC-32check OK! -the NO. 0095 IP Length is:0194 CRC-32check OK! -the NO. 0096 IP Length is:0195 CRC-32check OK! -the NO. 0097 IP Length is:0196 CRC-32check OK! -the NO. 0098 IP Length is:0197 CRC-32check OK! -the NO. 0099 IP Length is:0198 CRC-32check OK! -the NO. 009a IP Length is:0199 CRC-32check OK! -the NO. 009b IP Length is:0200 CRC-32check OK! -the NO. 009c IP Length is:0201 CRC-32check OK! -the NO. 009d IP Length is:0202 CRC-32check OK! -the NO. 009e IP Length is:0203 CRC-32check OK! -the NO. 009f IP Length is:0204 CRC-32check OK! -the NO. 00a0 IP Length is:0205 CRC-32check OK! -the NO. 00a1 IP Length is:0206 CRC-32check OK! -the NO. 00a2 IP Length is:0207 CRC-32check OK! -the NO. 00a3 IP Length is:0208 CRC-32check OK! -the NO. 00a4 IP Length is:0209 CRC-32check OK! -the NO. 00a5 IP Length is:0210 CRC-32check OK! -the NO. 00a6 IP Length is:0211 CRC-32check OK! -the NO. 00a7 IP Length is:0212 CRC-32check OK! -the NO. 00a8 IP Length is:0213 CRC-32check OK! -the NO. 00a9 IP Length is:0214 CRC-32check OK! -the NO. 00aa IP Length is:0215 CRC-32check OK! -the NO. 00ab IP Length is:0216 CRC-32check OK! -the NO. 00ac IP Length is:0217 CRC-32check OK! -the NO. 00ad IP Length is:0218 CRC-32check OK! -the NO. 00ae IP Length is:0219 CRC-32check OK! -the NO. 00af IP Length is:0220 CRC-32check OK! -the NO. 00b0 IP Length is:0221 CRC-32check OK! -the NO. 00b1 IP Length is:0222 CRC-32check OK! -the NO. 00b2 IP Length is:0223 CRC-32check OK! -the NO. 00b3 IP Length is:0224 CRC-32check OK! -the NO. 00b4 IP Length is:0225 CRC-32check OK! -the NO. 00b5 IP Length is:0226 CRC-32check OK! -the NO. 00b6 IP Length is:0227 CRC-32check OK! -the NO. 00b7 IP Length is:0228 CRC-32check OK! -the NO. 00b8 IP Length is:0229 CRC-32check OK! -the NO. 00b9 IP Length is:0230 CRC-32check OK! -the NO. 00ba IP Length is:0231 CRC-32check OK! -the NO. 00bb IP Length is:0232 CRC-32check OK! -the NO. 00bc IP Length is:0233 CRC-32check OK! -the NO. 00bd IP Length is:0234 CRC-32check OK! -the NO. 00be IP Length is:0235 CRC-32check OK! -the NO. 00bf IP Length is:0236 CRC-32check OK! -the NO. 00c0 IP Length is:0237 CRC-32check OK! -the NO. 00c1 IP Length is:0238 CRC-32check OK! -the NO. 00c2 IP Length is:0239 CRC-32check OK! -the NO. 00c3 IP Length is:0240 CRC-32check OK! -the NO. 00c4 IP Length is:0241 CRC-32check OK! -the NO. 00c5 IP Length is:0242 CRC-32check OK! -the NO. 00c6 IP Length is:0243 CRC-32check OK! -the NO. 00c7 IP Length is:0244 CRC-32check OK! -the NO. 00c8 IP Length is:0245 CRC-32check OK! -the NO. 00c9 IP Length is:0246 CRC-32check OK! -the NO. 00ca IP Length is:0247 CRC-32check OK! -the NO. 00cb IP Length is:0248 CRC-32check OK! -the NO. 00cc IP Length is:0249 CRC-32check OK! -the NO. 00cd IP Length is:0250 CRC-32check OK! -the NO. 00ce IP Length is:0251 CRC-32check OK! -the NO. 00cf IP Length is:0252 CRC-32check OK! -the NO. 00d0 IP Length is:0253 CRC-32check OK! -the NO. 00d1 IP Length is:0254 CRC-32check OK! -the NO. 00d2 IP Length is:0255 CRC-32check OK! -the NO. 00d3 IP Length is:0256 CRC-32check OK! -the NO. 00d4 IP Length is:0257 CRC-32check OK! -the NO. 00d5 IP Length is:0258 CRC-32check OK! -the NO. 00d6 IP Length is:0259 CRC-32check OK! -the NO. 00d7 IP Length is:0260 CRC-32check OK! -the NO. 00d8 IP Length is:0261 CRC-32check OK! -the NO. 00d9 IP Length is:0262 CRC-32check OK! -the NO. 00da IP Length is:0263 CRC-32check OK! -the NO. 00db IP Length is:0264 CRC-32check OK! -the NO. 00dc IP Length is:0265 CRC-32check OK! -the NO. 00dd IP Length is:0266 CRC-32check OK! -the NO. 00de IP Length is:0267 CRC-32check OK! -the NO. 00df IP Length is:0268 CRC-32check OK! -the NO. 00e0 IP Length is:0269 CRC-32check OK! -the NO. 00e1 IP Length is:0270 CRC-32check OK! -the NO. 00e2 IP Length is:0271 CRC-32check OK! -the NO. 00e3 IP Length is:0272 CRC-32check OK! -the NO. 00e4 IP Length is:0273 CRC-32check OK! -the NO. 00e5 IP Length is:0274 CRC-32check OK! -the NO. 00e6 IP Length is:0275 CRC-32check OK!Simulation interrupted at 367372 NS + 0 -ncsim> exit diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Repository deleted file mode 100644 index 46dd9edc..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/out/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Repository deleted file mode 100644 index 90f69920..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/run/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Entries deleted file mode 100644 index 4ca22003..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Entries +++ /dev/null @@ -1,9 +0,0 @@ -/batch_mode.tcl/1.2/Thu Apr 6 13:12:05 2006// -/filesel.tcl/1.1/Thu Jan 19 16:18:28 2006// -/run.tcl/1.1/Thu Jan 19 16:18:28 2006// -/run_proc.tcl/1.2/Thu Apr 6 13:12:05 2006// -/set_reg_data.tcl/1.3/Thu Apr 6 13:12:05 2006// -/set_stimulus.tcl/1.2/Thu Apr 6 13:12:05 2006// -/start_verify.tcl/1.2/Thu Apr 6 13:12:05 2006// -/user_lib.tcl/1.2/Thu Apr 6 13:12:05 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Repository deleted file mode 100644 index 7e86a150..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/batch_mode.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/batch_mode.tcl deleted file mode 100644 index 9185aded..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/batch_mode.tcl +++ /dev/null @@ -1,148 +0,0 @@ -proc batch_mode {} { -variable i -variable index empty -variable batch_data -set namelist \ -{- Description Stimulus RegVector} -############################################################################### - toplevel .b - wm title .b "Setting Reg Data" - focus .b - frame .b.f100 - - set lth1 20 - set lth2 15 - set lth3 15 - cd ../data - if {[catch {open batch.dat r} fileid]} { - break - } else { - set batch_data {} - gets $fileid line - while {[eof $fileid]==0} { - lappend batch_data $line - if {[string length [lindex $line 0]] > $lth1 } { - set lth1 [string length [lindex $line 0]] - } - if {[string length [lindex $line 1]] > $lth2 } { - set lth2 [string length [lindex $line 1]] - } - if {[string length [lindex $line 2]] > $lth3 } { - set lth3 [string length [lindex $line 2]] - } - gets $fileid line - } - close $fileid - } - - label .b.f100.l1 -text [lindex $namelist 0] -fg blue -width 5 - label .b.f100.l2 -text [lindex $namelist 1] -fg blue -width [expr $lth1 +5] - label .b.f100.l3 -text [lindex $namelist 2] -fg blue -width [expr $lth2 +5] - label .b.f100.l4 -text [lindex $namelist 3] -fg blue -width [expr $lth3 +5] - pack .b.f100 - pack .b.f100.l1 .b.f100.l2 .b.f100.l3 .b.f100.l4 -side left - - set i 0 - foreach line $batch_data { - frame .b.f$i - set tmp [expr $i+1] - checkbutton .b.f$i.c -variable check$i -text $tmp -width 5 - label .b.f$i.l1 -text [lindex $line 0] -width $lth1 - button .b.f$i.b1 -text "Change" -width 5 -command [list ChangeDescript .b.f$i.l1 $i 0] - label .b.f$i.l2 -text [lindex $line 1] -width $lth2 - button .b.f$i.b2 -text "Change" -width 5 -command [list ChangeLabel .b.f$i.l2 $i 1] - label .b.f$i.l3 -text [lindex $line 2] -width $lth3 - button .b.f$i.b3 -text "Change" -width 5 -command [list ChangeLabel .b.f$i.l3 $i 2] - pack .b.f$i - pack .b.f$i.c .b.f$i.l1 .b.f$i.b1 .b.f$i.l2 .b.f$i.b2 .b.f$i.l3 .b.f$i.b3 -side left - incr i - } - - - frame .b.f102 - button .b.f102.b1 -text "Start Verify" -width 10 - button .b.f102.b2 -text "Save" -width 10 -command {save_batch_data} - button .b.f102.b3 -text "Exit" -width 10 -command {destroy .b} - pack .b.f102 - pack .b.f102.b1 .b.f102.b2 .b.f102.b3 -side left - bind .b.f102.b1 {create_index $i} - bind .b.f102.b1 {start_verify 1 $index} -} - -proc create_index {i} { - global index - set index empty - set sim_times 0 - save_batch_data - for {set c 0} {$c < $i} {incr c} { - upvar 1 check$c tmp - if {$tmp==1 && $sim_times==0} { - set index $c - incr sim_times - } elseif {$tmp==1} { - lappend index $c - incr sim_times - } - } -} - -proc ChangeLabel {target_label y x} { - global batch_data - global fileselect - fileselect - tkwait window .fileSelectWindow - if {$fileselect(canceled)==1} { - return - } elseif {$fileselect(selectedfile)==""} { - warning_message "file have not been selected!" - } else { - $target_label config -text $fileselect(selectedfile) - set line [lindex $batch_data $y] - set line [lreplace $line $x $x $fileselect(selectedfile)] - set batch_data [lreplace $batch_data $y $y $line] - } -} - -proc save_batch_data {} { - global batch_data - if {[catch {open batch.dat w} fileid]} { - break - } else { - foreach line $batch_data { - puts $fileid $line - } - close $fileid - } -} - -proc ChangeDescript {target_label y x} { - global batch_data - variable value - variable target - variable newy - variable newx - toplevel .tmp - focus .tmp - set target $target_label - set newy $y - set newx $x - entry .tmp.en -width 20 -textvariable value - button .tmp.b -width 5 -text "Apply" -command {destroy .tmp} - button .tmp.b1 -width 5 -text "quit" - bind .tmp.b {ChangeDescriptApply $target $newy $newx $value} - - - pack .tmp.en .tmp.b -} - -proc ChangeDescriptApply {target_label y x value} { - global batch_data - if {$value==""} { - warning_message "Description can not be empty" - } else { - $target_label config -text $value - set line [lindex $batch_data $y] - set line [lreplace $line 0 0 $value] - set batch_data [lreplace $batch_data $y $y $line] - } -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/filesel.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/filesel.tcl deleted file mode 100644 index c300a440..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/filesel.tcl +++ /dev/null @@ -1,325 +0,0 @@ -# -# fileselect.tcl -- -# simple file selector. -# -# Mario Jorge Silva msilva@cs.Berkeley.EDU -# University of California Berkeley Ph: +1(510)642-8248 -# Computer Science Division, 571 Evans Hall Fax: +1(510)642-5775 -# Berkeley CA 94720 -# - -# Layout: -# -# file: +----+ -# ____________________ | OK | -# +----+ -# -# +------------------+ Cancel -# | .. |S -# | file1 |c -# | file2 |r -# | |b -# | filen |a -# | |r -# +------------------+ -# currrent-directory -# -# Copyright 1993 Regents of the University of California -# Permission to use, copy, modify, and distribute this -# software and its documentation for any purpose and without -# fee is hereby granted, provided that this copyright -# notice appears in all copies. The University of California -# makes no representations about the suitability of this -# software for any purpose. It is provided "as is" without -# express or implied warranty. -# - -# Copyright 1996 - -# Slight modifications to and adoption to Tk4.0 were made to this -# fileselectionbox code by Lakshmi Sastry, Rutherford Appleton Laboratory, -# chilton, Didcot, OXON, OX11 0QX, UK. - -# You can now type in a non-existing file name as well. This file name is -# returned for the application to open a new file to write to - -# AGOCG Tcl/Tk Cookbook -# Authors - -# Lakshmi Sastry -# Computing and Information Systems Department -# Rutherford Appleton Laboratory, Chilton, Didcot. OX11 0QX -# lakshmi.sastry@rl.ac.uk - -# and - -# Venkat VSS Sastry -# Department of Applied Mathematics and Operational Research -# Cranfield University, RMCS Shrivenham, Swindon, SN6 8LA -# sastry@rmcs.cran.ac.uk - -# Permission to use, copy, modify, and distribute this -# software and its documentation for any purpose and without -# fee is hereby granted, provided that this copyright -# notice appears in all copies. - -# The authors, RAL, RMCS Shrivenham, Cranfield University and AGOCG -# make no representations about the suitability of this -# software for any purpose. It is provided "as is" without -# express or implied warranty. Likewise they accept no responsibility -# whatsoever for any public domain software modules used (which are -# hereby acknowledged) in this software - - -# names starting with "fileselect" are reserved by this module -# no other names used. - -# use the "option" command for further configuration - -option add *Listbox*font \ - "-*-helvetica-medium-r-normal-*-12-*-*-*-p-*-iso8859-1" startupFile -option add *Entry*font \ - "-*-helvetica-medium-r-normal-*-12-*-*-*-p-*-iso8859-1" startupFile -option add *Label*font \ - "-*-helvetica-medium-r-normal-*-12-*-*-*-p-*-iso8859-1" startupFile - - -# this is the default proc called when "OK" is pressed -# to indicate yours, give it as the first arg to "fileselect" - -proc fileselect.default.cmd {f} { -global fileselect -set fileselect(selectedfile) $f -set fileselect(canceled) 0 -#puts stderr "selected file $f" - -} - - -# this is the default proc called when error is detected -# indicate your own pro as an argument to fileselect - -proc fileselect.default.errorHandler {errorMessage} { - puts stdout "error: $errorMessage" - catch { cd ~ } -} - -# this is the proc that creates the file selector box - -proc fileselect { - {cmd fileselect.default.cmd} - {purpose "Open file:"} - {w .fileSelectWindow} - {errorHandler fileselect.default.errorHandler}} { - - catch {destroy $w} - - toplevel $w - grab $w - wm title $w "Select File" - - - # path independent names for the widgets - global fileselect - global selected - set fileselect(entry) $w.file.eframe.entry - set fileselect(list) $w.file.sframe.list - set fileselect(scroll) $w.file.sframe.scroll - set fileselect(ok) $w.bframe.okframe.ok - set fileselect(cancel) $w.bframe.cancel - set fileselect(dirlabel) $w.file.dirlabel - - # widgets - frame $w.file -bd 10 - frame $w.bframe -bd 10 - pack append $w \ - $w.file {left filly} \ - $w.bframe {left expand frame n} - - frame $w.file.eframe - frame $w.file.sframe - label $w.file.dirlabel -anchor e -width 24 -text [pwd] - - pack append $w.file \ - $w.file.eframe {top frame w} \ - $w.file.sframe {top fillx} \ - $w.file.dirlabel {top frame w} - - - label $w.file.eframe.label -anchor w -width 24 -text $purpose - entry $w.file.eframe.entry -relief sunken - - pack append $w.file.eframe \ - $w.file.eframe.label {top expand frame w} \ - $w.file.eframe.entry {top fillx frame w} - - - scrollbar $w.file.sframe.yscroll -relief sunken \ - -command "$w.file.sframe.list yview" - listbox $w.file.sframe.list -relief sunken -selectmode single \ - -yscroll "$w.file.sframe.yscroll set" - #$fileselect(list) configure -selectmode single - pack append $w.file.sframe \ - $w.file.sframe.yscroll {right filly} \ - $w.file.sframe.list {left expand fill} - - # buttons - frame $w.bframe.okframe -borderwidth 2 -relief sunken - - button $w.bframe.okframe.ok -text OK -relief raised -padx 10 \ - -command "fileselect.ok.cmd $w $cmd $errorHandler" - - button $w.bframe.cancel -text cancel -relief raised -padx 10 \ - -command "fileselect.cancel.cmd $w" - pack append $w.bframe.okframe $w.bframe.okframe.ok {padx 10 pady 10} - - pack append $w.bframe $w.bframe.okframe {expand padx 20 pady 20}\ - $w.bframe.cancel {top} - - # Fill the listbox with a list of the files in the directory (run - # the "/bin/ls" command to get that information). - # to not display the "." files, remove the -a option and fileselect - # will still work - - $fileselect(list) insert end ".." - foreach i [exec ls -a [pwd]] { - if {[string compare $i "."] != 0 && \ - [string compare $i ".."] != 0 } { - $fileselect(list) insert end $i - } - } - - # Set up bindings for the browser. - bind $fileselect(entry) {eval $fileselect(ok) invoke} - bind $fileselect(entry) {eval $fileselect(cancel) invoke} - - bind $fileselect(list) { - # puts stderr "button 1 release" - set x [$fileselect(list) curselection] - $fileselect(entry) delete 0 end - $fileselect(entry) insert 0 [%W get [%W nearest %y]] - } - - bind $fileselect(list) { - set x [$fileselect(list) curselection] - $fileselect(entry) delete 0 end - $fileselect(entry) insert 0 [%W get [%W nearest %y]] - } - - bind $fileselect(list) { - # puts stderr "double button 1" - set x [$fileselect(list) curselection] - $fileselect(entry) delete 0 end - $fileselect(entry) insert 0 [%W get [%W nearest %y]] - $fileselect(ok) invoke - } - - bind $fileselect(list) { - set x [$fileselect(list) curselection] - $fileselect(entry) delete 0 end - $fileselect(entry) insert 0 [%W get [%W nearest %y]] - $fileselect(ok) invoke - } - - # set kbd focus to entry widget - - focus $fileselect(entry) - -} - - -# auxiliary button procedures - -proc fileselect.cancel.cmd {w} { - # puts stderr "Cancel" - global fileselect - set fileselect(canceled) 1 - destroy $w -} - -proc fileselect.ok.cmd {w cmd errorHandler} { - global fileselect - global selected - set selected [$fileselect(entry) get] - # some nasty file names may cause "file isdirectory" to return an error - set sts [catch { - file isdirectory $selected - } errorMessage ] - - if { $sts != 0 } then { - $errorHandler $errorMessage - destroy $w - return - - } - - # clean the text entry and prepare the list - $fileselect(entry) delete 0 end - $fileselect(list) delete 0 end - $fileselect(list) insert end ".." - - # perform globbing on the selection. - # If globing returns an error (no match) check if a non-null name is - # entered. If name string is non-empty return it as a new file name - # else give an error message. - # If resulting list length > 1, put the list on the file listbox and return - # If globing expands to a list of filenames in multiple directories, - # the indicated regexp is invalid and the error handler is called instead. -set globlist 0 - - set sts [catch { - set globlist [glob [list $selected]] - } errorMessage ] - - if { $sts != 0 } then { - if { [llength $globlist] == 1 } { - destroy $w - $cmd $selected - return - } else { - - $errorHandler $errorMessage - destroy $w - return - - } - - - } - - if {[llength $globlist] > 1} { - if {[regexp "/" $globlist] != 0} { - $errorHandler [list "Invalid regular expression, " $selected, "."] - destroy $w - return - } - foreach i $globlist { - if {[string compare $i "."] != 0 && \ - [string compare $i ".."] != 0} { - $fileselect(list) insert end $i - } - } - return - } - - # selection may be a directory. Expand it. - - if {[file isdirectory $selected] != 0} { - cd $selected - set dir [pwd] - $fileselect(dirlabel) configure -text $dir - - foreach i [exec ls -a $dir] { - if {[string compare $i "."] != 0 && \ - [string compare $i ".."] != 0} { - $fileselect(list) insert end $i - } - } - return - } - - destroy $w - $cmd $selected - -} - diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run.tcl deleted file mode 100644 index ac8a307d..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run.tcl +++ /dev/null @@ -1,26 +0,0 @@ -source user_lib.tcl -source set_stimulus.tcl -source set_reg_data.tcl -source start_verify.tcl -source batch_mode.tcl -source filesel.tcl - - -wm title . "main" -frame .frame -button .frame.b1 -width 20 -text "set_stimulus" -button .frame.b2 -width 20 -text "set_cpu_data" -button .frame.b3 -width 20 -text "start_verify" -button .frame.b4 -width 20 -text "batch_mode" -button .frame.b40 -width 20 -text "exit" - -bind .frame.b1 {set_stimulus} -bind .frame.b2 {set_reg_data} -bind .frame.b3 {start_verify 0 empty} -bind .frame.b4 {batch_mode} -bind .frame.b40 {exit} - - -pack .frame .frame.b1 .frame.b2 .frame.b3 .frame.b4 .frame.b40 - - \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run_proc.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run_proc.tcl deleted file mode 100644 index 294cb2c7..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/run_proc.tcl +++ /dev/null @@ -1,27 +0,0 @@ -proc run_proc {} { -source user_lib.tcl -source set_stimulus.tcl -source set_reg_data.tcl -source start_verify.tcl -source batch_mode.tcl -source filesel.tcl - -toplevel .frame -focus .frame -wm title .frame "main" -button .frame.b1 -width 20 -text "set_stimulus" -button .frame.b2 -width 20 -text "set_cpu_data" -button .frame.b3 -width 20 -text "start_verify" -button .frame.b4 -width 20 -text "batch_mode" -button .frame.b40 -width 20 -text "exit" -command {cd ../../../../ ;destroy .frame} - -bind .frame.b1 {set_stimulus} -bind .frame.b2 {set_reg_data} -bind .frame.b3 {start_verify 0 empty} -bind .frame.b4 {batch_mode} - - - -pack .frame.b1 .frame.b2 .frame.b3 .frame.b4 .frame.b40 - -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_reg_data.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_reg_data.tcl deleted file mode 100644 index b4bfae35..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_reg_data.tcl +++ /dev/null @@ -1,192 +0,0 @@ -proc set_reg_data {} { -variable help_strings -variable RegVector -variable datalist -set help_strings { -Set Reg Data: - The verifcation system will config DUT(Design Under Test) -with those data automatically at startup time. You must read -the tri-mode thernet spec-doc before setting the REG.Only the -correct configuration can make sitmulation continue.} - -set namelist { -RegName Address default Data} -set datalist { - -{Tx_Hwmark 0 0x001e 0x001e} -{Tx_Lwmark 1 0x0019 0x0019} -{pause_frame_send_en 2 0x0000 0x0000} -{pause_quanta_set 3 0x0000 0x0000} -{IFGset 4 0x001e 0x001e} -{FullDuplex 5 0x0001 0x0001} -{MaxRetry 6 0x0002 0x0002} -{MAC_tx_add_en 7 0x0000 0x0000} -{MAC_tx_add_prom_data 8 0x0000 0x0000} -{MAC_tx_add_prom_add 9 0x0000 0x0000} -{MAC_tx_add_prom_wr 10 0x0000 0x0000} -{tx_pause_en 11 0x0000 0x0000} -{xoff_cpu 12 0x0000 0x0000} -{xon_cpu 13 0x0000 0x0000} -{MAC_rx_add_chk_en 14 0x0000 0x0000} -{MAC_rx_add_prom_data 15 0x0000 0x0000} -{MAC_rx_add_prom_add 16 0x0000 0x0000} -{MAC_rx_add_prom_wr 17 0x0000 0x0000} -{broadcast_filter_en 18 0x0000 0x0000} -{broadcast_bucket_depth 19 0x0000 0x0000} -{broadcast_bucket_interval 20 0x0000 0x0000} -{RX_APPEND_CRC 21 0x0000 0x0000} -{Rx_Hwmark 22 0x001a 0x001a} -{Rx_Lwmark 23 0x0010 0x0010} -{CRC_chk_en 24 0x0000 0x0000} -{RX_IFG_SET 25 0x001e 0x001e} -{RX_MAX_LENGTH 26 0x2710 0x2710} -{RX_MIN_LENGTH 27 0x0040 0x0040} -{CPU_rd_addr 28 0x0000 0x0000} -{CPU_rd_apply 29 0x0000 0x0000} -{Line_loop_en 33 0x0000 0x0000} -{Speed 34 0x0004 0x0004} -} - -cd ../data - - if {[catch {open CPU.vec r} fileid]} { - set RegVector {} - } else { - set RegVector {} - gets $fileid line - while {[eof $fileid]==0} { - scan $line "%02x%02x%04x" counter addr NewValue - set y [search_add $addr] - if {$y!=-1} { - set x [lindex $datalist $y] - set x [lreplace $x 3 3 [format "0x%04x" $NewValue]] - set datalist [lreplace $datalist $y $y $x] - lappend RegVector "$y $NewValue" - } - gets $fileid line - } - close $fileid - - } - -toplevel .p -wm title .p "Setting Reg Data" -focus .p -frame .p.f1 -frame .p.f2 -pack .p.f1 .p.f2 -side top - -frame .p.f1.f1 -frame .p.f1.f2 -frame .p.f1.f3 -frame .p.f1.f4 -frame .p.f1.f5 -pack .p.f1.f1 .p.f1.f2 .p.f1.f3 .p.f1.f4 .p.f1.f5 -side left - -label .p.f1.f1.l100 -text [lindex $namelist 0] -fg blue -label .p.f1.f2.l100 -text [lindex $namelist 1] -fg blue -width 10 -label .p.f1.f3.l100 -text [lindex $namelist 2] -fg blue -width 5 -label .p.f1.f4.l100 -text [lindex $namelist 3] -fg blue -width 10 - -pack .p.f1.f1.l100 .p.f1.f2.l100 .p.f1.f3.l100 .p.f1.f4.l100 - -for {set i 0} {$i < [llength $datalist]} {incr i} { - label .p.f1.f1.l$i -text [lindex [lindex $datalist $i] 0] - label .p.f1.f2.l$i -text [lindex [lindex $datalist $i] 1] - label .p.f1.f3.l$i -text [lindex [lindex $datalist $i] 2] - entry .p.f1.f4.en$i -width 10 - .p.f1.f4.en$i insert 0 [lindex [lindex $datalist $i] 3] - if {[lindex [lindex $datalist $i] 2] !=[lindex [lindex $datalist $i] 3]} { - .p.f1.f4.en$i config -fg red - } - pack .p.f1.f1.l$i .p.f1.f2.l$i .p.f1.f3.l$i .p.f1.f4.en$i - bind .p.f1.f4.en$i [list CheckModify .p.f1.f4.en$i $i ] -} - - -button .p.f2.b1 -text "Save" -width 10 -command {WriteVect CPU.vec} -button .p.f2.b2 -text "SaveAs" -width 10 -command {WriteVect [reg_save_as]} -button .p.f2.b3 -text "Exit" -width 10 -command {destroy .p} -button .p.f2.b4 -text "Help" -width 10 -command {print_help $help_strings} -pack .p.f2.b1 .p.f2.b2 .p.f2.b3 .p.f2.b4 -side left -bind .p.f2.b1 {focus .p} - - -} - -proc CheckModify {target_en index} { - global RegVector - global datalist - set data [$target_en get] - set NewValue "$index $data" - - - if {[info exists RegVector]} { - set counter [llength $RegVector] - for {set c 0} {$c<$counter} {incr c} { - if {[lindex [lindex $RegVector $c] 0]== $index} { - if {[lindex [lindex $datalist $index] 2]==$data} { - $target_en config -fg black - set RegVector [lreplace $RegVector $c $c] - } else { - set RegVector [lreplace $RegVector $c $c $NewValue] - } - return - } - } - } - if {[lindex [lindex $datalist $index] 3]==$data} { - return - } else { - $target_en config -fg red - set RegVector [lappend RegVector $NewValue] - } -} - -proc WriteVect {filename} { - global RegVector - global datalist - if {[info exists RegVector]} { - set counter [llength $RegVector] - if {[catch {open $filename w} fileid]} { - puts {failed to open vector file "$filename"} - destrop .p - } else { - for {set i 0} {$i < $counter} {incr i} { - set addr [lindex [lindex $datalist [lindex [lindex $RegVector $i] 0]] 1] - set NewValue [lindex [lindex $RegVector $i] 1] - puts $fileid [format "%02x%02x%04x" $counter $addr $NewValue] - } - close $fileid - unset RegVector - destroy .p - } - } else { - destroy .p - } -} - -proc reg_save_as {} { - global fileselect - fileselect - tkwait window .fileSelectWindow - if {$fileselect(canceled)==1} { - return - } elseif {$fileselect(selectedfile)==""} { - warning_message "file have not been selected!" - } else { - return $fileselect(selectedfile) - } -} - -proc search_add {addr} { - global datalist - set n 0 - foreach line $datalist { - if {[lindex $line 1]==$addr} { - return $n - } - incr n - } - return -1 -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_stimulus.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_stimulus.tcl deleted file mode 100644 index 2bc42d7b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/set_stimulus.tcl +++ /dev/null @@ -1,101 +0,0 @@ -proc set_stimulus {} { - toplevel .stimulus - focus .stimulus - wm title .stimulus "Setting Stimulus Prameters" - - variable StartLength - variable EndLength - variable PacketNumber - variable Random - variable Broadcast - variable help_string - -set help_string { -Set Stimulus Help: - You can select to generate packet with sequential packet length or -random packet length. If you choise random packet length, the length of -generated packet will be a random value between the "Packet begin length" -to the "Packet end length". "Total Gen Packet number"is used to set the -number of packet will be generated as stimulus - As well, you can select "sequence" mode . The first Packet will be -generated with "Packet begin length",and the next Packet length will be -"Packet begin length" pluse one untile the packet length reach the value -of "Packet end length". Packet in each length will be generated according -to the value of "Packet number per length" } - - - if {[catch {open ../data/config.ini r} fileid]} { - set StartLength 46 - set EndLength 60 - set PacketNumber 1 - set Random 0 - set Broadcast 0 - } \ - else { - gets $fileid content - scan $content "%d,%d,%d,%d,%d" StartLength EndLength PacketNumber Random Broadcast - close $fileid - } - - frame .stimulus.f1 - label .stimulus.f1.lb -text "Packet begin length:" - entry .stimulus.f1.en -textvariable StartLength - pack .stimulus.f1 -fill x - pack .stimulus.f1.en .stimulus.f1.lb -side right - - frame .stimulus.f2 - label .stimulus.f2.lb -text "Packet end length:" - entry .stimulus.f2.en -textvariable EndLength - pack .stimulus.f2 -fill x - pack .stimulus.f2.en .stimulus.f2.lb -side right - - - frame .stimulus.f3 - label .stimulus.f3.lb -text "Packet number per length:" - entry .stimulus.f3.en -textvariable PacketNumber - pack .stimulus.f3 -fill x - pack .stimulus.f3.en .stimulus.f3.lb -side right - - frame .stimulus.f4 - radiobutton .stimulus.f4.1 -text "Sequence" -variable Random -value 0 \ - -command {.stimulus.f3.lb config -text "Packet number per length:"} - radiobutton .stimulus.f4.2 -text "Random" -variable Random -value 1 \ - -command {.stimulus.f3.lb config -text "Total Gen Packet number:"} - pack .stimulus.f4 -fill x - pack .stimulus.f4.1 .stimulus.f4.2 -side right - - frame .stimulus.f5 - checkbutton .stimulus.f5.1 -text "Broadcast" -variable Broadcast - pack .stimulus.f5 -fill x - pack .stimulus.f5.1 -side right - - frame .stimulus.f20 - button .stimulus.f20.1 -text "Save" -width 10 \ - -command { set fileid [open ../data/config.ini w 0600] - puts $fileid "$StartLength,$EndLength,$PacketNumber,$Random,$Broadcast" - close $fileid - destroy .stimulus - } - button .stimulus.f20.2 -text "Save as" -command {sti_save_as $StartLength $EndLength $PacketNumber $Random $Broadcast} -width 10 - button .stimulus.f20.3 -text "Cancel" -command {destroy .stimulus} -width 10 - button .stimulus.f20.4 -text "Help" -width 10 -command {print_help $help_string} - pack .stimulus.f20 -fill x - pack .stimulus.f20.1 .stimulus.f20.2 .stimulus.f20.3 .stimulus.f20.4 -side left -} - -proc sti_save_as {StartLength EndLength PacketNumber Random Broadcast} { - global fileselect - cd ../data - fileselect - tkwait window .fileSelectWindow - if {$fileselect(canceled)==1} { - return - } elseif {$fileselect(selectedfile)==""} { - warning_message "file have not been selected!" - } else { - set fileid [open $fileselect(selectedfile) w 0600] - puts $fileid "$StartLength,$EndLength,$PacketNumber,$Random,$Broadcast" - close $fileid - destroy .stimulus - } -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/start_verify.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/start_verify.tcl deleted file mode 100644 index 3209e630..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/start_verify.tcl +++ /dev/null @@ -1,127 +0,0 @@ -proc start_verify {batch index} { -variable compiling -variable simulate_times -variable test_case_number -variable batch_data {} -variable batchmode -variable piple -############################################################################### - set batchmode $batch - toplevel .l - focus .l - wm title .l "Simulation Log" - frame .l.f1 - frame .l.f2 - pack .l.f1 .l.f2 -side top - - text .l.f1.t1 -width 80 -height 40 -yscrollcommand {.l.f1.scroll set} - - scrollbar .l.f1.scroll -command {.l.f1.t1 yview} - button .l.f2.b1 -text "Exit" -command {destroy .l} -width 10 - button .l.f2.b2 -text "Stop" -command {Stop_sim} -width 10 - pack .l.f1.scroll -side right -fill y - pack .l.f1.t1 - pack .l.f2.b1 .l.f2.b2 -side left - - set output_win .l.f1.t1 - set simulate_times 0 - set test_case_number [lindex $index 0] - cd ../bin - set compiling 1 - if {$batch==0} { - Run "bash sim.nc " $output_win - } elseif {[catch {open ../data/batch.dat r} fileid]} { - $output_win insert end "Failed open ../data/batch.dat file\n" - } elseif {[lindex $index 0] == "empty"} { - $output_win insert end "Not any test case was selected\n" - } else { - set i 0 - gets $fileid line - while {[eof $fileid]==0} { - lappend batch_data $line - gets $fileid line - incr i - } - $output_win insert end "Verifcation Started\n" - $output_win insert end "Starting Compiling Source file and libs......\n" - Run "bash com.nc" $output_win - close $fileid - } -} - -proc Run {command output_win} { - global piple - if [catch {open "|$command |& cat "} piple] { - $output_win insert end $piple\n - } else { - fileevent $piple readable [list Log $piple $output_win] - } -} - -proc Log {piple output_win} { - global compiling - global batchmode - set saparator "###################################################################\n" - if {[eof $piple]} { - if {$batchmode==0} { - $output_win insert end $saparator - $output_win insert end "end of Simulation....\n" - $output_win insert end $saparator - } elseif {$compiling==1} { - $output_win insert end $saparator - $output_win insert end "end of Compiling....\n" - $output_win insert end $saparator - $output_win insert end "\n \n \n" - set compiling 0 - sim_next_case - } else { - $output_win insert end $saparator - $output_win insert end "end of Testcase....\n" - $output_win insert end $saparator - $output_win insert end "\n \n \n" - sim_next_case - } - close $piple - } else { - gets $piple line - $output_win insert end $line\n - $output_win see end - } -} - -proc sim_next_case {} { - global test_case_number - global simulate_times - global batch_data - global index - set saparator "###################################################################\n" - set output_win .l.f1.t1 - set test_case_number [lindex $index $simulate_times] - if {$simulate_times < [llength $index]} { - set line [lindex $batch_data $test_case_number] - set source_sti [lindex $line 1] - set source_reg [lindex $line 2] - - if {$simulate_times==0 ||[file exists "../log/.sim_succeed"]} { - exec cp "../data/$source_sti" "../data/config.ini" - exec cp "../data/$source_reg" "../data/CPU.vec" - - $output_win insert end $saparator - $output_win insert end "starting test case :[lindex $line 0]....\n" - $output_win insert end $saparator - $output_win insert end "\n \n \n" - incr simulate_times - Run "bash sim_only.nc" $output_win - } else { - $output_win insert end "test_case :[lindex $line 0] simulation failed!!\n" - } - - } else { - $output_win insert end "All test_case passed simulation Successfully!!\n" - } -} - -proc Stop_sim {} { - global piple - catch {close $piple} -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/user_lib.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/user_lib.tcl deleted file mode 100644 index 14b4302b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/script/user_lib.tcl +++ /dev/null @@ -1,17 +0,0 @@ -proc print_help {help_string} { - toplevel .help - frame .help.1 - message .help.1.1 -text $help_string -width 10c - frame .help.2 - button .help.2.1 -text "exit" -command {destroy .help} -width 10 - pack .help.1 .help.2 .help.1.1 .help.2.1 -} - -proc warning_message {warning_string} { - toplevel .warning - frame .warning.1 - message .warning.1.1 -text $warning_string -width 10c - frame .warning.2 - button .warning.2.1 -text "exit" -command {destroy .warning} -width 10 - pack .warning.1 .warning.2 .warning.1.1 .warning.2.1 -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/start.tcl b/usrp2/fpga/opencores/ethernet_tri_mode/start.tcl deleted file mode 100644 index 42d11c15..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/start.tcl +++ /dev/null @@ -1,180 +0,0 @@ -variable MAC_SOURCE_REPLACE_EN -variable MAC_TARGET_CHECK_EN -variable MAC_BROADCAST_FILTER_EN -variable MAC_TX_FF_DEPTH -variable MAC_RX_FF_DEPTH -variable header_data - -source sim/rtl_sim/ncsim_sim/script/run_proc.tcl - -frame .f1 -frame .f2 -text .f1.t1 -width 60 -height 20 -button .f2.b1 -text "Quit" -width 5 -command {exit} -button .f2.b2 -text "Next" -width 5 -command {module_conf} - -pack .f1 .f2 -pack .f1.t1 -pack .f2.b1 .f2.b2 -side left - -set strings \ -{Hi guys, - Thanks for your interest about this tri-speed ethernet MAC controller. -Since this project was created at 25-Nov-2005,I put almost all my free time -on this project.I am exhausted for this two month's extra work.If you think -this project is useful,let me know that and i will feel much better. - - To increase the flexibility, some optional modules can be removed from -the design to reduce area. - - Any problem or bug report please contact me by email: - gaojon@yahoo.com - - - - - - - jon - 18-Jan-2006 -} - -.f1.t1 insert end $strings - -proc module_conf {} { - global MAC_SOURCE_REPLACE_EN - global MAC_TARGET_CHECK_EN - global MAC_BROADCAST_FILTER_EN - global MAC_TX_FF_DEPTH - global MAC_RX_FF_DEPTH - global header_data - - if {[catch {open ./rtl/verilog/header.v r} fileid]} { - puts "Failed open ./rtl/verilog/header.v file\n" - } else { - gets $fileid line - if {[lindex $line 0]=="//"} { - set line [lreplace $line 0 0] - set MAC_SOURCE_REPLACE_EN 0 - } else { - set MAC_SOURCE_REPLACE_EN 1 - } - lappend header_data $line - gets $fileid line - if {[lindex $line 0]=="//"} { - set line [lreplace $line 0 0] - set MAC_TARGET_CHECK_EN 0 - } else { - set MAC_TARGET_CHECK_EN 1 - } - lappend header_data $line - gets $fileid line - if {[lindex $line 0]=="//"} { - set line [lreplace $line 0 0] - set MAC_BROADCAST_FILTER_EN 0 - } else { - set MAC_BROADCAST_FILTER_EN 1 - } - lappend header_data $line - gets $fileid line - set MAC_TX_FF_DEPTH [lindex $line 2] - lappend header_data $line - gets $fileid line - set MAC_RX_FF_DEPTH [lindex $line 2] - lappend header_data $line - close $fileid - } - - destroy .f1 .f2 - frame .f1 - frame .f2 - frame .f1.f1 - frame .f1.f2 - frame .f1.f3 - frame .f1.f4 - frame .f1.f5 - frame .f1.f6 - - pack .f1 .f2 - pack .f1.f1 .f1.f2 .f1.f3 .f1.f4 .f1.f5 .f1.f6 - label .f1.f1.lb -text "enable source MAC replace module" -width 30 - checkbutton .f1.f1.cb -variable MAC_SOURCE_REPLACE_EN - label .f1.f2.lb -text "enable target MAC check module " -width 30 - checkbutton .f1.f2.cb -variable MAC_TARGET_CHECK_EN - label .f1.f3.lb -text "enable broadcast packet filter module" -width 30 - checkbutton .f1.f3.cb -variable MAC_BROADCAST_FILTER_EN - - label .f1.f4.lb -text "MAC_TX_FF_DEPTH" -width 30 - entry .f1.f4.en -textvariable MAC_TX_FF_DEPTH -width 5 - label .f1.f5.lb -text "MAC_RX_FF_DEPTH" -width 30 - entry .f1.f5.en -textvariable MAC_RX_FF_DEPTH -width 5 - - button .f2.b1 -width 10 -text "Save" -command {save_header} - button .f2.b2 -width 10 -text "Verify" -command {run_sim} - button .f2.b4 -width 10 -text "Exit" -command {exit} - - pack .f1.f1.cb .f1.f1.lb -side right - pack .f1.f2.cb .f1.f2.lb -side right - pack .f1.f3.cb .f1.f3.lb -side right - pack .f1.f4.en .f1.f4.lb -side right - pack .f1.f5.en .f1.f5.lb -side right - - pack .f2.b1 .f2.b2 .f2.b4 -side left - -} - -proc save_header {} { - global MAC_SOURCE_REPLACE_EN - global MAC_TARGET_CHECK_EN - global MAC_BROADCAST_FILTER_EN - global MAC_TX_FF_DEPTH - global MAC_RX_FF_DEPTH - global header_data - if {[catch {open ./rtl/verilog/header.v w} fileid]} { - puts "Failed open ./rtl/verilog/header.v file\n" - } else { - set line [lindex $header_data 0] - if {$MAC_SOURCE_REPLACE_EN==0} { - set line [linsert $line 0 "//"] - } - puts $fileid $line - - set line [lindex $header_data 1] - if {$MAC_TARGET_CHECK_EN==0} { - set line [linsert $line 0 "//"] - } - puts $fileid $line - - set line [lindex $header_data 2] - if {$MAC_BROADCAST_FILTER_EN==0} { - set line [linsert $line 0 "//"] - } - puts $fileid $line - - set line [lindex $header_data 3] - set line [lreplace $line 2 2 $MAC_TX_FF_DEPTH] - puts $fileid $line - - set line [lindex $header_data 4] - set line [lreplace $line 2 2 $MAC_RX_FF_DEPTH] - puts $fileid $line - - close $fileid - } - -} - -proc start_verify {} { - cd sim/rtl_sim/ncsim_sim/script - vish run.tcl -} - -proc start_syn {} { - cd syn - synplify_pro syn.prj -} - -proc run_sim {} { - cd sim/rtl_sim/ncsim_sim/script/ - run_proc -} \ No newline at end of file diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Entries b/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Entries deleted file mode 100644 index b6b97bde..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/syn.prj/1.2/Thu Jan 19 14:07:57 2006// -/syn_altrea.prj/1.1/Sun Jun 25 05:09:02 2006// -/syn_xilinx.prj/1.1/Sun Jun 25 05:09:02 2006// -D diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Repository b/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Repository deleted file mode 100644 index 300767ca..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -ethernet_tri_mode/syn diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Root b/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Template b/usrp2/fpga/opencores/ethernet_tri_mode/syn/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn.prj b/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn.prj deleted file mode 100644 index 568a7a4e..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn.prj +++ /dev/null @@ -1,86 +0,0 @@ -#-- Synplicity, Inc. -#-- Version Synplify 8.1 -#-- Project file D:\root\home\ethernet_tri_mode\syn\syn.prj -#-- Written on Thu Jan 19 20:25:55 2006 - - -#add_file options -add_file -verilog "../rtl/verilog/header.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_FF.v" -add_file -verilog "../rtl/verilog/MAC_tx/Ramdon_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/CRC_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_addr_add.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_Ctrl.v" -add_file -verilog "../rtl/verilog/MAC_tx/flow_ctrl.v" -add_file -verilog "../rtl/verilog/MAC_rx/CRC_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_add_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_FF.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_addr_gen.v" -add_file -verilog "../rtl/verilog/RMON/RMON_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_dpram.v" -add_file -verilog "../rtl/verilog/MAC_rx/Broadcast_filter.v" -add_file -verilog "../rtl/verilog/TECH/duram.v" -add_file -verilog "../rtl/verilog/RMON.v" -add_file -verilog "../rtl/verilog/MAC_rx.v" -add_file -verilog "../rtl/verilog/MAC_tx.v" -add_file -verilog "../rtl/verilog/miim/eth_clockgen.v" -add_file -verilog "../rtl/verilog/miim/eth_outputcontrol.v" -add_file -verilog "../rtl/verilog/miim/eth_shiftreg.v" -add_file -verilog "../rtl/verilog/miim/timescale.v" -add_file -verilog "../rtl/verilog/TECH/CLK_SWITCH.v" -add_file -verilog "../rtl/verilog/TECH/CLK_DIV2.v" -add_file -verilog "../rtl/verilog/eth_miim.v" -add_file -verilog "../rtl/verilog/Clk_ctrl.v" -add_file -verilog "../rtl/verilog/Phy_int.v" -add_file -verilog "../rtl/verilog/Reg_int.v" -add_file -verilog "../rtl/verilog/MAC_top.v" - - -#implementation: "syn" -impl -add syn - -#device options -set_option -technology STRATIX -set_option -part EP1S10 -set_option -package FC780 -set_option -speed_grade -5 - -#compilation/mapping options -set_option -default_enum_encoding onehot -set_option -symbolic_fsm_compiler 0 -set_option -resource_sharing 1 -set_option -use_fsm_explorer 0 - -#map options -set_option -frequency auto -set_option -run_prop_extract 0 -set_option -fanout_limit 500 -set_option -disable_io_insertion 0 -set_option -pipe 1 -set_option -update_models_cp 0 -set_option -retiming 0 -set_option -verification_mode 0 -set_option -fixgatedclocks 0 -set_option -no_sequential_opt 0 - -#simulation options -set_option -write_verilog 1 -set_option -write_vhdl 0 - -#automatic place and route (vendor) options -set_option -write_apr_constraint 0 - -#set result format/file last -project -result_file "./MAC_top.vqm" - -# -#implementation attributes - -set_option -vlog_std v2001 -set_option -project_relative_includes 1 - -#par_1 attributes -set_option -job par_1 -add par -set_option -job par_1 -option run_backannotation 0 -impl -active "syn" diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_altrea.prj b/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_altrea.prj deleted file mode 100644 index e227ea67..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_altrea.prj +++ /dev/null @@ -1,91 +0,0 @@ -#-- Synplicity, Inc. -#-- Version Synplify Pro 8.1 -#-- Project file D:\root\home\ethernet_tri_mode\syn\syn_altrea.prj -#-- Written on Sun Jun 25 09:40:49 2006 - - -#add_file options -add_file -verilog "../rtl/verilog/header.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_FF.v" -add_file -verilog "../rtl/verilog/MAC_tx/Ramdon_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/CRC_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_addr_add.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_Ctrl.v" -add_file -verilog "../rtl/verilog/MAC_tx/flow_ctrl.v" -add_file -verilog "../rtl/verilog/MAC_rx/CRC_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_add_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_FF.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_addr_gen.v" -add_file -verilog "../rtl/verilog/RMON/RMON_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_dpram.v" -add_file -verilog "../rtl/verilog/MAC_rx/Broadcast_filter.v" -add_file -verilog "../rtl/verilog/RMON.v" -add_file -verilog "../rtl/verilog/MAC_rx.v" -add_file -verilog "../rtl/verilog/MAC_tx.v" -add_file -verilog "../rtl/verilog/miim/eth_clockgen.v" -add_file -verilog "../rtl/verilog/miim/eth_outputcontrol.v" -add_file -verilog "../rtl/verilog/miim/eth_shiftreg.v" -add_file -verilog "../rtl/verilog/miim/timescale.v" -add_file -verilog "../rtl/verilog/TECH/altera/duram.v" -add_file -verilog "../rtl/verilog/TECH/altera/CLK_SWITCH.v" -add_file -verilog "../rtl/verilog/TECH/altera/CLK_DIV2.v" -add_file -verilog "../rtl/verilog/eth_miim.v" -add_file -verilog "../rtl/verilog/Clk_ctrl.v" -add_file -verilog "../rtl/verilog/Phy_int.v" -add_file -verilog "../rtl/verilog/Reg_int.v" -add_file -verilog "../rtl/verilog/MAC_top.v" - - -#implementation: "syn" -impl -add syn - -#device options -set_option -technology STRATIX -set_option -part EP1S30 -set_option -package FC780 -set_option -speed_grade -5 - -#compilation/mapping options -set_option -default_enum_encoding onehot -set_option -symbolic_fsm_compiler 0 -set_option -resource_sharing 1 -set_option -use_fsm_explorer 0 -set_option -top_module "MAC_top" - -#map options -set_option -frequency auto -set_option -run_prop_extract 0 -set_option -fanout_limit 500 -set_option -disable_io_insertion 0 -set_option -pipe 1 -set_option -update_models_cp 0 -set_option -retiming 0 -set_option -verification_mode 0 -set_option -fixgatedclocks 0 -set_option -no_sequential_opt 0 - -#simulation options -set_option -write_verilog 1 -set_option -write_vhdl 0 - -#VIF options -set_option -write_vif 1 - -#automatic place and route (vendor) options -set_option -write_apr_constraint 0 - -#set result format/file last -project -result_file "./MAC_top.vqm" - -# -#implementation attributes - -set_option -vlog_std v2001 -set_option -dup 0 -set_option -project_relative_includes 1 - -#par_1 attributes -set_option -job par_1 -add par -set_option -job par_1 -option run_backannotation 0 -impl -active "syn" diff --git a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_xilinx.prj b/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_xilinx.prj deleted file mode 100644 index 94435b4b..00000000 --- a/usrp2/fpga/opencores/ethernet_tri_mode/syn/syn_xilinx.prj +++ /dev/null @@ -1,92 +0,0 @@ -#-- Synplicity, Inc. -#-- Version Synplify Pro 8.1 -#-- Project file D:\root\home\ethernet_tri_mode\syn\syn_xilinx.prj -#-- Written on Sun Jun 25 09:43:29 2006 - - -#add_file options -add_file -verilog "../rtl/verilog/header.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_FF.v" -add_file -verilog "../rtl/verilog/MAC_tx/Ramdon_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/CRC_gen.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_addr_add.v" -add_file -verilog "../rtl/verilog/MAC_tx/MAC_tx_Ctrl.v" -add_file -verilog "../rtl/verilog/MAC_tx/flow_ctrl.v" -add_file -verilog "../rtl/verilog/MAC_rx/CRC_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_add_chk.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_FF.v" -add_file -verilog "../rtl/verilog/MAC_rx/MAC_rx_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_addr_gen.v" -add_file -verilog "../rtl/verilog/RMON/RMON_ctrl.v" -add_file -verilog "../rtl/verilog/RMON/RMON_dpram.v" -add_file -verilog "../rtl/verilog/MAC_rx/Broadcast_filter.v" -add_file -verilog "../rtl/verilog/RMON.v" -add_file -verilog "../rtl/verilog/MAC_rx.v" -add_file -verilog "../rtl/verilog/MAC_tx.v" -add_file -verilog "../rtl/verilog/miim/eth_clockgen.v" -add_file -verilog "../rtl/verilog/miim/eth_outputcontrol.v" -add_file -verilog "../rtl/verilog/miim/eth_shiftreg.v" -add_file -verilog "../rtl/verilog/miim/timescale.v" -add_file -verilog "../rtl/verilog/TECH/xilinx/duram.v" -add_file -verilog "../rtl/verilog/TECH/xilinx/CLK_SWITCH.v" -add_file -verilog "../rtl/verilog/TECH/xilinx/CLK_DIV2.v" -add_file -verilog "../rtl/verilog/eth_miim.v" -add_file -verilog "../rtl/verilog/Clk_ctrl.v" -add_file -verilog "../rtl/verilog/Phy_int.v" -add_file -verilog "../rtl/verilog/Reg_int.v" -add_file -verilog "../rtl/verilog/MAC_top.v" - - -#implementation: "syn" -impl -add syn - -#device options -set_option -technology VIRTEX4 -set_option -part XC4VLX40 -set_option -package FF668 -set_option -speed_grade -10 - -#compilation/mapping options -set_option -default_enum_encoding onehot -set_option -symbolic_fsm_compiler 0 -set_option -resource_sharing 1 -set_option -use_fsm_explorer 0 -set_option -top_module "MAC_top" - -#map options -set_option -frequency auto -set_option -run_prop_extract 0 -set_option -fanout_limit 10000 -set_option -disable_io_insertion 0 -set_option -pipe 1 -set_option -update_models_cp 0 -set_option -verification_mode 0 -set_option -fixgatedclocks 0 -set_option -modular 0 -set_option -retiming 0 -set_option -no_sequential_opt 0 - -#simulation options -set_option -write_verilog 0 -set_option -write_vhdl 0 - -#VIF options -set_option -write_vif 0 - -#automatic place and route (vendor) options -set_option -write_apr_constraint 0 - -#set result format/file last -project -result_file "./MAC_top.edf" - -# -#implementation attributes - -set_option -vlog_std v2001 -set_option -dup 0 -set_option -project_relative_includes 1 - -#par_1 attributes -set_option -job par_1 -add par -set_option -job par_1 -option run_backannotation 0 -impl -active "syn" diff --git a/usrp2/fpga/opencores/sd_interface/RTL/RxFifo.v b/usrp2/fpga/opencores/sd_interface/RTL/RxFifo.v deleted file mode 100644 index 2d26cdc0..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/RxFifo.v +++ /dev/null @@ -1,134 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// RxFifo.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized RxFifo wrapper. Min depth = 2, Max depth = 65536 -//// fifo read access via bus interface, fifo write access is direct -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" - -module RxFifo( - busClk, - spiSysClk, - rstSyncToBusClk, - rstSyncToSpiClk, - fifoWEn, - fifoFull, - busAddress, - busWriteEn, - busStrobe_i, - busFifoSelect, - busDataIn, - busDataOut, - fifoDataIn ); - //FIFO_DEPTH = 2^ADDR_WIDTH - parameter FIFO_DEPTH = 64; - parameter ADDR_WIDTH = 6; - -input busClk; -input spiSysClk; -input rstSyncToBusClk; -input rstSyncToSpiClk; -input fifoWEn; -output fifoFull; -input [2:0] busAddress; -input busWriteEn; -input busStrobe_i; -input busFifoSelect; -input [7:0] busDataIn; -output [7:0] busDataOut; -input [7:0] fifoDataIn; - -wire busClk; -wire spiSysClk; -wire rstSyncToBusClk; -wire rstSyncToSpiClk; -wire fifoWEn; -wire fifoFull; -wire [2:0] busAddress; -wire busWriteEn; -wire busStrobe_i; -wire busFifoSelect; -wire [7:0] busDataIn; -wire [7:0] busDataOut; -wire [7:0] fifoDataIn; - -//internal wires and regs -wire [7:0] dataFromFifoToBus; -wire fifoREn; -wire forceEmptySyncToBusClk; -wire forceEmptySyncToSpiClk; -wire [15:0] numElementsInFifo; -wire fifoEmpty; //not used - -fifoRTL #(8, FIFO_DEPTH, ADDR_WIDTH) u_fifo( - .wrClk(spiSysClk), - .rdClk(busClk), - .rstSyncToWrClk(rstSyncToSpiClk), - .rstSyncToRdClk(rstSyncToBusClk), - .dataIn(fifoDataIn), - .dataOut(dataFromFifoToBus), - .fifoWEn(fifoWEn), - .fifoREn(fifoREn), - .fifoFull(fifoFull), - .fifoEmpty(fifoEmpty), - .forceEmptySyncToWrClk(forceEmptySyncToSpiClk), - .forceEmptySyncToRdClk(forceEmptySyncToBusClk), - .numElementsInFifo(numElementsInFifo) ); - -RxfifoBI u_RxfifoBI( - .address(busAddress), - .writeEn(busWriteEn), - .strobe_i(busStrobe_i), - .busClk(busClk), - .spiSysClk(spiSysClk), - .rstSyncToBusClk(rstSyncToBusClk), - .fifoSelect(busFifoSelect), - .fifoDataIn(dataFromFifoToBus), - .busDataIn(busDataIn), - .busDataOut(busDataOut), - .fifoREn(fifoREn), - .forceEmptySyncToBusClk(forceEmptySyncToBusClk), - .forceEmptySyncToSpiClk(forceEmptySyncToSpiClk), - .numElementsInFifo(numElementsInFifo) - ); - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/RxFifoBI.v b/usrp2/fpga/opencores/sd_interface/RTL/RxFifoBI.v deleted file mode 100644 index e7314750..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/RxFifoBI.v +++ /dev/null @@ -1,149 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// RxfifoBI.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module RxfifoBI ( - address, - writeEn, - strobe_i, - busClk, - spiSysClk, - rstSyncToBusClk, - fifoSelect, - fifoDataIn, - busDataIn, - busDataOut, - fifoREn, - forceEmptySyncToSpiClk, - forceEmptySyncToBusClk, - numElementsInFifo - ); -input [2:0] address; -input writeEn; -input strobe_i; -input busClk; -input spiSysClk; -input rstSyncToBusClk; -input [7:0] fifoDataIn; -input [7:0] busDataIn; -output [7:0] busDataOut; -output fifoREn; -output forceEmptySyncToSpiClk; -output forceEmptySyncToBusClk; -input [15:0] numElementsInFifo; -input fifoSelect; - - -wire [2:0] address; -wire writeEn; -wire strobe_i; -wire busClk; -wire spiSysClk; -wire rstSyncToBusClk; -wire [7:0] fifoDataIn; -wire [7:0] busDataIn; -reg [7:0] busDataOut; -reg fifoREn; -reg forceEmptySyncToSpiClk; -wire forceEmptySyncToBusClk; -wire [15:0] numElementsInFifo; -wire fifoSelect; - -reg [5:0] forceEmptyShift; -reg forceEmpty; -reg forceEmptySyncToUsbClkFirst; - -//sync write -always @(posedge busClk) -begin - if (writeEn == 1'b1 && fifoSelect == 1'b1 && - address == `FIFO_CONTROL_REG && strobe_i == 1'b1 && busDataIn[0] == 1'b1) - forceEmpty <= 1'b1; - else - forceEmpty <= 1'b0; -end - -//generate 'forceEmptySyncToBusClk' -//assuming that 'busClk' < 5 * 'spiSysClk'. ie 'busClk' < 240MHz -always @(posedge busClk) begin - if (rstSyncToBusClk == 1'b1) - forceEmptyShift <= 6'b000000; - else begin - if (forceEmpty == 1'b1) - forceEmptyShift <= 6'b111111; - else - forceEmptyShift <= {1'b0, forceEmptyShift[5:1]}; - end -end -assign forceEmptySyncToBusClk = forceEmptyShift[0]; - -// double sync across clock domains to generate 'forceEmptySyncToWrClk' -always @(posedge spiSysClk) begin - forceEmptySyncToUsbClkFirst <= forceEmptySyncToBusClk; - forceEmptySyncToSpiClk <= forceEmptySyncToUsbClkFirst; -end - -// async read mux -always @(address or fifoDataIn or numElementsInFifo) -begin - case (address) - `FIFO_DATA_REG : busDataOut <= fifoDataIn; - `FIFO_DATA_COUNT_MSB : busDataOut <= numElementsInFifo[15:8]; - `FIFO_DATA_COUNT_LSB : busDataOut <= numElementsInFifo[7:0]; - default: busDataOut <= 8'h00; - endcase -end - -//generate fifo read strobe -always @(address or writeEn or strobe_i or fifoSelect) begin - if (address == `FIFO_DATA_REG && writeEn == 1'b0 && - strobe_i == 1'b1 && fifoSelect == 1'b1) - fifoREn <= 1'b1; - else - fifoREn <= 1'b0; -end - - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/TxFifo.v b/usrp2/fpga/opencores/sd_interface/RTL/TxFifo.v deleted file mode 100644 index 12e11565..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/TxFifo.v +++ /dev/null @@ -1,132 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// TxFifo.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized TxFifo wrapper. Min depth = 2, Max depth = 65536 -//// fifo write access via bus interface, fifo read access is direct -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" - -module TxFifo( - busClk, - spiSysClk, - rstSyncToBusClk, - rstSyncToSpiClk, - fifoREn, - fifoEmpty, - busAddress, - busWriteEn, - busStrobe_i, - busFifoSelect, - busDataIn, - busDataOut, - fifoDataOut ); - //FIFO_DEPTH = 2^ADDR_WIDTH - parameter FIFO_DEPTH = 64; - parameter ADDR_WIDTH = 6; - -input busClk; -input spiSysClk; -input rstSyncToBusClk; -input rstSyncToSpiClk; -input fifoREn; -output fifoEmpty; -input [2:0] busAddress; -input busWriteEn; -input busStrobe_i; -input busFifoSelect; -input [7:0] busDataIn; -output [7:0] busDataOut; -output [7:0] fifoDataOut; - -wire busClk; -wire spiSysClk; -wire rstSyncToBusClk; -wire rstSyncToSpiClk; -wire fifoREn; -wire fifoEmpty; -wire [2:0] busAddress; -wire busWriteEn; -wire busStrobe_i; -wire busFifoSelect; -wire [7:0] busDataIn; -wire [7:0] busDataOut; -wire [7:0] fifoDataOut; - -//internal wires and regs -wire fifoWEn; -wire forceEmptySyncToSpiClk; -wire forceEmptySyncToBusClk; -wire [15:0] numElementsInFifo; -wire fifoFull; - -fifoRTL #(8, FIFO_DEPTH, ADDR_WIDTH) u_fifo( - .wrClk(busClk), - .rdClk(spiSysClk), - .rstSyncToWrClk(rstSyncToBusClk), - .rstSyncToRdClk(rstSyncToSpiClk), - .dataIn(busDataIn), - .dataOut(fifoDataOut), - .fifoWEn(fifoWEn), - .fifoREn(fifoREn), - .fifoFull(fifoFull), - .fifoEmpty(fifoEmpty), - .forceEmptySyncToWrClk(forceEmptySyncToBusClk), - .forceEmptySyncToRdClk(forceEmptySyncToSpiClk), - .numElementsInFifo(numElementsInFifo) ); - -TxfifoBI u_TxfifoBI( - .address(busAddress), - .writeEn(busWriteEn), - .strobe_i(busStrobe_i), - .busClk(busClk), - .spiSysClk(spiSysClk), - .rstSyncToBusClk(rstSyncToBusClk), - .fifoSelect(busFifoSelect), - .busDataIn(busDataIn), - .busDataOut(busDataOut), - .fifoWEn(fifoWEn), - .forceEmptySyncToBusClk(forceEmptySyncToBusClk), - .forceEmptySyncToSpiClk(forceEmptySyncToSpiClk), - .numElementsInFifo(numElementsInFifo) - ); - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/TxFifoBI.v b/usrp2/fpga/opencores/sd_interface/RTL/TxFifoBI.v deleted file mode 100644 index b3b860ef..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/TxFifoBI.v +++ /dev/null @@ -1,139 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// TxfifoBI.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2008 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module TxfifoBI ( - address, writeEn, strobe_i, - busClk, - spiSysClk, - rstSyncToBusClk, - fifoSelect, - busDataIn, - busDataOut, - fifoWEn, - forceEmptySyncToSpiClk, - forceEmptySyncToBusClk, - numElementsInFifo - ); -input [2:0] address; -input writeEn; -input strobe_i; -input busClk; -input spiSysClk; -input rstSyncToBusClk; -input [7:0] busDataIn; -output [7:0] busDataOut; -output fifoWEn; -output forceEmptySyncToSpiClk; -output forceEmptySyncToBusClk; -input [15:0] numElementsInFifo; -input fifoSelect; - - -wire [2:0] address; -wire writeEn; -wire strobe_i; -wire busClk; -wire spiSysClk; -wire rstSyncToBusClk; -wire [7:0] busDataIn; -wire [7:0] busDataOut; -reg fifoWEn; -reg forceEmptySyncToSpiClk; -wire forceEmptySyncToBusClk; -wire [15:0] numElementsInFifo; -wire fifoSelect; - -reg [5:0] forceEmptyShift; -reg forceEmpty; -reg forceEmptySyncToSpiClkFirst; - -//sync write -always @(posedge busClk) -begin - if (writeEn == 1'b1 && fifoSelect == 1'b1 && - address == `FIFO_CONTROL_REG && strobe_i == 1'b1 && busDataIn[0] == 1'b1) - forceEmpty <= 1'b1; - else - forceEmpty <= 1'b0; -end - -//generate 'forceEmptySyncToBusClk' -//assuming that 'busClk' < 5 * 'spiSysClk'. ie 'busClk' < 240MHz -always @(posedge busClk) begin - if (rstSyncToBusClk == 1'b1) - forceEmptyShift <= 6'b000000; - else begin - if (forceEmpty == 1'b1) - forceEmptyShift <= 6'b111111; - else - forceEmptyShift <= {1'b0, forceEmptyShift[5:1]}; - end -end -assign forceEmptySyncToBusClk = forceEmptyShift[0]; - -// double sync across clock domains to generate 'forceEmptySyncToWrClk' -always @(posedge spiSysClk) begin - forceEmptySyncToSpiClkFirst <= forceEmptySyncToBusClk; - forceEmptySyncToSpiClk <= forceEmptySyncToSpiClkFirst; -end - - - -// async read mux -assign busDataOut = 8'h00; - - -//generate fifo write strobe -always @(address or writeEn or strobe_i or fifoSelect or busDataIn) begin - if (address == `FIFO_DATA_REG && writeEn == 1'b1 && - strobe_i == 1'b1 && fifoSelect == 1'b1) - fifoWEn <= 1'b1; - else - fifoWEn <= 1'b0; -end - - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/ctrlStsRegBI.v b/usrp2/fpga/opencores/sd_interface/RTL/ctrlStsRegBI.v deleted file mode 100644 index b0baf57a..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/ctrlStsRegBI.v +++ /dev/null @@ -1,267 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// ctrlStsRegBI.v //// -//// //// -//// This file is part of the usbhostslave opencores effort. -//// //// -//// //// -//// Module Description: //// -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module ctrlStsRegBI ( - busClk, - rstFromWire, - dataIn, - dataOut, - address, - writeEn, - strobe_i, - spiSysClk, - spiTransType, - spiTransCtrl, - spiTransStatus, - spiDirectAccessTxData, - spiDirectAccessRxData, - ctrlStsRegSel, - rstSyncToBusClkOut, - rstSyncToSpiClkOut, - SDWriteError, - SDReadError, - SDInitError, - SDAddr, - spiClkDelay -); - -input [7:0] dataIn; -input [7:0] address; -input writeEn; -input strobe_i; -input busClk; -input spiSysClk; -output [7:0] dataOut; -input ctrlStsRegSel; -output [1:0] spiTransType; -output spiTransCtrl; -input spiTransStatus; -output [7:0] spiDirectAccessTxData; -reg [7:0] spiDirectAccessTxData; -input [7:0] spiDirectAccessRxData; -input rstFromWire; -output rstSyncToBusClkOut; -output rstSyncToSpiClkOut; -input [1:0] SDWriteError; -input [1:0] SDReadError; -input [1:0] SDInitError; -output [31:0] SDAddr; -reg [31:0] SDAddr; -output [7:0] spiClkDelay; -reg [7:0] spiClkDelay; - -wire [7:0] dataIn; -wire [7:0] address; -wire writeEn; -wire strobe_i; -wire clk; -reg [7:0] dataOut; -reg [1:0] spiTransType; -reg spiTransCtrl; -wire ctrlStsRegSel; -wire rstFromWire; -reg rstSyncToBusClkOut; -reg rstSyncToSpiClkOut; - -//internal wire and regs -reg [5:0] rstShift; -reg rstFromBus; -reg [7:0] spiDirectAccessTxDataSTB; -reg [7:0] spiDirectAccessRxDataSTB; -reg [1:0] spiTransTypeSTB; -reg spiTransCtrlSTB; -reg spiTransStatusSTB; -reg rstSyncToSpiClkFirst; -reg [5:0] spiTransCtrlShift; -reg spiTransStatusReg1; -reg spiTransStatusReg2; -reg [1:0] SDWriteErrorSTB; -reg [1:0] SDReadErrorSTB; -reg [1:0] SDInitErrorSTB; -reg spiTransCtrl_reg1; -reg spiTransCtrl_reg2; -reg spiTransCtrl_reg3; - -//sync write demux -always @(posedge busClk) -begin - if (rstSyncToBusClkOut == 1'b1) begin - spiTransTypeSTB <= `DIRECT_ACCESS; - spiTransCtrlSTB <= `TRANS_STOP; - spiDirectAccessTxDataSTB <= 8'h00; - spiClkDelay <= `FAST_SPI_CLK; - end - else begin - if (writeEn == 1'b1 && ctrlStsRegSel == 1'b1 && strobe_i == 1'b1 && address == `SPI_MASTER_CONTROL_REG && dataIn[1] == 1'b1 ) - rstFromBus <= 1'b1; - else - rstFromBus <= 1'b0; - if (writeEn == 1'b1 && ctrlStsRegSel == 1'b1 && strobe_i == 1'b1 && address == `TRANS_CTRL_REG && dataIn[0] == 1'b1 ) - spiTransCtrlSTB <= 1'b1; - else - spiTransCtrlSTB <= 1'b0; - if (writeEn == 1'b1 && ctrlStsRegSel == 1'b1 && strobe_i == 1'b1) begin - case (address) - `TRANS_TYPE_REG: spiTransTypeSTB <= dataIn[1:0]; - `SD_ADDR_7_0_REG: SDAddr[7:0] <= dataIn; - `SD_ADDR_15_8_REG: SDAddr[15:8] <= dataIn; - `SD_ADDR_23_16_REG: SDAddr[23:16] <= dataIn; - `SD_ADDR_31_24_REG: SDAddr[31:24] <= dataIn; - `SPI_CLK_DEL_REG: spiClkDelay <= dataIn; - `DIRECT_ACCESS_DATA_REG: spiDirectAccessTxDataSTB <= dataIn; - endcase - end - end -end - -// async read mux -always @(address or spiTransTypeSTB or spiTransCtrlSTB or - spiTransStatusSTB or spiDirectAccessRxDataSTB or - SDAddr or SDInitErrorSTB or SDReadErrorSTB or SDWriteErrorSTB or - spiClkDelay) -begin - case (address) - `SPI_MASTER_VERSION_REG: dataOut <= `SPI_MASTER_VERSION_NUM; - `TRANS_TYPE_REG: dataOut <= { 6'b000000, spiTransTypeSTB}; - `TRANS_CTRL_REG: dataOut <= { 7'b0000000, spiTransCtrlSTB}; - `TRANS_STS_REG: dataOut <= { 7'b0000000, spiTransStatusSTB}; - `TRANS_ERROR_REG: dataOut <= {2'b00, SDWriteErrorSTB, SDReadErrorSTB, SDInitErrorSTB}; - `SD_ADDR_7_0_REG: dataOut <= SDAddr[7:0]; - `SD_ADDR_15_8_REG: dataOut <= SDAddr[15:8]; - `SD_ADDR_23_16_REG: dataOut <= SDAddr[23:16]; - `SD_ADDR_31_24_REG: dataOut <= SDAddr[31:24]; - `SPI_CLK_DEL_REG: dataOut <= spiClkDelay; - `DIRECT_ACCESS_DATA_REG: dataOut <= spiDirectAccessRxDataSTB; - default: dataOut <= 8'h00; - endcase -end - -// reset control -//generate 'rstSyncToBusClk' -//assuming that 'busClk' < 5 * 'spiSysClk'. -always @(posedge busClk) begin - if (rstFromWire == 1'b1 || rstFromBus == 1'b1) - rstShift <= 6'b111111; - else - rstShift <= {1'b0, rstShift[5:1]}; -end - -always @(rstShift) - rstSyncToBusClkOut <= rstShift[0]; - -// double sync across clock domains to generate 'rstSyncToSpiClkOut' -always @(posedge spiSysClk) begin - rstSyncToSpiClkFirst <= rstSyncToBusClkOut; - rstSyncToSpiClkOut <= rstSyncToSpiClkFirst; -end - - -// spi transaction control -//assuming that 'busClk' < 5 * 'spiSysClk'. -always @(posedge busClk) begin - if (rstSyncToBusClkOut == 1'b1) - spiTransCtrlShift <= 6'b000000; - else if (spiTransCtrlSTB == 1'b1) - spiTransCtrlShift <= 6'b111111; - else - spiTransCtrlShift <= {1'b0, spiTransCtrlShift[5:1]}; -end - -//re-sync to spiSysClk -always @(posedge spiSysClk) begin - if (rstSyncToSpiClkOut == 1'b1) begin - spiTransCtrl_reg1 <= 1'b0; - spiTransCtrl_reg2 <= 1'b0; - spiTransCtrl_reg3 <= 1'b0; - end - else begin - spiTransCtrl_reg1 <= spiTransCtrlShift[0]; - spiTransCtrl_reg2 <= spiTransCtrl_reg1; - spiTransCtrl_reg3 <= spiTransCtrl_reg2; - if (spiTransCtrl_reg3 == 1'b0 && spiTransCtrl_reg2 == 1'b1) - spiTransCtrl <= `TRANS_START; - else - spiTransCtrl <= `TRANS_STOP; - end -end - - - -//re-sync from busClk to spiSysClk. -always @(posedge spiSysClk) begin - if (rstSyncToSpiClkOut == 1'b1) begin - spiTransType <= `DIRECT_ACCESS; - spiDirectAccessTxData <= 8'h00; - end - else begin - spiDirectAccessTxData <= spiDirectAccessTxDataSTB; - spiTransType <= spiTransTypeSTB; - end -end - -//re-sync from spiSysClk to busClk -always @(posedge busClk) begin - if (rstSyncToBusClkOut == 1'b1) begin - spiTransStatusSTB <= `TRANS_NOT_BUSY; - spiTransStatusReg1 <= `TRANS_NOT_BUSY; - spiTransStatusReg2 <= `TRANS_NOT_BUSY; - end - else begin - spiTransStatusReg1 <= spiTransStatus; - spiTransStatusReg2 <= spiTransStatusReg1; - if (spiTransCtrlSTB == `TRANS_START) - spiTransStatusSTB <= `TRANS_BUSY; - else if (spiTransStatusReg2 == `TRANS_BUSY && spiTransStatusReg1 == `TRANS_NOT_BUSY) - spiTransStatusSTB <= `TRANS_NOT_BUSY; - end - spiDirectAccessRxDataSTB <= spiDirectAccessRxData; - SDWriteErrorSTB <= SDWriteError; - SDReadErrorSTB <= SDReadError; - SDInitErrorSTB <= SDInitError; -end - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/RTL/dpMem_dc.v b/usrp2/fpga/opencores/sd_interface/RTL/dpMem_dc.v deleted file mode 100644 index 66cd253f..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/dpMem_dc.v +++ /dev/null @@ -1,84 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// dpMem_dc.v //// -//// //// -//// This file is part of the usbhostslave opencores effort. -//// //// -//// //// -//// Module Description: //// -//// Synchronous dual port memory with dual clocks -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" - -module dpMem_dc( addrIn, addrOut, wrClk, rdClk, dataIn, writeEn, readEn, dataOut); - //FIFO_DEPTH = ADDR_WIDTH^2 - parameter FIFO_WIDTH = 8; - parameter FIFO_DEPTH = 64; - parameter ADDR_WIDTH = 6; - -input wrClk; -input rdClk; -input [FIFO_WIDTH-1:0] dataIn; -output [FIFO_WIDTH-1:0] dataOut; -input writeEn; -input readEn; -input [ADDR_WIDTH-1:0] addrIn; -input [ADDR_WIDTH-1:0] addrOut; - -wire wrClk; -wire rdClk; -wire [FIFO_WIDTH-1:0] dataIn; -reg [FIFO_WIDTH-1:0] dataOut; -wire writeEn; -wire readEn; -wire [ADDR_WIDTH-1:0] addrIn; -wire [ADDR_WIDTH-1:0] addrOut; - -reg [FIFO_WIDTH-1:0] buffer [0:FIFO_DEPTH-1]; - -// synchronous read. Introduces one clock cycle delay -always @(posedge rdClk) begin - dataOut <= buffer[addrOut]; -end - -// synchronous write -always @(posedge wrClk) begin - if (writeEn == 1'b1) - buffer[addrIn] <= dataIn; -end - - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/fifoRTL.v b/usrp2/fpga/opencores/sd_interface/RTL/fifoRTL.v deleted file mode 100644 index a20c4f85..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/fifoRTL.v +++ /dev/null @@ -1,164 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// fifoRTL.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" - -module fifoRTL(wrClk, rdClk, rstSyncToWrClk, rstSyncToRdClk, dataIn, - dataOut, fifoWEn, fifoREn, fifoFull, fifoEmpty, - forceEmptySyncToWrClk, forceEmptySyncToRdClk, numElementsInFifo); -//FIFO_DEPTH = ADDR_WIDTH^2. Min = 2, Max = 66536 - parameter FIFO_WIDTH = 8; - parameter FIFO_DEPTH = 64; - parameter ADDR_WIDTH = 6; - -// Two clock domains within this module -// These ports are within 'wrClk' domain -input wrClk; -input rstSyncToWrClk; -input [FIFO_WIDTH-1:0] dataIn; -input fifoWEn; -input forceEmptySyncToWrClk; -output fifoFull; - -// These ports are within 'rdClk' domain -input rdClk; -input rstSyncToRdClk; -output [FIFO_WIDTH-1:0] dataOut; -input fifoREn; -input forceEmptySyncToRdClk; -output fifoEmpty; -output [15:0]numElementsInFifo; //note that this implies a max fifo depth of 65536 - -wire wrClk; -wire rdClk; -wire rstSyncToWrClk; -wire rstSyncToRdClk; -wire [FIFO_WIDTH-1:0] dataIn; -reg [FIFO_WIDTH-1:0] dataOut; -wire fifoWEn; -wire fifoREn; -reg fifoFull; -reg fifoEmpty; -wire forceEmpty; -reg [15:0]numElementsInFifo; - - -// local registers -reg [ADDR_WIDTH:0]bufferInIndex; -reg [ADDR_WIDTH:0]bufferInIndexSyncToRdClk; -reg [ADDR_WIDTH:0]bufferOutIndex; -reg [ADDR_WIDTH:0]bufferOutIndexSyncToWrClk; -reg [ADDR_WIDTH-1:0]bufferInIndexToMem; -reg [ADDR_WIDTH-1:0]bufferOutIndexToMem; -reg [ADDR_WIDTH:0]bufferCnt; -reg fifoREnDelayed; -wire [FIFO_WIDTH-1:0] dataFromMem; - -always @(posedge wrClk) -begin - bufferOutIndexSyncToWrClk <= bufferOutIndex; - if (rstSyncToWrClk == 1'b1 || forceEmptySyncToWrClk == 1'b1) - begin - fifoFull <= 1'b0; - bufferInIndex <= 0; - end - else - begin - if (fifoWEn == 1'b1) begin - bufferInIndex <= bufferInIndex + 1'b1; - end - if ((bufferOutIndexSyncToWrClk[ADDR_WIDTH-1:0] == bufferInIndex[ADDR_WIDTH-1:0]) && - (bufferOutIndexSyncToWrClk[ADDR_WIDTH] != bufferInIndex[ADDR_WIDTH]) ) - fifoFull <= 1'b1; - else - fifoFull <= 1'b0; - end -end - -always @(bufferInIndexSyncToRdClk or bufferOutIndex) - bufferCnt <= bufferInIndexSyncToRdClk - bufferOutIndex; - -always @(posedge rdClk) -begin - numElementsInFifo <= { {16-ADDR_WIDTH-1{1'b0}}, bufferCnt }; //pad bufferCnt with leading zeroes - bufferInIndexSyncToRdClk <= bufferInIndex; - if (rstSyncToRdClk == 1'b1 || forceEmptySyncToRdClk == 1'b1) - begin - fifoEmpty <= 1'b1; - bufferOutIndex <= 0; - fifoREnDelayed <= 1'b0; - end - else - begin - fifoREnDelayed <= fifoREn; - if (fifoREn == 1'b1 && fifoREnDelayed == 1'b0) begin - dataOut <= dataFromMem; - bufferOutIndex <= bufferOutIndex + 1'b1; - end - if (bufferInIndexSyncToRdClk == bufferOutIndex) - fifoEmpty <= 1'b1; - else - fifoEmpty <= 1'b0; - end -end - - -always @(bufferInIndex or bufferOutIndex) begin - bufferInIndexToMem <= bufferInIndex[ADDR_WIDTH-1:0]; - bufferOutIndexToMem <= bufferOutIndex[ADDR_WIDTH-1:0]; -end - -dpMem_dc #(FIFO_WIDTH, FIFO_DEPTH, ADDR_WIDTH) u_dpMem_dc ( - .addrIn(bufferInIndexToMem), - .addrOut(bufferOutIndexToMem), - .wrClk(wrClk), - .rdClk(rdClk), - .dataIn(dataIn), - .writeEn(fifoWEn), - .readEn(fifoREn), - .dataOut(dataFromMem)); - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/RTL/initSD.asf b/usrp2/fpga/opencores/sd_interface/RTL/initSD.asf deleted file mode 100644 index 5be88010..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/initSD.asf +++ /dev/null @@ -1,226 +0,0 @@ -VERSION=1.15 -HEADER -FILE="initSD.asf" -FID=4788d213 -LANGUAGE=VERILOG -ENTITY="initSD" -FRAMES=ON -FREEOID=430 -"LIBRARIES=//////////////////////////////////////////////////////////////////////\n//// ////\n//// initSD.v ////\n//// ////\n//// This file is part of the spiMaster opencores effort.\n//// ////\n//// ////\n//// Module Description: ////\n//// parameterized dual clock domain fifo. \n//// fifo depth is restricted to 2^ADDR_WIDTH\n//// No protection against over runs and under runs.\n//// \n//// ////\n//// To Do: ////\n//// \n//// ////\n//// Author(s): ////\n//// - Steve Fielding, sfielding@base2designs.com ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//// ////\n//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG ////\n//// ////\n//// This source file may be used and distributed without ////\n//// restriction provided that this copyright statement is not ////\n//// removed from the file and that any derivative work contains ////\n//// the original copyright notice and the associated disclaimer. ////\n//// ////\n//// This source file is free software; you can redistribute it ////\n//// and/or modify it under the terms of the GNU Lesser General ////\n//// Public License as published by the Free Software Foundation; ////\n//// either version 2.1 of the License, or (at your option) any ////\n//// later version. ////\n//// ////\n//// This source is distributed in the hope that it will be ////\n//// useful, but WITHOUT ANY WARRANTY; without even the implied ////\n//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////\n//// PURPOSE. See the GNU Lesser General Public License for more ////\n//// details. ////\n//// ////\n//// You should have received a copy of the GNU Lesser General ////\n//// Public License along with this source; if not, download it ////\n//// from ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//\n`include \"timescale.v\"\n`include \"spiMaster_defines.v\"\n" -END -BUNDLES -B T "Declarations" 0,0,255 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Conditions" 0,0,0 0 0 0 255,255,255 0 3125 0 0110 1 "Arial" 0 -B F "States" 0,0,0 0 0 1 0,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Actions" 0,0,0 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 0 -B L "Transitions" 0,0,0 0 0 1 0,0,0 1 3527 1480 0000 1 "Arial" 0 -B F "Ports" 0,0,0 0 0 1 0,255,255 1 3527 1480 0000 1 "Arial" 0 -B L "Errors" 255,0,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -B T "State Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 4 -B F "Current State" 255,255,0 0 0 1 255,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Comments" 157,157,157 0 0 1 255,255,255 0 3527 1480 0000 1 "Arial" 0 -B L "Info" 0,255,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -END -INSTHEADER 1 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 5000,5000 10000,10000 -END -INSTHEADER 141 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 168 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 322 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -OBJECTS -S 286 169 24576 ELLIPSE "States" | 105808,239248 6500 6500 -L 285 286 0 TEXT "State Labels" | 105808,239248 1 0 0 "SEND_CMD\n/4/" -I 284 169 0 Builtin Entry | 62832,259920 -G 1 0 0 TEXT 0,0,0 0 0 0 255,255,255 0 3527 1480 0000 1 "Arial" 0 | 110650,276400 1 0 0 "Module: initSD" -A 5 0 1 TEXT "Actions" | 30400,266400 1 0 0 "-- diagram ACTION" -F 6 0 512 72 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,212603 -L 7 6 0 TEXT "Labels" | 31673,209974 1 0 0 "initSDSt" -W 303 169 1 300 286 BEZIER "Transitions" | 115053,153196 98913,155348 68551,158239 60111,167048\ - 51672,175858 50191,206794 54058,217015 57925,227237\ - 74873,237191 81496,239444 88120,241697 94643,240900\ - 99417,240430 -S 300 169 36864 ELLIPSE "States" | 121544,152859 6500 6500 -L 299 300 0 TEXT "State Labels" | 121544,152859 1 0 0 "CHK_FIN\n/7/" -C 298 297 0 TEXT "Conditions" | 111248,181393 1 0 0 "sendCmdRdy == 1'b1" -W 297 169 0 292 300 BEZIER "Transitions" | 108876,181563 115854,170249 110294,169239 118013,158314 -W 295 169 0 284 286 BEZIER "Transitions" | 66490,259920 75568,255313 91313,247447 100391,242840 -W 294 169 0 290 292 BEZIER "Transitions" | 105542,205568 105407,201842 105322,197326 105187,193600 -W 293 169 0 286 290 BEZIER "Transitions" | 105594,232759 105594,228491 105652,222790 105652,218522 -S 292 169 32768 ELLIPSE "States" | 105494,187111 6500 6500 -L 291 292 0 TEXT "State Labels" | 105494,187111 1 0 0 "WT_FIN\n/6/" -S 290 169 28672 ELLIPSE "States" | 106036,212043 6500 6500 -L 289 290 0 TEXT "State Labels" | 106036,212043 1 0 0 "DEL\n/5/" -A 288 286 4 TEXT "Actions" | 121320,255510 1 0 0 "cmdByte <= 8'h40; //CMD0\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'h95;\nsendCmdReq <= 1'b1;\nloopCnt <= loopCnt + 1'b1;\nspiCS_n <= 1'b0;" -I 319 169 0 Builtin Exit | 136284,112401 -I 318 169 0 Builtin Link | 148672,125363 -L 317 318 0 TEXT "Labels" | 154672,125363 1 0 0 "WT_INIT_REQ" -C 316 310 0 TEXT "Conditions" | 131001,148174 1 0 0 "respTout == 1'b1 || respByte != 8'h01" -A 313 312 16 TEXT "Actions" | 106611,116426 1 0 0 "loopCnt <= 8'h00;" -W 312 6 0 141 168 BEZIER "Transitions" | 111141,120168 111512,114462 111940,106474 111681,102457 -A 311 310 16 TEXT "Actions" | 132446,138965 1 0 0 "initError <= `INIT_CMD0_ERROR;" -W 310 169 2 300 318 BEZIER "Transitions" | 125449,147664 131098,140939 143023,130088 148672,123363 -C 304 303 0 TEXT "Conditions" | 36809,151245 1 0 0 "(respTout == 1'b1 || respByte != 8'h01) && loopCnt != 8'hff" -L 335 334 0 TEXT "State Labels" | 100580,187111 1 0 0 "WT_FIN\n/8/" -S 334 349 45056 ELLIPSE "States" | 100580,187111 6500 6500 -W 331 349 0 325 323 BEZIER "Transitions" | 61576,259920 70654,255313 86399,247447 95477,242840 -W 330 349 0 334 327 BEZIER "Transitions" | 103962,181563 110940,170249 105380,169239 113099,158314 -C 329 330 0 TEXT "Conditions" | 106334,181393 1 0 0 "sendCmdRdy == 1'b1" -L 328 327 0 TEXT "State Labels" | 116630,152859 1 0 0 "CHK_FIN\n/9/" -S 327 349 49152 ELLIPSE "States" | 116630,152859 6500 6500 -W 326 349 1 327 323 BEZIER "Transitions" | 110139,153196 93999,155348 63637,158239 55197,167048\ - 46758,175858 45277,206794 49144,217015 53011,227237\ - 69959,237191 76582,239444 83206,241697 89729,240900\ - 94503,240430 -I 325 349 0 Builtin Entry | 57918,259920 -L 324 323 0 TEXT "State Labels" | 100894,239248 1 0 0 "SEND_CMD\n/10/" -S 323 349 53248 ELLIPSE "States" | 100894,239248 6500 6500 -S 322 6 40964 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 112467,68151 6500 6500 -A 321 297 16 TEXT "Actions" | 108930,174030 1 0 0 "spiCS_n <= 1'b1;" -W 320 169 3 300 319 BEZIER "Transitions" | 123051,146539 126378,137861 129956,121079 133283,112401 -S 351 349 57344 ELLIPSE "States" | 157173,196494 6500 6500 -L 350 351 0 TEXT "State Labels" | 157173,196494 1 0 0 "DEL1\n/11/" -L 348 322 0 TEXT "State Labels" | 112467,68151 1 0 0 "INIT" -W 347 349 3 327 339 BEZIER "Transitions" | 118137,146539 108945,133720 116197,116503 127432,110902 -A 346 330 16 TEXT "Actions" | 104016,174030 1 0 0 "spiCS_n <= 1'b1;" -C 345 326 0 TEXT "Conditions" | 31895,151245 1 0 0 "(respTout == 1'b1 || respByte != 8'h00) && loopCnt != 8'hff" -W 344 349 2 327 339 BEZIER "Transitions" | 120695,147788 164668,142776 140351,119298 127432,110895 -A 343 344 16 TEXT "Actions" | 144159,136027 1 0 0 "initError <= `INIT_CMD1_ERROR;" -C 342 344 0 TEXT "Conditions" | 128427,151693 1 0 0 "respTout == 1'b1 || respByte != 8'h00" -I 339 349 0 Builtin Exit | 130010,110769 -A 338 323 4 TEXT "Actions" | 116406,255510 1 0 0 "cmdByte <= 8'h41; //CMD1\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'hff;\nsendCmdReq <= 1'b1;\nloopCnt <= loopCnt + 1'b1;\nspiCS_n <= 1'b0;\ndelCnt1 <= 10'h000;" -H 349 322 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -I 74 0 2 Builtin InPort | 195700,267632 "" "" -L 73 74 0 TEXT "Labels" | 201700,267632 1 0 0 "rst" -I 72 0 3 Builtin InPort | 195700,272800 "" "" -L 71 72 0 TEXT "Labels" | 201700,272800 1 0 0 "clk" -I 366 0 130 Builtin OutPort | 86503,262498 "" "" -L 365 366 0 TEXT "Labels" | 92503,262498 1 0 0 "cmdByte[7:0]" -L 367 368 0 TEXT "Labels" | 92258,258018 1 0 0 "dataByte1[7:0]" -W 363 6 0 322 102 BEZIER "Transitions" | 107085,71794 94246,83115 68667,103061 63765,115078\ - 58864,127095 64936,152522 71324,159511 77712,166500\ - 95428,168622 105168,169887 -W 362 6 0 168 322 BEZIER "Transitions" | 111422,89512 111675,84705 111722,79427 111975,74620 -W 361 349 0 323 351 BEZIER "Transitions" | 100927,232798 101473,229591 102027,224817 103255,221746\ - 104484,218676 108306,212805 113697,211372 119089,209939\ - 136835,210076 142431,209700 148027,209325 152669,207687\ - 153999,206697 155330,205708 155754,204059 156095,202899 -C 360 359 0 TEXT "Conditions" | 114039,204684 1 0 0 "delCnt1 == `TWO_MS" -W 359 349 1 351 334 BEZIER "Transitions" | 150748,197472 141944,198154 126119,199907 119942,199054\ - 113766,198201 108641,194176 105092,191788 -C 358 357 0 TEXT "Conditions" | 157694,164664 1 0 0 "delCnt2 == 8'hff" -W 357 349 0 353 351 BEZIER "Transitions" | 163535,169133 171628,167736 181061,162846 187169,163119\ - 193277,163392 202696,170901 204880,177350 207064,183799\ - 206381,202091 201331,206561 196281,211032 176760,210621\ - 171096,209359 165432,208097 162592,204050 161023,201730 -W 356 349 2 351 353 BEZIER "Transitions" | 158302,190095 158438,187775 158562,182275 158679,179771 -A 355 351 4 TEXT "Actions" | 166182,199224 1 0 0 "delCnt1 <= delCnt1 + 1'b1;\ndelCnt2 <= 8'h00;\nsendCmdReq <= 1'b0;" -A 354 353 4 TEXT "Actions" | 166728,176565 1 0 0 "delCnt2 <= delCnt2 + 1'b1;" -S 353 349 61440 ELLIPSE "States" | 158538,173289 6500 6500 -L 352 353 0 TEXT "State Labels" | 158538,173289 1 0 0 "DEL2\n/12/" -L 95 96 0 TEXT "Labels" | 155940,273023 1 0 0 "SDInitRdy" -I 368 0 130 Builtin OutPort | 86258,258018 "" "" -I 371 0 130 Builtin OutPort | 86455,252808 "" "" -L 372 371 0 TEXT "Labels" | 92455,252808 1 0 0 "dataByte2[7:0]" -I 373 0 130 Builtin OutPort | 86702,248115 "" "" -L 374 373 0 TEXT "Labels" | 92702,248115 1 0 0 "dataByte3[7:0]" -I 375 0 130 Builtin OutPort | 86702,243422 "" "" -L 376 375 0 TEXT "Labels" | 92702,243422 1 0 0 "dataByte4[7:0]" -L 383 384 0 TEXT "Labels" | 43326,249254 1 0 0 "delCnt1[9:0]" -I 382 0 2 Builtin InPort | 89010,228836 "" "" -L 381 382 0 TEXT "Labels" | 95010,228836 1 0 0 "sendCmdRdy" -I 380 0 2 Builtin OutPort | 86796,234002 "" "" -L 379 380 0 TEXT "Labels" | 92796,234002 1 0 0 "sendCmdReq" -I 378 0 130 Builtin OutPort | 86578,238482 "" "" -L 377 378 0 TEXT "Labels" | 92578,238482 1 0 0 "checkSumByte[7:0]" -I 111 0 2 Builtin OutPort | 142296,249682 "" "" -L 110 109 0 TEXT "Labels" | 150753,245041 1 0 0 "txDataFull" -I 109 0 2 Builtin InPort | 144753,245041 "" "" -W 106 6 0 102 141 BEZIER "Transitions" | 111478,164116 111546,159885 111249,139164 110939,132984 -W 105 6 0 100 102 BEZIER "Transitions" | 111805,187037 111601,183898 111568,180194 111364,177055 -S 102 6 4096 ELLIPSE "States" | 111630,170580 6500 6500 -L 101 102 0 TEXT "State Labels" | 111630,170580 1 0 0 "WT_INIT_REQ\n/1/" -S 100 6 0 ELLIPSE "States" | 112176,193512 6500 6500 -L 99 100 0 TEXT "State Labels" | 112176,193512 1 0 0 "START\n/0/" -I 96 0 2 Builtin OutPort | 149940,273023 "" "" -L 97 98 0 TEXT "Labels" | 158664,268382 1 0 0 "SDInitReq" -I 98 0 2 Builtin InPort | 152664,268382 "" "" -I 399 0 130 Builtin InPort | 179837,253714 "" "" -L 398 399 0 TEXT "Labels" | 185837,253714 1 0 0 "spiClkDelayIn[7:0]" -I 397 0 130 Builtin OutPort | 150335,263636 "" "" -L 396 397 0 TEXT "Labels" | 156335,263636 1 0 0 "initError[1:0]" -I 395 0 2 Builtin OutPort | 142620,234260 "" "" -L 394 395 0 TEXT "Labels" | 148620,234260 1 0 0 "spiCS_n" -I 391 0 130 Builtin InPort | 88818,224341 "" "" -L 390 391 0 TEXT "Labels" | 94818,224341 1 0 0 "respByte[7:0]" -C 389 388 0 TEXT "Conditions" | 64133,197548 1 0 0 "rst == 1'b1" -W 388 6 0 387 100 BEZIER "Transitions" | 49555,202550 64193,201024 91216,196545 105854,195019 -I 387 6 0 Builtin Reset | 49555,202550 -I 386 0 130 Builtin Signal | 40326,244334 "" "" -L 385 386 0 TEXT "Labels" | 43326,244334 1 0 0 "delCnt2[7:0]" -I 384 0 130 Builtin Signal | 40326,249254 "" "" -C 123 106 0 TEXT "Conditions" | 112795,161807 1 0 0 "SDInitReq == 1'b1" -L 118 117 0 TEXT "Labels" | 148296,254323 1 0 0 "txDataOut[7:0]" -I 117 0 130 Builtin OutPort | 142296,254323 "" "" -L 112 111 0 TEXT "Labels" | 148296,249682 1 0 0 "txDataWen" -L 392 393 0 TEXT "Labels" | 94804,219488 1 0 0 "respTout" -I 393 0 2 Builtin InPort | 88804,219488 "" "" -I 405 0 2 Builtin InPort | 123780,223280 "" "" -L 404 405 0 TEXT "Labels" | 129780,223280 1 0 0 "rxDataRdy" -I 403 0 2 Builtin OutPort | 121620,218480 "" "" -L 402 403 0 TEXT "Labels" | 127620,218480 1 0 0 "rxDataRdyClr" -S 401 142 65536 ELLIPSE "States" | 119702,164354 6500 6500 -L 400 401 0 TEXT "State Labels" | 119702,164354 1 0 0 "WT_DATA_EMPTY\n/13/" -L 135 136 0 TEXT "Labels" | 92903,270215 1 0 0 "spiClkDelayOut[7:0]" -I 136 0 130 Builtin OutPort | 86903,270215 "" "" -A 137 100 4 TEXT "Actions" | 166381,206571 1 0 0 "spiClkDelayOut <= spiClkDelayIn;\nSDInitRdy <= 1'b0;\nspiCS_n <= 1'b1;\ninitError <= `INIT_NO_ERROR;\ntxDataOut <= 8'h00;\ntxDataWen <= 1'b0;\ncmdByte <= 8'h00;\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'h00;\nsendCmdReq <= 1'b0;\nloopCnt <= 8'h00;\ndelCnt1 <= 10'h000;\ndelCnt2 <= 8'h00;\nrxDataRdyClr <= 1'b0;" -A 138 102 4 TEXT "Actions" | 122260,190788 1 0 0 "SDInitRdy <= 1'b1;\nspiClkDelayOut <= spiClkDelayIn;\ncmdByte <= 8'h00;\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'h00;" -A 139 106 16 TEXT "Actions" | 102988,155532 1 0 0 "SDInitRdy <= 1'b0;\nloopCnt <= 8'h00;\nspiClkDelayOut <= `SLOW_SPI_CLK;\ninitError <= `INIT_NO_ERROR;" -L 140 141 0 TEXT "State Labels" | 111114,126510 1 0 0 "CLK_SEQ" -S 141 6 8196 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 111114,126510 6500 6500 -H 142 141 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -A 425 290 4 TEXT "Actions" | 124357,213854 1 0 0 "sendCmdReq <= 1'b0;" -I 421 142 0 Builtin Exit | 134364,140858 -I 145 142 0 Builtin Entry | 63487,251949 -S 149 142 12288 ELLIPSE "States" | 82209,235260 6500 6500 -L 150 149 0 TEXT "State Labels" | 82209,235260 1 0 0 "SEND_FF\n/2/" -S 151 142 16384 ELLIPSE "States" | 83028,207141 6500 6500 -L 152 151 0 TEXT "State Labels" | 83028,207141 1 0 0 "CHK_FIN\n/3/" -W 153 142 0 149 151 BEZIER "Transitions" | 82316,228817 82452,225541 82726,217079 82876,213607 -C 154 153 0 TEXT "Conditions" | 86589,230362 1 0 0 "txDataFull == 1'b0" -A 155 153 16 TEXT "Actions" | 85757,225151 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;\nloopCnt <= loopCnt + 1'b1;" -A 156 151 4 TEXT "Actions" | 101046,207687 1 0 0 "txDataWen <= 1'b0;" -L 426 427 0 TEXT "Labels" | 150400,240650 1 0 0 "txDataEmpty" -I 427 0 2 Builtin InPort | 144400,240650 "" "" -W 428 142 0 401 421 BEZIER "Transitions" | 123115,158823 126115,154198 128614,145483 131614,140858 -C 429 428 0 TEXT "Conditions" | 127025,156275 1 0 0 "txDataEmpty == 1'b1" -W 162 142 0 145 149 BEZIER "Transitions" | 67172,251949 70925,248810 74553,243594 78306,240455 -W 164 142 1 151 401 BEZIER "Transitions" | 85234,201030 86934,197154 103559,165433 113217,164792 -C 165 164 0 TEXT "Conditions" | 91028,195541 1 0 0 "loopCnt == `SD_INIT_START_SEQ_LEN" -W 166 142 2 151 149 BEZIER "Transitions" | 76635,205968 69903,206580 58140,206268 54570,210178\ - 51000,214088 50184,228504 53380,232380 56576,236256\ - 69005,235825 75805,236369 -L 167 168 0 TEXT "State Labels" | 111972,95982 1 0 0 "RESET" -S 168 6 20484 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 111972,95982 6500 6500 -H 169 168 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -L 191 192 0 TEXT "Labels" | 43350,253948 1 0 0 "loopCnt[7:0]" -I 192 0 130 Builtin Signal | 40350,253948 "" "" -END diff --git a/usrp2/fpga/opencores/sd_interface/RTL/initSD.v b/usrp2/fpga/opencores/sd_interface/RTL/initSD.v deleted file mode 100644 index 80b44673..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/initSD.v +++ /dev/null @@ -1,386 +0,0 @@ - -////////////////////////////////////////////////////////////////////// -//// //// -//// initSD.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module initSD (checkSumByte, clk, cmdByte, dataByte1, dataByte2, dataByte3, dataByte4, initError, respByte, respTout, rst, rxDataRdy, rxDataRdyClr, SDInitRdy, SDInitReq, sendCmdRdy, sendCmdReq, spiClkDelayIn, spiClkDelayOut, spiCS_n, txDataEmpty, txDataFull, txDataOut, txDataWen); -input clk; -input [7:0]respByte; -input respTout; -input rst; -input rxDataRdy; -input SDInitReq; -input sendCmdRdy; -input [7:0]spiClkDelayIn; -input txDataEmpty; -input txDataFull; -output [7:0]checkSumByte; -output [7:0]cmdByte; -output [7:0]dataByte1; -output [7:0]dataByte2; -output [7:0]dataByte3; -output [7:0]dataByte4; -output [1:0]initError; -output rxDataRdyClr; -output SDInitRdy; -output sendCmdReq; -output [7:0]spiClkDelayOut; -output spiCS_n; -output [7:0]txDataOut; -output txDataWen; - -reg [7:0]checkSumByte, next_checkSumByte; -wire clk; -reg [7:0]cmdByte, next_cmdByte; -reg [7:0]dataByte1, next_dataByte1; -reg [7:0]dataByte2, next_dataByte2; -reg [7:0]dataByte3, next_dataByte3; -reg [7:0]dataByte4, next_dataByte4; -reg [1:0]initError, next_initError; -wire [7:0]respByte; -wire respTout; -wire rst; -wire rxDataRdy; -reg rxDataRdyClr, next_rxDataRdyClr; -reg SDInitRdy, next_SDInitRdy; -wire SDInitReq; -wire sendCmdRdy; -reg sendCmdReq, next_sendCmdReq; -wire [7:0]spiClkDelayIn; -reg [7:0]spiClkDelayOut, next_spiClkDelayOut; -reg spiCS_n, next_spiCS_n; -wire txDataEmpty; -wire txDataFull; -reg [7:0]txDataOut, next_txDataOut; -reg txDataWen, next_txDataWen; - -// diagram signals declarations -reg [9:0]delCnt1, next_delCnt1; -reg [7:0]delCnt2, next_delCnt2; -reg [7:0]loopCnt, next_loopCnt; - -// BINARY ENCODED state machine: initSDSt -// State codes definitions: -`define START 4'b0000 -`define WT_INIT_REQ 4'b0001 -`define CLK_SEQ_SEND_FF 4'b0010 -`define CLK_SEQ_CHK_FIN 4'b0011 -`define RESET_SEND_CMD 4'b0100 -`define RESET_DEL 4'b0101 -`define RESET_WT_FIN 4'b0110 -`define RESET_CHK_FIN 4'b0111 -`define INIT_WT_FIN 4'b1000 -`define INIT_CHK_FIN 4'b1001 -`define INIT_SEND_CMD 4'b1010 -`define INIT_DEL1 4'b1011 -`define INIT_DEL2 4'b1100 -`define CLK_SEQ_WT_DATA_EMPTY 4'b1101 - -reg [3:0]CurrState_initSDSt, NextState_initSDSt; - -// Diagram actions (continuous assignments allowed only: assign ...) -// diagram ACTION - - -// Machine: initSDSt - -// NextState logic (combinatorial) -always @ (spiClkDelayIn or SDInitReq or txDataFull or loopCnt or sendCmdRdy or respTout or respByte or delCnt1 or delCnt2 or txDataEmpty or spiClkDelayOut or SDInitRdy or spiCS_n or initError or txDataOut or txDataWen or cmdByte or dataByte1 or dataByte2 or dataByte3 or dataByte4 or checkSumByte or sendCmdReq or rxDataRdyClr or CurrState_initSDSt) -begin - NextState_initSDSt <= CurrState_initSDSt; - // Set default values for outputs and signals - next_spiClkDelayOut <= spiClkDelayOut; - next_SDInitRdy <= SDInitRdy; - next_spiCS_n <= spiCS_n; - next_initError <= initError; - next_txDataOut <= txDataOut; - next_txDataWen <= txDataWen; - next_cmdByte <= cmdByte; - next_dataByte1 <= dataByte1; - next_dataByte2 <= dataByte2; - next_dataByte3 <= dataByte3; - next_dataByte4 <= dataByte4; - next_checkSumByte <= checkSumByte; - next_sendCmdReq <= sendCmdReq; - next_loopCnt <= loopCnt; - next_delCnt1 <= delCnt1; - next_delCnt2 <= delCnt2; - next_rxDataRdyClr <= rxDataRdyClr; - case (CurrState_initSDSt) // synopsys parallel_case full_case - `START: - begin - next_spiClkDelayOut <= spiClkDelayIn; - next_SDInitRdy <= 1'b0; - next_spiCS_n <= 1'b1; - next_initError <= `INIT_NO_ERROR; - next_txDataOut <= 8'h00; - next_txDataWen <= 1'b0; - next_cmdByte <= 8'h00; - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'h00; - next_sendCmdReq <= 1'b0; - next_loopCnt <= 8'h00; - next_delCnt1 <= 10'h000; - next_delCnt2 <= 8'h00; - next_rxDataRdyClr <= 1'b0; - NextState_initSDSt <= `WT_INIT_REQ; - end - `WT_INIT_REQ: - begin - next_SDInitRdy <= 1'b1; - next_spiClkDelayOut <= spiClkDelayIn; - next_cmdByte <= 8'h00; - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'h00; - if (SDInitReq == 1'b1) - begin - NextState_initSDSt <= `CLK_SEQ_SEND_FF; - next_SDInitRdy <= 1'b0; - next_loopCnt <= 8'h00; - next_spiClkDelayOut <= `SLOW_SPI_CLK; - next_initError <= `INIT_NO_ERROR; - end - end - `CLK_SEQ_SEND_FF: - begin - if (txDataFull == 1'b0) - begin - NextState_initSDSt <= `CLK_SEQ_CHK_FIN; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - next_loopCnt <= loopCnt + 1'b1; - end - end - `CLK_SEQ_CHK_FIN: - begin - next_txDataWen <= 1'b0; - if (loopCnt == `SD_INIT_START_SEQ_LEN) - begin - NextState_initSDSt <= `CLK_SEQ_WT_DATA_EMPTY; - end - else - begin - NextState_initSDSt <= `CLK_SEQ_SEND_FF; - end - end - `CLK_SEQ_WT_DATA_EMPTY: - begin - if (txDataEmpty == 1'b1) - begin - NextState_initSDSt <= `RESET_SEND_CMD; - next_loopCnt <= 8'h00; - end - end - `RESET_SEND_CMD: - begin - next_cmdByte <= 8'h40; - //CMD0 - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'h95; - next_sendCmdReq <= 1'b1; - next_loopCnt <= loopCnt + 1'b1; - next_spiCS_n <= 1'b0; - NextState_initSDSt <= `RESET_DEL; - end - `RESET_DEL: - begin - next_sendCmdReq <= 1'b0; - NextState_initSDSt <= `RESET_WT_FIN; - end - `RESET_WT_FIN: - begin - if (sendCmdRdy == 1'b1) - begin - NextState_initSDSt <= `RESET_CHK_FIN; - next_spiCS_n <= 1'b1; - end - end - `RESET_CHK_FIN: - begin - if ((respTout == 1'b1 || respByte != 8'h01) && loopCnt != 8'hff) - begin - NextState_initSDSt <= `RESET_SEND_CMD; - end - else if (respTout == 1'b1 || respByte != 8'h01) - begin - NextState_initSDSt <= `WT_INIT_REQ; - next_initError <= `INIT_CMD0_ERROR; - end - else - begin - NextState_initSDSt <= `INIT_SEND_CMD; - end - end - `INIT_WT_FIN: - begin - if (sendCmdRdy == 1'b1) - begin - NextState_initSDSt <= `INIT_CHK_FIN; - next_spiCS_n <= 1'b1; - end - end - `INIT_CHK_FIN: - begin - if ((respTout == 1'b1 || respByte != 8'h00) && loopCnt != 8'hff) - begin - NextState_initSDSt <= `INIT_SEND_CMD; - end - else if (respTout == 1'b1 || respByte != 8'h00) - begin - NextState_initSDSt <= `WT_INIT_REQ; - next_initError <= `INIT_CMD1_ERROR; - end - else - begin - NextState_initSDSt <= `WT_INIT_REQ; - end - end - `INIT_SEND_CMD: - begin - next_cmdByte <= 8'h41; - //CMD1 - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'hff; - next_sendCmdReq <= 1'b1; - next_loopCnt <= loopCnt + 1'b1; - next_spiCS_n <= 1'b0; - next_delCnt1 <= 10'h000; - NextState_initSDSt <= `INIT_DEL1; - end - `INIT_DEL1: - begin - next_delCnt1 <= delCnt1 + 1'b1; - next_delCnt2 <= 8'h00; - next_sendCmdReq <= 1'b0; - if (delCnt1 == `TWO_MS) - begin - NextState_initSDSt <= `INIT_WT_FIN; - end - else - begin - NextState_initSDSt <= `INIT_DEL2; - end - end - `INIT_DEL2: - begin - next_delCnt2 <= delCnt2 + 1'b1; - if (delCnt2 == 8'hff) - begin - NextState_initSDSt <= `INIT_DEL1; - end - end - endcase -end - -// Current State Logic (sequential) -always @ (posedge clk) -begin - if (rst == 1'b1) - CurrState_initSDSt <= `START; - else - CurrState_initSDSt <= NextState_initSDSt; -end - -// Registered outputs logic -always @ (posedge clk) -begin - if (rst == 1'b1) - begin - spiClkDelayOut <= spiClkDelayIn; - SDInitRdy <= 1'b0; - spiCS_n <= 1'b1; - initError <= `INIT_NO_ERROR; - txDataOut <= 8'h00; - txDataWen <= 1'b0; - cmdByte <= 8'h00; - dataByte1 <= 8'h00; - dataByte2 <= 8'h00; - dataByte3 <= 8'h00; - dataByte4 <= 8'h00; - checkSumByte <= 8'h00; - sendCmdReq <= 1'b0; - rxDataRdyClr <= 1'b0; - loopCnt <= 8'h00; - delCnt1 <= 10'h000; - delCnt2 <= 8'h00; - end - else - begin - spiClkDelayOut <= next_spiClkDelayOut; - SDInitRdy <= next_SDInitRdy; - spiCS_n <= next_spiCS_n; - initError <= next_initError; - txDataOut <= next_txDataOut; - txDataWen <= next_txDataWen; - cmdByte <= next_cmdByte; - dataByte1 <= next_dataByte1; - dataByte2 <= next_dataByte2; - dataByte3 <= next_dataByte3; - dataByte4 <= next_dataByte4; - checkSumByte <= next_checkSumByte; - sendCmdReq <= next_sendCmdReq; - rxDataRdyClr <= next_rxDataRdyClr; - loopCnt <= next_loopCnt; - delCnt1 <= next_delCnt1; - delCnt2 <= next_delCnt2; - end -end - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.asf b/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.asf deleted file mode 100644 index 32e59f00..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.asf +++ /dev/null @@ -1,528 +0,0 @@ -VERSION=1.15 -HEADER -FILE="readWriteSDBlock.asf" -FID=4788d213 -LANGUAGE=VERILOG -ENTITY="readWriteSDBlock" -FRAMES=ON -FREEOID=575 -"LIBRARIES=//////////////////////////////////////////////////////////////////////\n//// ////\n//// readWriteSDBlock.v ////\n//// ////\n//// This file is part of the spiMaster opencores effort.\n//// ////\n//// ////\n//// Module Description: ////\n//// parameterized dual clock domain fifo. \n//// fifo depth is restricted to 2^ADDR_WIDTH\n//// No protection against over runs and under runs.\n//// \n//// ////\n//// To Do: ////\n//// \n//// ////\n//// Author(s): ////\n//// - Steve Fielding, sfielding@base2designs.com ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//// ////\n//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG ////\n//// ////\n//// This source file may be used and distributed without ////\n//// restriction provided that this copyright statement is not ////\n//// removed from the file and that any derivative work contains ////\n//// the original copyright notice and the associated disclaimer. ////\n//// ////\n//// This source file is free software; you can redistribute it ////\n//// and/or modify it under the terms of the GNU Lesser General ////\n//// Public License as published by the Free Software Foundation; ////\n//// either version 2.1 of the License, or (at your option) any ////\n//// later version. ////\n//// ////\n//// This source is distributed in the hope that it will be ////\n//// useful, but WITHOUT ANY WARRANTY; without even the implied ////\n//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////\n//// PURPOSE. See the GNU Lesser General Public License for more ////\n//// details. ////\n//// ////\n//// You should have received a copy of the GNU Lesser General ////\n//// Public License along with this source; if not, download it ////\n//// from ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//\n`include \"timescale.v\"\n`include \"spiMaster_defines.v\"\n" -END -BUNDLES -B T "Declarations" 0,0,255 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Conditions" 0,0,0 0 0 0 255,255,255 0 3125 0 0110 1 "Arial" 0 -B F "States" 0,0,0 0 0 1 0,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Actions" 0,0,0 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 0 -B L "Transitions" 0,0,0 0 0 1 0,0,0 1 3527 1480 0000 1 "Arial" 0 -B F "Ports" 0,0,0 0 0 1 0,255,255 1 3527 1480 0000 1 "Arial" 0 -B L "Errors" 255,0,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -B T "State Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 4 -B F "Current State" 255,255,0 0 0 1 255,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Comments" 157,157,157 0 0 1 255,255,255 0 3527 1480 0000 1 "Arial" 0 -B L "Info" 0,255,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -END -INSTHEADER 1 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 5000,5000 10000,10000 -END -INSTHEADER 84 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 118 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 130 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 169 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 224 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 302 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 327 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 337 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 389 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -INSTHEADER 415 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -OBJECTS -W 559 170 0 278 558 BEZIER "Transitions" | 159514,250710 169909,244734 184439,233702 194834,227726 -S 558 170 229376 ELLIPSE "States" | 199680,223395 6500 6500 -L 557 558 0 TEXT "State Labels" | 199680,223395 1 0 0 "DEL\n/47/" -A 556 315 4 TEXT "Actions" | 131150,199900 1 0 0 "sendCmdReq <= 1'b0;" -A 555 105 4 TEXT "Actions" | 131275,200525 1 0 0 "sendCmdReq <= 1'b0;" -I 554 0 130 Builtin Signal | 33764,246565 "" "" -L 553 554 0 TEXT "Labels" | 36764,246565 1 0 0 "locRespByte[7:0]" -I 552 0 130 Builtin Signal | 160575,273050 "" "" -L 551 552 0 TEXT "Labels" | 163575,273050 1 0 0 "timeOutCnt[11:0]" -I 548 0 130 Builtin InPort | 32700,254660 "" "" -L 547 548 0 TEXT "Labels" | 38700,254660 1 0 0 "blockAddr[31:0]" -I 546 0 130 Builtin Signal | 161380,256608 "" "" -L 545 546 0 TEXT "Labels" | 164380,256608 1 0 0 "delCnt2[7:0]" -I 544 0 130 Builtin Signal | 161114,261928 "" "" -W 287 170 3 273 278 BEZIER "Transitions" | 153140,203509 147585,209132 136504,218759 133963,224585\ - 131423,230411 132372,242472 134709,246197 137046,249923\ - 143477,251737 147677,253159 -C 283 275 0 TEXT "Conditions" | 163404,220919 1 0 0 "rxDataRdy == 1'b1" -L 282 273 0 TEXT "State Labels" | 158403,199697 1 0 0 "CHK_RESP\n/20/" -L 281 280 0 TEXT "State Labels" | 155702,223714 1 0 0 "REQ_RESP_FIN\n/22/" -S 280 170 106496 ELLIPSE "States" | 155702,223714 6500 6500 -L 279 278 0 TEXT "State Labels" | 154080,254276 1 0 0 "REQ_RESP_ST\n/21/" -S 278 170 102400 ELLIPSE "States" | 154080,254276 6500 6500 -I 277 170 0 Builtin Exit | 145690,169066 -A 276 275 16 TEXT "Actions" | 150887,216503 1 0 0 "locRespByte <= rxDataIn;" -W 275 170 0 280 273 BEZIER "Transitions" | 156440,217258 156900,213346 157290,210028 157662,206152 -S 273 170 98304 ELLIPSE "States" | 158403,199697 6500 6500 -G 1 0 0 TEXT 0,0,0 0 0 0 255,255,255 0 3527 1480 0000 1 "Arial" 0 | 110650,276400 1 0 0 "Module: readWriteSDBlock" -A 5 0 1 TEXT "Actions" | 30400,266400 1 0 0 "-- diagram ACTION" -F 6 0 512 72 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,27210 212900,223210 -L 7 6 0 TEXT "Labels" | 32996,218270 1 0 0 "rwBlkSt" -A 574 348 16 TEXT "Actions" | 112284,154324 1 0 0 "locRespByte <= rxDataIn;" -A 573 374 16 TEXT "Actions" | 60519,153465 1 0 0 "timeOutCnt <= timeOutCnt + 1'b1;\ndelCnt1 <= 8'h00;" -A 572 239 16 TEXT "Actions" | 42138,190870 1 0 0 "timeOutCnt <= timeOutCnt + 1'b1;" -A 571 235 16 TEXT "Actions" | 97926,168996 1 0 0 "locRespByte <= rxDataIn;" -A 570 380 4 TEXT "Actions" | 118523,190933 1 0 0 "txDataWen <= 1'b0;\nrxDataRdyClr <= 1'b0;" -C 569 459 0 TEXT "Conditions" | 151001,57686 1 0 0 "txDataEmpty == 1'b1" -C 568 456 0 TEXT "Conditions" | 82775,122525 1 0 0 "loopCnt == 9'b000000000" -C 566 296 0 TEXT "Conditions" | 164031,44934 1 0 0 "txDataEmpty == 1'b1" -I 565 0 2 Builtin InPort | 116956,228328 "" "" -L 564 565 0 TEXT "Labels" | 122956,228328 1 0 0 "txDataEmpty" -A 563 562 16 TEXT "Actions" | 167684,228749 1 0 0 "txDataWen <= 1'b0;\nrxDataRdyClr <= 1'b0;" -W 562 170 0 558 280 BEZIER "Transitions" | 193184,223621 184656,223621 170729,223805 162201,223805 -A 560 559 16 TEXT "Actions" | 163700,256139 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;\ntimeOutCnt <= timeOutCnt + 1'b1;\nrxDataRdyClr <= 1'b1;" -L 303 302 0 TEXT "State Labels" | 155866,114847 1 0 0 "RD_CMD" -S 302 6 110596 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 155866,114847 6500 6500 -W 301 6 0 169 224 BEZIER "Transitions" | 116491,60040 116453,54383 116661,57097 116661,51812 -W 300 6 0 130 169 BEZIER "Transitions" | 116096,82088 116419,75091 116419,77840 116311,72556 -W 299 6 0 84 130 BEZIER "Transitions" | 115210,103426 115637,98573 116012,99639 116012,95047 -W 298 6 0 128 84 BEZIER "Transitions" | 114213,168601 114343,164295 115365,122584 115190,116371 -W 297 6 0 82 128 BEZIER "Transitions" | 112965,189035 113095,186752 113278,183816 113408,181533 -W 296 170 0 204 278 BEZIER "Transitions" | 153459,62290 160628,57734 172959,48292 179659,46684\ - 186359,45076 198821,47756 201970,53652 205119,59548\ - 205253,80452 198486,92679 191719,104907 164517,132913\ - 153797,143566 143077,154219 127399,168825 124585,181588\ - 121771,194352 126193,230800 129007,242190 131821,253580\ - 138655,262692 141703,264836 144752,266980 150112,266444\ - 151686,265539 153261,264635 153717,262299 154186,260758 -A 295 291 16 TEXT "Actions" | 160354,178019 1 0 0 "writeError <= `WRITE_DATA_ERROR;" -C 294 291 0 TEXT "Conditions" | 162436,185390 1 0 0 "timeOutCnt == `WR_RESP_TOUT" -I 293 170 0 Builtin Link | 189438,166068 -L 292 293 0 TEXT "Labels" | 195438,166068 1 0 0 "WT_REQ" -W 291 170 1 273 293 BEZIER "Transitions" | 162433,194598 169133,187027 182738,171639 189438,164068 -C 290 288 0 TEXT "Conditions" | 126676,185877 1 0 0 "locRespByte[4:0] == 5'h5" -W 288 170 2 273 277 BEZIER "Transitions" | 156465,193495 155043,188346 148800,175094 145760,171065 -I 319 304 0 Builtin Link | 156420,111673 -I 318 304 0 Builtin Exit | 144032,98711 -A 317 305 4 TEXT "Actions" | 129068,241820 1 0 0 "cmdByte <= 8'h51; //CMD17 Block Read\ndataByte1 <= blockAddr[31:24];\ndataByte2 <= blockAddr[23:16];\ndataByte3 <= blockAddr[15:8];\ndataByte4 <= blockAddr[7:0];\ncheckSumByte <= 8'hff;\nsendCmdReq <= 1'b1;" -L 316 315 0 TEXT "State Labels" | 113784,198353 1 0 0 "DEL\n/25/" -S 315 304 122880 ELLIPSE "States" | 113784,198353 6500 6500 -L 314 313 0 TEXT "State Labels" | 113242,173421 1 0 0 "WT_FIN\n/24/" -S 313 304 118784 ELLIPSE "States" | 113242,173421 6500 6500 -W 312 304 0 305 315 BEZIER "Transitions" | 113342,219069 113342,214801 113400,209100 113400,204832 -W 311 304 0 315 313 BEZIER "Transitions" | 113290,191878 113155,188152 113070,183636 112935,179910 -W 310 304 0 307 305 BEZIER "Transitions" | 74238,246230 83316,241623 99061,233757 108139,229150 -C 309 308 0 TEXT "Conditions" | 118993,167630 1 0 0 "sendCmdRdy == 1'b1" -W 308 304 0 313 327 BEZIER "Transitions" | 116637,167879 123539,156637 117794,149336 126648,141321 -I 307 304 0 Builtin Entry | 70580,246230 -L 306 305 0 TEXT "State Labels" | 113556,225558 1 0 0 "SEND_CMD\n/23/" -S 305 304 114688 ELLIPSE "States" | 113556,225558 6500 6500 -H 304 302 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -A 335 334 16 TEXT "Actions" | 134500,139322 1 0 0 "spiCS_n <= 1'b0;\nreadWriteSDBlockRdy <= 1'b0;\nreadError <= `READ_NO_ERROR;" -W 334 6 0 128 302 BEZIER "Transitions" | 119969,172153 128545,167673 154370,136857 153592,120935 -A 333 298 16 TEXT "Actions" | 76094,136596 1 0 0 "spiCS_n <= 1'b0;\nreadWriteSDBlockRdy <= 1'b0;\nwriteError <= `WRITE_NO_ERROR;" -A 332 128 4 TEXT "Actions" | 66248,183412 1 0 0 "spiCS_n <= 1'b1;\nreadWriteSDBlockRdy <= 1'b1;\ncmdByte <= 8'h00;\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'h00;" -W 331 328 0 329 330 BEZIER "Transitions" | 100205,182880 103344,179877 105196,169695 108335,166692 -I 330 328 0 Builtin Exit | 110928,166692 -I 329 328 0 Builtin Entry | 96520,182880 -S 327 304 126980 ELLIPSE 0,0,0 0 0 1 255,0,0 1 | 128874,139185 3156 3017 -L 326 327 0 TEXT "State Labels" | 128942,138847 1 0 0 "J2" -W 325 304 3 327 318 BEZIER "Transitions" | 129847,136319 133174,127641 137870,107389 141197,98711 -A 323 321 16 TEXT "Actions" | 139238,127895 1 0 0 "readError <= `READ_CMD_ERROR;" -C 322 321 0 TEXT "Conditions" | 137153,138885 1 0 0 "respTout == 1'b1 || respByte != 8'h00" -W 321 304 2 327 319 BEZIER "Transitions" | 131177,137123 136826,130398 150771,116398 156420,109673 -L 320 319 0 TEXT "Labels" | 162420,111673 1 0 0 "WT_REQ" -H 328 327 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -S 351 338 139264 ELLIPSE "States" | 106026,166550 6500 6500 -W 350 338 0 368 369 BEZIER "Transitions" | 67549,239359 76627,234752 86180,250238 95258,245631 -C 349 348 0 TEXT "Conditions" | 111780,160832 1 0 0 "rxDataRdy == 1'b1" -W 348 338 0 351 346 BEZIER "Transitions" | 109408,161002 116386,149688 110826,148678 118545,137753 -L 347 346 0 TEXT "State Labels" | 122076,132298 1 0 0 "CHK_LOOP\n/26/" -S 346 338 135168 ELLIPSE "States" | 122076,132298 6500 6500 -H 338 337 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -S 337 6 131076 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 155556,94377 6500 6500 -L 336 337 0 TEXT "State Labels" | 155556,94377 1 0 0 "RD_TOKEN" -I 74 0 2 Builtin InPort | 195700,267632 "" "" -L 73 74 0 TEXT "Labels" | 201700,267632 1 0 0 "rst" -I 72 0 3 Builtin InPort | 195700,272800 "" "" -L 71 72 0 TEXT "Labels" | 201700,272800 1 0 0 "clk" -L 367 359 0 TEXT "State Labels" | 106340,218687 1 0 0 "SEND_CMD\n/28/" -L 366 365 0 TEXT "State Labels" | 53406,179998 1 0 0 "DEL2\n/29/" -S 365 338 147456 ELLIPSE "States" | 53406,179998 6500 6500 -W 364 338 3 346 361 BEZIER "Transitions" | 123583,125978 114391,113159 121643,95942 132878,90341 -I 361 338 0 Builtin Exit | 135456,90208 -A 360 359 4 TEXT "Actions" | 121852,234949 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;\nrxDataRdyClr <= 1'b1;" -S 359 338 143360 ELLIPSE "States" | 106340,218687 6500 6500 -L 352 351 0 TEXT "State Labels" | 106026,166550 1 0 0 "WT_FIN\n/27/" -L 81 82 0 TEXT "State Labels" | 113220,195514 1 0 0 "ST_RW_SD\n/0/" -S 82 6 0 ELLIPSE "States" | 113220,195514 6500 6500 -L 83 84 0 TEXT "State Labels" | 115395,109896 1 0 0 "WR_CMD" -S 84 6 4100 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 115395,109896 6500 6500 -H 85 84 0 RECT 0,0,0 0 0 1 255,255,255 0 | 27860,28670 212360,276670 -S 92 85 8192 ELLIPSE "States" | 113016,225828 6500 6500 -L 93 92 0 TEXT "State Labels" | 113016,225828 1 0 0 "SEND_CMD\n/1/" -I 94 85 0 Builtin Entry | 70040,246500 -W 383 338 2 346 385 BEZIER "Transitions" | 128455,133541 138850,135296 180442,141646 191036,142273 -W 382 338 0 380 351 BEZIER "Transitions" | 105524,186872 105457,182130 105515,177755 105448,173013 -W 381 338 0 359 380 BEZIER "Transitions" | 105523,212247 105320,208453 105367,203608 105164,199814 -S 380 338 155648 ELLIPSE "States" | 105765,193344 6500 6500 -L 379 380 0 TEXT "State Labels" | 105765,193344 1 0 0 "DEL1\n/31/" -C 377 374 0 TEXT "Conditions" | 32353,125947 1 0 0 "locRespByte != 8'hfe && timeOutCnt != `ONE_HUNDRED_MS" -C 376 375 0 TEXT "Conditions" | 37395,199964 1 0 0 "delCnt1 == `MAX_8_BIT" -W 375 338 1 365 359 BEZIER "Transitions" | 55933,185983 60073,191941 68179,216209 76636,218125\ - 85094,220041 90522,226339 93570,226372 96618,226406\ - 99403,224529 101638,223174 -W 374 338 1 346 365 BEZIER "Transitions" | 116959,136304 87922,130964 55868,158884 57051,176025 -A 373 365 4 TEXT "Actions" | 64312,187877 1 0 0 "delCnt1 <= delCnt1 + 1'b1;\ndelCnt2 <= 8'h00;" -L 372 369 0 TEXT "State Labels" | 101285,243200 1 0 0 "INIT_LOOP\n/30/" -W 371 338 0 369 359 BEZIER "Transitions" | 101997,236742 102942,232760 103652,228930 104597,224948 -A 370 369 4 TEXT "Actions" | 114245,248870 1 0 0 "timeOutCnt <= 12'h000;" -S 369 338 151552 ELLIPSE "States" | 101285,243200 6500 6500 -I 368 338 0 Builtin Entry | 63364,239359 -W 98 85 0 103 118 BEZIER "Transitions" | 116097,168149 122999,156907 117254,149606 126108,141591 -C 99 98 0 TEXT "Conditions" | 118453,167900 1 0 0 "sendCmdRdy == 1'b1" -W 100 85 0 94 92 BEZIER "Transitions" | 73698,246500 82776,241893 98521,234027 107599,229420 -W 101 85 0 105 103 BEZIER "Transitions" | 112750,192148 112615,188422 112530,183906 112395,180180 -W 102 85 0 92 105 BEZIER "Transitions" | 112802,219339 112802,215071 112860,209370 112860,205102 -S 103 85 12288 ELLIPSE "States" | 112702,173691 6500 6500 -L 104 103 0 TEXT "State Labels" | 112702,173691 1 0 0 "WT_FIN\n/2/" -S 105 85 16384 ELLIPSE "States" | 113244,198623 6500 6500 -L 106 105 0 TEXT "State Labels" | 113244,198623 1 0 0 "DEL\n/3/" -A 107 92 4 TEXT "Actions" | 128528,242090 1 0 0 "cmdByte <= 8'h58; //CMD24 Block Write\ndataByte1 <= blockAddr[31:24];\ndataByte2 <= blockAddr[23:16];\ndataByte3 <= blockAddr[15:8];\ndataByte4 <= blockAddr[7:0];\ncheckSumByte <= 8'hff;\nsendCmdReq <= 1'b1;" -I 108 85 0 Builtin Exit | 143492,98981 -I 109 85 0 Builtin Link | 155880,111943 -L 110 109 0 TEXT "Labels" | 161880,111943 1 0 0 "WT_REQ" -W 111 85 2 118 109 BEZIER "Transitions" | 130637,137393 136286,130668 150231,116668 155880,109943 -A 387 383 16 TEXT "Actions" | 144060,138060 1 0 0 "readError <= `READ_TOKEN_ERROR;" -C 386 383 0 TEXT "Conditions" | 128229,146101 1 0 0 "timeOutCnt == `ONE_HUNDRED_MS" -I 385 338 0 Builtin Link | 190990,144650 -L 384 385 0 TEXT "Labels" | 196990,144650 1 0 0 "WT_REQ" -C 112 111 0 TEXT "Conditions" | 136613,139155 1 0 0 "respTout == 1'b1 || respByte != 8'h00" -A 113 111 16 TEXT "Actions" | 138698,128165 1 0 0 "writeError <= `WRITE_CMD_ERROR;" -W 116 85 3 118 108 BEZIER "Transitions" | 129307,136589 132634,127911 137330,107659 140657,98981 -L 117 118 0 TEXT "State Labels" | 128402,139117 1 0 0 "J1" -S 118 85 20484 ELLIPSE 0,0,0 0 0 1 255,0,0 1 | 128334,139455 3156 3017 -H 119 118 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -I 122 119 0 Builtin Entry | 96520,182880 -I 123 119 0 Builtin Exit | 110928,166692 -W 126 119 0 122 123 BEZIER "Transitions" | 100205,182880 103344,179877 105196,169695 108335,166692 -L 127 128 0 TEXT "State Labels" | 114166,175079 1 0 0 "WT_REQ\n/4/" -L 388 389 0 TEXT "State Labels" | 155343,73929 1 0 0 "RD_DATA" -S 389 6 159748 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 155343,73929 6500 6500 -H 390 389 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -S 128 6 24576 ELLIPSE "States" | 114166,175079 6500 6500 -L 129 130 0 TEXT "State Labels" | 116508,88574 1 0 0 "WR_TOKEN" -S 130 6 28676 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 116508,88574 6500 6500 -H 131 130 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -W 138 131 0 144 141 BEZIER "Transitions" | 93143,232118 93346,228934 95399,216673 95425,213277 -A 139 138 16 TEXT "Actions" | 83596,226272 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -C 140 138 0 TEXT "Conditions" | 95421,232225 1 0 0 "txDataFull == 1'b0" -S 141 131 32768 ELLIPSE "States" | 95726,206806 6500 6500 -L 142 141 0 TEXT "State Labels" | 95726,206806 1 0 0 "FF1_FIN\n/5/" -A 143 141 4 TEXT "Actions" | 105171,209122 1 0 0 "txDataWen <= 1'b0;" -L 400 401 0 TEXT "State Labels" | 77852,226948 1 0 0 "ST_LOOP\n/32/" -S 401 390 163840 ELLIPSE "States" | 77852,226948 6500 6500 -A 402 401 4 TEXT "Actions" | 95196,229658 1 0 0 "txDataWen <= 1'b1;\ntxDataOut <= 8'hff;\nloopCnt <= loopCnt + 1'b1;" -L 403 404 0 TEXT "State Labels" | 78936,199306 1 0 0 "WT_DATA\n/33/" -S 404 390 167936 ELLIPSE "States" | 78936,199306 6500 6500 -W 406 390 0 401 404 BEZIER "Transitions" | 77695,220483 77762,216960 78169,209653 78270,205764 -A 408 404 4 TEXT "Actions" | 97364,200119 1 0 0 "txDataWen <= 1'b0;" -L 409 410 0 TEXT "State Labels" | 81375,162450 1 0 0 "CHK_LOOP\n/34/" -S 410 390 172032 ELLIPSE "States" | 81375,162450 6500 6500 -W 411 390 0 404 410 BEZIER "Transitions" | 79226,192822 79632,188351 80587,173613 80938,168928 -C 412 411 0 TEXT "Conditions" | 81955,194246 1 0 0 "rxDataRdy == 1'b1" -A 413 411 16 TEXT "Actions" | 74786,189659 1 0 0 "rxFifoWen <= 1'b1;\nrxDataRdyClr <= 1'b1;\nrxFifoData <= rxDataIn;" -L 414 415 0 TEXT "State Labels" | 83004,136975 1 0 0 "J1" -S 415 390 176132 ELLIPSE 0,0,0 0 0 1 255,0,0 1 | 83043,136396 3569 3569 -S 144 131 36864 ELLIPSE "States" | 92762,238598 6500 6500 -L 145 144 0 TEXT "State Labels" | 92762,238598 1 0 0 "FF1_ST\n/6/" -I 146 131 0 Builtin Entry | 51952,266176 -S 147 131 40960 ELLIPSE "States" | 101439,148824 6500 6500 -A 148 147 4 TEXT "Actions" | 110884,151140 1 0 0 "txDataWen <= 1'b0;" -L 149 147 0 TEXT "State Labels" | 101439,148824 1 0 0 "FF2_FIN\n/7/" -W 150 131 0 153 147 BEZIER "Transitions" | 98856,174136 99059,170952 101112,158691 101138,155295 -C 151 150 0 TEXT "Conditions" | 101134,174243 1 0 0 "txDataFull == 1'b0" -A 152 150 16 TEXT "Actions" | 89309,168290 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -S 153 131 45056 ELLIPSE "States" | 98475,180616 6500 6500 -L 154 153 0 TEXT "State Labels" | 98475,180616 1 0 0 "FF2_ST\n/8/" -S 155 131 49152 ELLIPSE "States" | 107423,92248 6500 6500 -A 156 155 4 TEXT "Actions" | 116868,94564 1 0 0 "txDataWen <= 1'b0;" -L 157 155 0 TEXT "State Labels" | 107423,92248 1 0 0 "FE_FIN\n/9/" -W 158 131 0 161 155 BEZIER "Transitions" | 104840,117560 105043,114376 107096,102115 107122,98719 -C 159 158 0 TEXT "Conditions" | 107118,117667 1 0 0 "txDataFull == 1'b0" -H 416 415 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -I 419 416 0 Builtin Entry | 126004,141930 -I 420 416 0 Builtin Exit | 144780,121920 -W 423 416 0 419 420 BEZIER "Transitions" | 129826,141930 134057,136743 137819,127107 142050,121920 -W 424 390 0 410 415 BEZIER "Transitions" | 81407,156099 81677,152387 82370,143719 82390,139900 -A 425 424 16 TEXT "Actions" | 80070,154260 1 0 0 "rxDataRdyClr <= 1'b0;\nrxFifoWen <= 1'b0;" -I 426 390 0 Builtin Entry | 42810,270090 -L 427 428 0 TEXT "State Labels" | 97350,266040 1 0 0 "CLR_RX\n/35/" -S 428 390 180224 ELLIPSE "States" | 97350,266040 6500 6500 -W 429 390 0 426 428 BEZIER "Transitions" | 46995,270090 55230,269685 82688,267193 90992,267387 -A 430 429 16 TEXT "Actions" | 55533,269709 1 0 0 "rxDataRdyClr <= 1'b1;" -W 431 390 0 428 401 BEZIER "Transitions" | 94484,260209 90569,252717 84564,240304 80649,232812 -A 160 158 16 TEXT "Actions" | 95293,111714 1 0 0 "txDataOut <= 8'hfe;\ntxDataWen <= 1'b1;" -S 161 131 53248 ELLIPSE "States" | 104459,124040 6500 6500 -L 162 161 0 TEXT "State Labels" | 104459,124040 1 0 0 "FE_ST\n/10/" -W 163 131 0 146 144 BEZIER "Transitions" | 55624,266176 64736,260940 79060,248435 88172,243199 -W 164 131 0 141 153 BEZIER "Transitions" | 95785,200373 96397,196089 96746,191299 97358,187015 -I 165 131 0 Builtin Exit | 140624,67616 -W 166 131 0 147 161 BEZIER "Transitions" | 101803,142336 102279,138596 102801,134171 103277,130431 -W 167 131 0 155 165 BEZIER "Transitions" | 112534,88234 120218,83134 130356,72716 138040,67616 -L 168 169 0 TEXT "State Labels" | 116501,66078 1 0 0 "WR_DATA" -S 169 6 229380 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 116501,66078 6500 6500 -H 170 169 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -A 432 431 16 TEXT "Actions" | 85200,253080 1 0 0 "rxDataRdyClr <= 1'b0;\nloopCnt <= 9'b000000000;" -W 433 390 2 415 401 BEZIER "Transitions" | 79771,137821 72144,141736 57457,148725 53070,158681\ - 48683,168637 46387,200633 47433,211027 48480,221422\ - 54960,231008 58470,232695 61980,234383 68385,231511\ - 72165,230094 -W 440 390 0 451 441 BEZIER "Transitions" | 138130,91528 138333,88344 140386,76083 140412,72687 -S 441 390 184320 ELLIPSE "States" | 140713,66216 6500 6500 -L 442 441 0 TEXT "State Labels" | 140713,66216 1 0 0 "CS_FIN2\n/36/" -S 443 390 188416 ELLIPSE "States" | 75739,66216 6500 6500 -A 444 443 4 TEXT "Actions" | 85184,68532 1 0 0 "txDataWen <= 1'b0;" -L 445 443 0 TEXT "State Labels" | 75739,66216 1 0 0 "CS_FIN1\n/37/" -W 446 390 0 449 443 BEZIER "Transitions" | 73156,91528 73359,88344 75412,76083 75438,72687 -C 447 446 0 TEXT "Conditions" | 75434,91635 1 0 0 "txDataFull == 1'b0" -S 177 170 61440 ELLIPSE "States" | 78305,137464 6500 6500 -A 178 177 4 TEXT "Actions" | 87750,139780 1 0 0 "txDataWen <= 1'b0;" -L 179 177 0 TEXT "State Labels" | 78305,137464 1 0 0 "D_FIN\n/11/" -W 180 170 0 183 177 BEZIER "Transitions" | 75722,162776 75925,159592 77978,147331 78004,143935 -C 181 180 0 TEXT "Conditions" | 78000,162883 1 0 0 "txDataFull == 1'b0" -A 182 180 16 TEXT "Actions" | 66175,156930 1 0 0 "txDataOut <= txFifoData;\ntxDataWen <= 1'b1;" -S 183 170 65536 ELLIPSE "States" | 75341,169256 6500 6500 -L 184 183 0 TEXT "State Labels" | 75341,169256 1 0 0 "D_ST\n/12/" -L 187 188 0 TEXT "State Labels" | 72867,227889 1 0 0 "RD_FIFO1\n/13/" -S 188 170 69632 ELLIPSE "States" | 72867,227889 6500 6500 -L 189 190 0 TEXT "State Labels" | 73959,201135 1 0 0 "RD_FIFO2\n/14/" -S 190 170 73728 ELLIPSE "States" | 73959,201135 6500 6500 -A 191 188 4 TEXT "Actions" | 80895,230061 1 0 0 "txFifoRen <= 1'b1;\nloopCnt <= loopCnt + 1'b1;" -A 448 446 16 TEXT "Actions" | 63609,85682 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -S 449 390 192512 ELLIPSE "States" | 72775,98008 6500 6500 -L 450 449 0 TEXT "State Labels" | 72775,98008 1 0 0 "CS_ST1\n/38/" -S 451 390 196608 ELLIPSE "States" | 137749,98008 6500 6500 -L 452 451 0 TEXT "State Labels" | 137749,98008 1 0 0 "CS_ST2\n/39/" -A 453 440 16 TEXT "Actions" | 128583,85682 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -C 454 440 0 TEXT "Conditions" | 140408,91635 1 0 0 "txDataFull == 1'b0" -A 455 441 4 TEXT "Actions" | 150158,68532 1 0 0 "txDataWen <= 1'b0;" -W 456 390 1 415 449 BEZIER "Transitions" | 82185,132936 79630,124866 76715,112427 74160,104357 -W 457 390 0 443 451 BEZIER "Transitions" | 78514,60339 82952,55834 89399,47074 95182,45998\ - 100965,44922 115223,49631 117845,56120 120468,62609\ - 116702,83861 117071,91594 117441,99328 122688,109012\ - 125276,109920 127865,110828 131449,106344 134004,103318 -I 458 390 0 Builtin Exit | 161625,43107 -W 459 390 0 441 458 BEZIER "Transitions" | 144285,60786 148925,56213 153892,47680 158532,43107 -W 460 6 0 302 337 BEZIER "Transitions" | 155788,108419 155653,104081 155771,105011 155438,100848 -W 461 6 0 337 389 BEZIER "Transitions" | 155952,87899 155619,83040 155938,84926 155805,80404 -W 462 6 0 389 128 BEZIER "Transitions" | 160766,72622 181673,64668 193592,81881 194705,86831\ - 195819,91782 193010,106602 196539,114884 200068,123167\ - 183067,150177 177992,160070 172917,169964 164106,188182\ - 156924,189345 149743,190509 134447,187583 129526,185887\ - 124606,184192 121267,181269 119073,179341 -W 463 6 0 224 128 BEZIER "Transitions" | 112148,42964 96171,38095 88076,46646 81324,48345\ - 74572,50044 62626,66620 61422,77634 60219,88648\ - 53118,140235 53550,154499 53982,168763 75928,188049\ - 79879,189622 83830,191195 94548,186386 97872,185422\ - 101197,184458 106213,181091 109338,179429 -A 192 190 4 TEXT "Actions" | 82521,204408 1 0 0 "txFifoRen <= 1'b0;" -L 193 194 0 TEXT "State Labels" | 72048,257646 1 0 0 "LOOP_INIT\n/15/" -S 194 170 77824 ELLIPSE "States" | 72048,257646 6500 6500 -A 195 194 4 TEXT "Actions" | 89247,259284 1 0 0 "loopCnt <= 9'b000000000;" -S 196 170 81920 ELLIPSE "States" | 80801,98549 6500 6500 -L 197 196 0 TEXT "State Labels" | 80801,98549 1 0 0 "CS_ST1\n/16/" -W 198 170 0 196 201 BEZIER "Transitions" | 81182,92069 81385,88885 83438,76624 83464,73228 -A 199 198 16 TEXT "Actions" | 71635,86223 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -C 200 198 0 TEXT "Conditions" | 83460,92176 1 0 0 "txDataFull == 1'b0" -S 201 170 86016 ELLIPSE "States" | 83765,66757 6500 6500 -L 202 201 0 TEXT "State Labels" | 83765,66757 1 0 0 "CS_FIN1\n/17/" -A 203 201 4 TEXT "Actions" | 93210,69073 1 0 0 "txDataWen <= 1'b0;" -S 204 170 90112 ELLIPSE "States" | 148739,66757 6500 6500 -A 205 204 4 TEXT "Actions" | 158184,69073 1 0 0 "txDataWen <= 1'b0;\ntimeOutCnt <= 12'h000;" -L 206 204 0 TEXT "State Labels" | 148739,66757 1 0 0 "CS_FIN2\n/18/" -W 207 170 0 210 204 BEZIER "Transitions" | 146156,92069 146359,88885 148412,76624 148438,73228 -C 464 334 0 TEXT "Conditions" | 94994,146397 1 0 0 "readWriteSDBlockReq == `READ_SD_BLOCK" -C 465 298 0 TEXT "Conditions" | 55739,152492 1 0 0 "readWriteSDBlockReq == `WRITE_SD_BLOCK" -I 475 6 0 Builtin Reset | 49660,206134 -W 476 6 0 475 82 BEZIER "Transitions" | 49660,206134 64556,204256 92040,199052 106936,197174 -C 477 476 0 TEXT "Conditions" | 62428,209528 1 0 0 "rst == 1'b1" -L 478 479 0 TEXT "Labels" | 122230,269291 1 0 0 "readWriteSDBlockReq[1:0]" -I 479 0 130 Builtin InPort | 116230,269291 "" "" -L 223 224 0 TEXT "State Labels" | 116398,45340 1 0 0 "WR_BUSY" -C 208 207 0 TEXT "Conditions" | 148434,92176 1 0 0 "txDataFull == 1'b0" -A 209 207 16 TEXT "Actions" | 136609,86223 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;" -S 210 170 94208 ELLIPSE "States" | 145775,98549 6500 6500 -L 211 210 0 TEXT "State Labels" | 145775,98549 1 0 0 "CS_ST2\n/19/" -W 212 170 1 177 196 BEZIER "Transitions" | 78835,130988 79312,123617 80043,112406 80520,105035 -C 213 212 0 TEXT "Conditions" | 81603,129336 1 0 0 "loopCnt == 9'b000000000" -W 214 170 0 194 188 BEZIER "Transitions" | 72189,251169 72121,246119 72460,239413 72392,234363 -W 215 170 0 188 190 BEZIER "Transitions" | 72773,221428 73182,217197 73251,211851 73660,207620 -W 216 170 0 190 183 BEZIER "Transitions" | 74343,194648 74411,189188 74887,181191 74955,175731 -W 217 170 2 177 188 BEZIER "Transitions" | 71806,137461 65254,138211 53484,138960 49969,147866\ - 46455,156772 45498,190898 45396,201715 45294,212532\ - 45840,221679 48843,224169 51846,226660 60640,227203\ - 66373,227612 -W 218 170 0 201 210 BEZIER "Transitions" | 87098,61178 91397,57971 97506,51735 102658,50541\ - 107811,49347 119823,50985 122894,57434 125965,63884\ - 126239,88045 127637,96576 129036,105107 134361,115072\ - 136749,115515 139137,115959 142020,108931 144135,104836 -I 221 170 0 Builtin Entry | 39834,267201 -W 222 170 0 221 194 BEZIER "Transitions" | 43519,267201 49798,265427 59580,261403 65859,259629 -L 480 481 0 TEXT "Labels" | 120083,264098 1 0 0 "readWriteSDBlockRdy" -I 481 0 2 Builtin OutPort | 114083,264098 "" "" -L 482 483 0 TEXT "Labels" | 120083,259063 1 0 0 "spiCS_n" -I 483 0 2 Builtin OutPort | 114083,259063 "" "" -I 484 0 130 Builtin OutPort | 69013,272215 "" "" -L 485 484 0 TEXT "Labels" | 75013,272215 1 0 0 "cmdByte[7:0]" -I 486 0 130 Builtin OutPort | 68768,267735 "" "" -L 487 486 0 TEXT "Labels" | 74768,267735 1 0 0 "dataByte1[7:0]" -I 488 0 130 Builtin OutPort | 68965,262525 "" "" -L 489 488 0 TEXT "Labels" | 74965,262525 1 0 0 "dataByte2[7:0]" -I 490 0 130 Builtin OutPort | 69212,257832 "" "" -L 491 490 0 TEXT "Labels" | 75212,257832 1 0 0 "dataByte3[7:0]" -I 492 0 130 Builtin OutPort | 69212,253139 "" "" -L 493 492 0 TEXT "Labels" | 75212,253139 1 0 0 "dataByte4[7:0]" -I 494 0 130 Builtin OutPort | 69088,248199 "" "" -L 495 494 0 TEXT "Labels" | 75088,248199 1 0 0 "checkSumByte[7:0]" -W 239 225 1 237 241 BEZIER "Transitions" | 110570,148995 94430,151147 64068,154038 55628,162847\ - 47189,171657 45708,202593 49575,212814 53442,223036\ - 70390,232990 77013,235243 83637,237496 90160,236699\ - 94934,236229 -L 238 237 0 TEXT "State Labels" | 117061,148658 1 0 0 "CHK_FIN\n/40/" -S 237 225 200704 ELLIPSE "States" | 117061,148658 6500 6500 -C 236 235 0 TEXT "Conditions" | 106765,177192 1 0 0 "rxDataRdy == 1'b1" -W 235 225 0 232 237 BEZIER "Transitions" | 104393,177362 111371,166048 105811,165038 113530,154113 -W 234 225 0 240 268 BEZIER "Transitions" | 62534,255719 71612,251112 81165,266598 90243,261991 -L 233 232 0 TEXT "State Labels" | 101011,182910 1 0 0 "WT_FIN1\n/41/" -S 232 225 204800 ELLIPSE "States" | 101011,182910 6500 6500 -H 225 224 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -S 224 6 57348 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 116398,45340 6500 6500 -I 496 0 2 Builtin OutPort | 69306,243719 "" "" -L 497 496 0 TEXT "Labels" | 75306,243719 1 0 0 "sendCmdReq" -I 498 0 2 Builtin InPort | 71520,238553 "" "" -L 499 498 0 TEXT "Labels" | 77520,238553 1 0 0 "sendCmdRdy" -I 500 0 130 Builtin InPort | 71328,234058 "" "" -L 501 500 0 TEXT "Labels" | 77328,234058 1 0 0 "respByte[7:0]" -I 502 0 2 Builtin InPort | 150168,237862 "" "" -L 503 502 0 TEXT "Labels" | 156168,237862 1 0 0 "rxDataRdy" -I 504 0 2 Builtin InPort | 117135,232948 "" "" -L 505 504 0 TEXT "Labels" | 123135,232948 1 0 0 "txDataFull" -I 506 0 2 Builtin OutPort | 114678,237589 "" "" -L 507 506 0 TEXT "Labels" | 120678,237589 1 0 0 "txDataWen" -I 508 0 130 Builtin InPort | 149895,241957 "" "" -L 509 508 0 TEXT "Labels" | 155895,241957 1 0 0 "rxDataIn[7:0]" -I 510 0 130 Builtin OutPort | 114678,242230 "" "" -L 511 510 0 TEXT "Labels" | 120678,242230 1 0 0 "txDataOut[7:0]" -L 527 528 0 TEXT "Labels" | 190950,242120 1 0 0 "rxFifoData[7:0]" -I 526 0 2 Builtin OutPort | 185220,246980 "" "" -L 525 526 0 TEXT "Labels" | 191220,246980 1 0 0 "rxFifoWen" -I 524 0 130 Builtin InPort | 187380,252110 "" "" -L 523 524 0 TEXT "Labels" | 193380,252110 1 0 0 "txFifoData[7:0]" -I 522 0 2 Builtin OutPort | 184950,256970 "" "" -L 521 522 0 TEXT "Labels" | 190950,256970 1 0 0 "txFifoRen" -W 248 225 2 237 251 BEZIER "Transitions" | 121126,143587 165099,138575 140782,115097 127863,106694 -A 249 248 16 TEXT "Actions" | 144590,131826 1 0 0 "writeError <= `WRITE_BUSY_ERROR;" -C 250 248 0 TEXT "Conditions" | 128858,147492 1 0 0 "timeOutCnt == `TWO_FIFTY_MS" -C 255 254 0 TEXT "Conditions" | 114470,200483 1 0 0 "delCnt1 == `MAX_8_BIT" -W 254 225 1 243 232 BEZIER "Transitions" | 151179,193271 142375,193953 126550,195706 120373,194853\ - 114197,194000 109072,189975 105523,187587 -W 253 225 0 241 243 BEZIER "Transitions" | 101358,228597 101904,225390 102458,220616 103686,217545\ - 104915,214475 108737,208604 114128,207171 119520,205738\ - 137266,205875 142862,205499 148458,205124 153100,203486\ - 154430,202496 155761,201507 156185,199858 156526,198698 -A 252 241 4 TEXT "Actions" | 116837,251309 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;\nrxDataRdyClr <= 1'b1;\ndelCnt1 <= 8'h00;" -I 251 225 0 Builtin Exit | 130441,106568 -C 247 239 0 TEXT "Conditions" | 32326,147044 1 0 0 "locRespByte == 8'h00 && timeOutCnt != `TWO_FIFTY_MS" -W 245 225 3 237 251 BEZIER "Transitions" | 118568,142338 109376,129519 116628,112302 127863,106701 -L 244 243 0 TEXT "State Labels" | 157604,192293 1 0 0 "DEL1\n/42/" -S 243 225 208896 ELLIPSE "States" | 157604,192293 6500 6500 -L 242 241 0 TEXT "State Labels" | 101325,235047 1 0 0 "SEND_CMD1\n/43/" -S 241 225 212992 ELLIPSE "States" | 101325,235047 6500 6500 -I 240 225 0 Builtin Entry | 58349,255719 -I 512 0 2 Builtin OutPort | 147984,233494 "" "" -L 513 512 0 TEXT "Labels" | 153984,233494 1 0 0 "rxDataRdyClr" -L 514 515 0 TEXT "Labels" | 77500,229855 1 0 0 "respTout" -I 515 0 2 Builtin InPort | 71500,229855 "" "" -A 516 82 4 TEXT "Actions" | 160072,222273 1 0 0 "readWriteSDBlockRdy <= 1'b0;\nspiCS_n <= 1'b1;\nreadError <= 1'b0;\nwriteError <= 1'b0;\ntxDataOut <= 8'h00;\ntxDataWen <= 1'b0;\nrxDataRdyClr <= 1'b0;\ncmdByte <= 8'h00;\ndataByte1 <= 8'h00;\ndataByte2 <= 8'h00;\ndataByte3 <= 8'h00;\ndataByte4 <= 8'h00;\ncheckSumByte <= 8'h00;\nsendCmdReq <= 1'b0;\nloopCnt <= 8'h00;\ndelCnt1 <= 8'h00;\ndelCnt2 <= 8'h00;\nreadError <= `READ_NO_ERROR;\nwriteError <= `WRITE_NO_ERROR;\ntxFifoRen <= 1'b0;\nrxFifoWen <= 1'b0;\nrxFifoData <= 8'h00;\ntimeOutCnt <= 12'h000;\nlocRespByte <= 8'h00;" -L 517 518 0 TEXT "Labels" | 120142,254523 1 0 0 "readError[1:0]" -I 518 0 130 Builtin OutPort | 114142,254523 "" "" -L 519 520 0 TEXT "Labels" | 119971,249897 1 0 0 "writeError[1:0]" -I 520 0 130 Builtin OutPort | 113971,249897 "" "" -L 543 544 0 TEXT "Labels" | 164114,261928 1 0 0 "delCnt1[7:0]" -C 542 541 0 TEXT "Conditions" | 31702,154694 1 0 0 "delCnt2 == 8'hff" -W 541 338 0 537 365 BEZIER "Transitions" | 45749,147689 44744,152468 35773,163628 34769,167402\ - 33765,171176 35012,179071 36950,181044 38889,183018\ - 44071,182291 47325,182291 -W 539 338 2 365 537 BEZIER "Transitions" | 51640,173745 51294,168275 56598,148666 56246,142125 -A 538 537 4 TEXT "Actions" | 36466,135651 1 0 0 "delCnt2 <= delCnt2 + 1'b1;" -S 537 338 225280 ELLIPSE "States" | 49762,142576 6500 6500 -L 536 537 0 TEXT "State Labels" | 49762,142576 1 0 0 "DEL3\n/46/" -C 535 534 0 TEXT "Conditions" | 154260,170964 1 0 0 "delCnt2 == 8'hff" -W 534 225 0 530 243 BEZIER "Transitions" | 179888,172413 174851,172206 165921,171447 162609,173482\ - 159297,175518 158039,181622 156452,185900 -A 533 530 4 TEXT "Actions" | 166680,162960 1 0 0 "delCnt2 <= delCnt2 + 1'b1;" -W 531 225 2 243 530 BEZIER "Transitions" | 163308,189179 168294,185855 176215,180648 181201,177324 -S 530 225 217088 ELLIPSE "States" | 186323,173323 6500 6500 -L 529 530 0 TEXT "State Labels" | 186323,173323 1 0 0 "DEL2\n/44/" -I 528 0 130 Builtin OutPort | 184950,242120 "" "" -A 270 268 4 TEXT "Actions" | 109230,265230 1 0 0 "timeOutCnt <= 12'h000;" -W 269 225 0 268 241 BEZIER "Transitions" | 96982,253102 97927,249120 98637,245290 99582,241308 -S 268 225 221184 ELLIPSE "States" | 96270,259560 6500 6500 -L 267 268 0 TEXT "State Labels" | 96270,259560 1 0 0 "INIT_LOOP\n/45/" -I 264 0 130 Builtin Signal | 161063,266638 "" "" -L 263 264 0 TEXT "Labels" | 164063,266638 1 0 0 "loopCnt[8:0]" -A 259 243 4 TEXT "Actions" | 166374,212237 1 0 0 "txDataWen <= 1'b0;\nrxDataRdyClr <= 1'b0;\ndelCnt1 <= delCnt1 + 1'b1;\ndelCnt2 <= 8'h00;" -END diff --git a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.v b/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.v deleted file mode 100644 index 92ae0aa3..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSDBlock.v +++ /dev/null @@ -1,730 +0,0 @@ - -////////////////////////////////////////////////////////////////////// -//// //// -//// readWriteSDBlock.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module readWriteSDBlock (blockAddr, checkSumByte, clk, cmdByte, dataByte1, dataByte2, dataByte3, dataByte4, readError, readWriteSDBlockRdy, readWriteSDBlockReq, respByte, respTout, rst, rxDataIn, rxDataRdy, rxDataRdyClr, rxFifoData, rxFifoWen, sendCmdRdy, sendCmdReq, spiCS_n, txDataEmpty, txDataFull, txDataOut, txDataWen, txFifoData, txFifoRen, writeError); -input [31:0]blockAddr; -input clk; -input [1:0]readWriteSDBlockReq; -input [7:0]respByte; -input respTout; -input rst; -input [7:0]rxDataIn; -input rxDataRdy; -input sendCmdRdy; -input txDataEmpty; -input txDataFull; -input [7:0]txFifoData; -output [7:0]checkSumByte; -output [7:0]cmdByte; -output [7:0]dataByte1; -output [7:0]dataByte2; -output [7:0]dataByte3; -output [7:0]dataByte4; -output [1:0]readError; -output readWriteSDBlockRdy; -output rxDataRdyClr; -output [7:0]rxFifoData; -output rxFifoWen; -output sendCmdReq; -output spiCS_n; -output [7:0]txDataOut; -output txDataWen; -output txFifoRen; -output [1:0]writeError; - -wire [31:0]blockAddr; -reg [7:0]checkSumByte, next_checkSumByte; -wire clk; -reg [7:0]cmdByte, next_cmdByte; -reg [7:0]dataByte1, next_dataByte1; -reg [7:0]dataByte2, next_dataByte2; -reg [7:0]dataByte3, next_dataByte3; -reg [7:0]dataByte4, next_dataByte4; -reg [1:0]readError, next_readError; -reg readWriteSDBlockRdy, next_readWriteSDBlockRdy; -wire [1:0]readWriteSDBlockReq; -wire [7:0]respByte; -wire respTout; -wire rst; -wire [7:0]rxDataIn; -wire rxDataRdy; -reg rxDataRdyClr, next_rxDataRdyClr; -reg [7:0]rxFifoData, next_rxFifoData; -reg rxFifoWen, next_rxFifoWen; -wire sendCmdRdy; -reg sendCmdReq, next_sendCmdReq; -reg spiCS_n, next_spiCS_n; -wire txDataEmpty; -wire txDataFull; -reg [7:0]txDataOut, next_txDataOut; -reg txDataWen, next_txDataWen; -wire [7:0]txFifoData; -reg txFifoRen, next_txFifoRen; -reg [1:0]writeError, next_writeError; - -// diagram signals declarations -reg [7:0]delCnt1, next_delCnt1; -reg [7:0]delCnt2, next_delCnt2; -reg [7:0]locRespByte, next_locRespByte; -reg [8:0]loopCnt, next_loopCnt; -reg [11:0]timeOutCnt, next_timeOutCnt; - -// BINARY ENCODED state machine: rwBlkSt -// State codes definitions: -`define ST_RW_SD 6'b000000 -`define WR_CMD_SEND_CMD 6'b000001 -`define WR_CMD_WT_FIN 6'b000010 -`define WR_CMD_DEL 6'b000011 -`define WT_REQ 6'b000100 -`define WR_TOKEN_FF1_FIN 6'b000101 -`define WR_TOKEN_FF1_ST 6'b000110 -`define WR_TOKEN_FF2_FIN 6'b000111 -`define WR_TOKEN_FF2_ST 6'b001000 -`define WR_TOKEN_FE_FIN 6'b001001 -`define WR_TOKEN_FE_ST 6'b001010 -`define WR_DATA_D_FIN 6'b001011 -`define WR_DATA_D_ST 6'b001100 -`define WR_DATA_RD_FIFO1 6'b001101 -`define WR_DATA_RD_FIFO2 6'b001110 -`define WR_DATA_LOOP_INIT 6'b001111 -`define WR_DATA_CS_ST1 6'b010000 -`define WR_DATA_CS_FIN1 6'b010001 -`define WR_DATA_CS_FIN2 6'b010010 -`define WR_DATA_CS_ST2 6'b010011 -`define WR_DATA_CHK_RESP 6'b010100 -`define WR_DATA_REQ_RESP_ST 6'b010101 -`define WR_DATA_REQ_RESP_FIN 6'b010110 -`define RD_CMD_SEND_CMD 6'b010111 -`define RD_CMD_WT_FIN 6'b011000 -`define RD_CMD_DEL 6'b011001 -`define RD_TOKEN_CHK_LOOP 6'b011010 -`define RD_TOKEN_WT_FIN 6'b011011 -`define RD_TOKEN_SEND_CMD 6'b011100 -`define RD_TOKEN_DEL2 6'b011101 -`define RD_TOKEN_INIT_LOOP 6'b011110 -`define RD_TOKEN_DEL1 6'b011111 -`define RD_DATA_ST_LOOP 6'b100000 -`define RD_DATA_WT_DATA 6'b100001 -`define RD_DATA_CHK_LOOP 6'b100010 -`define RD_DATA_CLR_RX 6'b100011 -`define RD_DATA_CS_FIN2 6'b100100 -`define RD_DATA_CS_FIN1 6'b100101 -`define RD_DATA_CS_ST1 6'b100110 -`define RD_DATA_CS_ST2 6'b100111 -`define WR_BUSY_CHK_FIN 6'b101000 -`define WR_BUSY_WT_FIN1 6'b101001 -`define WR_BUSY_DEL1 6'b101010 -`define WR_BUSY_SEND_CMD1 6'b101011 -`define WR_BUSY_DEL2 6'b101100 -`define WR_BUSY_INIT_LOOP 6'b101101 -`define RD_TOKEN_DEL3 6'b101110 -`define WR_DATA_DEL 6'b101111 - -reg [5:0]CurrState_rwBlkSt, NextState_rwBlkSt; - -// Diagram actions (continuous assignments allowed only: assign ...) -// diagram ACTION - - -// Machine: rwBlkSt - -// NextState logic (combinatorial) -always @ (blockAddr or sendCmdRdy or respTout or respByte or readWriteSDBlockReq or txDataFull or loopCnt or txFifoData or txDataEmpty or timeOutCnt or locRespByte or rxDataRdy or rxDataIn or delCnt1 or delCnt2 or readWriteSDBlockRdy or spiCS_n or readError or writeError or txDataOut or txDataWen or rxDataRdyClr or cmdByte or dataByte1 or dataByte2 or dataByte3 or dataByte4 or checkSumByte or sendCmdReq or txFifoRen or rxFifoWen or rxFifoData or CurrState_rwBlkSt) -begin - NextState_rwBlkSt <= CurrState_rwBlkSt; - // Set default values for outputs and signals - next_readWriteSDBlockRdy <= readWriteSDBlockRdy; - next_spiCS_n <= spiCS_n; - next_readError <= readError; - next_writeError <= writeError; - next_txDataOut <= txDataOut; - next_txDataWen <= txDataWen; - next_rxDataRdyClr <= rxDataRdyClr; - next_cmdByte <= cmdByte; - next_dataByte1 <= dataByte1; - next_dataByte2 <= dataByte2; - next_dataByte3 <= dataByte3; - next_dataByte4 <= dataByte4; - next_checkSumByte <= checkSumByte; - next_sendCmdReq <= sendCmdReq; - next_loopCnt <= loopCnt; - next_delCnt1 <= delCnt1; - next_delCnt2 <= delCnt2; - next_txFifoRen <= txFifoRen; - next_rxFifoWen <= rxFifoWen; - next_rxFifoData <= rxFifoData; - next_timeOutCnt <= timeOutCnt; - next_locRespByte <= locRespByte; - case (CurrState_rwBlkSt) // synopsys parallel_case full_case - `ST_RW_SD: - begin - next_readWriteSDBlockRdy <= 1'b0; - next_spiCS_n <= 1'b1; - next_readError <= 1'b0; - next_writeError <= 1'b0; - next_txDataOut <= 8'h00; - next_txDataWen <= 1'b0; - next_rxDataRdyClr <= 1'b0; - next_cmdByte <= 8'h00; - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'h00; - next_sendCmdReq <= 1'b0; - next_loopCnt <= 8'h00; - next_delCnt1 <= 8'h00; - next_delCnt2 <= 8'h00; - next_readError <= `READ_NO_ERROR; - next_writeError <= `WRITE_NO_ERROR; - next_txFifoRen <= 1'b0; - next_rxFifoWen <= 1'b0; - next_rxFifoData <= 8'h00; - next_timeOutCnt <= 12'h000; - next_locRespByte <= 8'h00; - NextState_rwBlkSt <= `WT_REQ; - end - `WT_REQ: - begin - next_spiCS_n <= 1'b1; - next_readWriteSDBlockRdy <= 1'b1; - next_cmdByte <= 8'h00; - next_dataByte1 <= 8'h00; - next_dataByte2 <= 8'h00; - next_dataByte3 <= 8'h00; - next_dataByte4 <= 8'h00; - next_checkSumByte <= 8'h00; - if (readWriteSDBlockReq == `READ_SD_BLOCK) - begin - NextState_rwBlkSt <= `RD_CMD_SEND_CMD; - next_spiCS_n <= 1'b0; - next_readWriteSDBlockRdy <= 1'b0; - next_readError <= `READ_NO_ERROR; - end - else if (readWriteSDBlockReq == `WRITE_SD_BLOCK) - begin - NextState_rwBlkSt <= `WR_CMD_SEND_CMD; - next_spiCS_n <= 1'b0; - next_readWriteSDBlockRdy <= 1'b0; - next_writeError <= `WRITE_NO_ERROR; - end - end - `WR_CMD_SEND_CMD: - begin - next_cmdByte <= 8'h58; - //CMD24 Block Write - next_dataByte1 <= blockAddr[31:24]; - next_dataByte2 <= blockAddr[23:16]; - next_dataByte3 <= blockAddr[15:8]; - next_dataByte4 <= blockAddr[7:0]; - next_checkSumByte <= 8'hff; - next_sendCmdReq <= 1'b1; - NextState_rwBlkSt <= `WR_CMD_DEL; - end - `WR_CMD_WT_FIN: - begin - if ((sendCmdRdy == 1'b1) && (respTout == 1'b1 || respByte != 8'h00)) - begin - NextState_rwBlkSt <= `WT_REQ; - next_writeError <= `WRITE_CMD_ERROR; - end - else if (sendCmdRdy == 1'b1) - begin - NextState_rwBlkSt <= `WR_TOKEN_FF1_ST; - end - end - `WR_CMD_DEL: - begin - next_sendCmdReq <= 1'b0; - NextState_rwBlkSt <= `WR_CMD_WT_FIN; - end - `WR_TOKEN_FF1_FIN: - begin - next_txDataWen <= 1'b0; - NextState_rwBlkSt <= `WR_TOKEN_FF2_ST; - end - `WR_TOKEN_FF1_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_TOKEN_FF1_FIN; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `WR_TOKEN_FF2_FIN: - begin - next_txDataWen <= 1'b0; - NextState_rwBlkSt <= `WR_TOKEN_FE_ST; - end - `WR_TOKEN_FF2_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_TOKEN_FF2_FIN; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `WR_TOKEN_FE_FIN: - begin - next_txDataWen <= 1'b0; - NextState_rwBlkSt <= `WR_DATA_LOOP_INIT; - end - `WR_TOKEN_FE_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_TOKEN_FE_FIN; - next_txDataOut <= 8'hfe; - next_txDataWen <= 1'b1; - end - end - `WR_BUSY_CHK_FIN: - begin - if (locRespByte == 8'h00 && timeOutCnt != `TWO_FIFTY_MS) - begin - NextState_rwBlkSt <= `WR_BUSY_SEND_CMD1; - next_timeOutCnt <= timeOutCnt + 1'b1; - end - else if (timeOutCnt == `TWO_FIFTY_MS) - begin - NextState_rwBlkSt <= `WT_REQ; - next_writeError <= `WRITE_BUSY_ERROR; - end - else - begin - NextState_rwBlkSt <= `WT_REQ; - end - end - `WR_BUSY_WT_FIN1: - begin - if (rxDataRdy == 1'b1) - begin - NextState_rwBlkSt <= `WR_BUSY_CHK_FIN; - next_locRespByte <= rxDataIn; - end - end - `WR_BUSY_DEL1: - begin - next_txDataWen <= 1'b0; - next_rxDataRdyClr <= 1'b0; - next_delCnt1 <= delCnt1 + 1'b1; - next_delCnt2 <= 8'h00; - if (delCnt1 == `MAX_8_BIT) - begin - NextState_rwBlkSt <= `WR_BUSY_WT_FIN1; - end - else - begin - NextState_rwBlkSt <= `WR_BUSY_DEL2; - end - end - `WR_BUSY_SEND_CMD1: - begin - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - next_rxDataRdyClr <= 1'b1; - next_delCnt1 <= 8'h00; - NextState_rwBlkSt <= `WR_BUSY_DEL1; - end - `WR_BUSY_DEL2: - begin - next_delCnt2 <= delCnt2 + 1'b1; - if (delCnt2 == 8'hff) - begin - NextState_rwBlkSt <= `WR_BUSY_DEL1; - end - end - `WR_BUSY_INIT_LOOP: - begin - next_timeOutCnt <= 12'h000; - NextState_rwBlkSt <= `WR_BUSY_SEND_CMD1; - end - `RD_CMD_SEND_CMD: - begin - next_cmdByte <= 8'h51; - //CMD17 Block Read - next_dataByte1 <= blockAddr[31:24]; - next_dataByte2 <= blockAddr[23:16]; - next_dataByte3 <= blockAddr[15:8]; - next_dataByte4 <= blockAddr[7:0]; - next_checkSumByte <= 8'hff; - next_sendCmdReq <= 1'b1; - NextState_rwBlkSt <= `RD_CMD_DEL; - end - `RD_CMD_WT_FIN: - begin - if ((sendCmdRdy == 1'b1) && (respTout == 1'b1 || respByte != 8'h00)) - begin - NextState_rwBlkSt <= `WT_REQ; - next_readError <= `READ_CMD_ERROR; - end - else if (sendCmdRdy == 1'b1) - begin - NextState_rwBlkSt <= `RD_TOKEN_INIT_LOOP; - end - end - `RD_CMD_DEL: - begin - next_sendCmdReq <= 1'b0; - NextState_rwBlkSt <= `RD_CMD_WT_FIN; - end - `RD_TOKEN_CHK_LOOP: - begin - if (locRespByte != 8'hfe && timeOutCnt != `ONE_HUNDRED_MS) - begin - NextState_rwBlkSt <= `RD_TOKEN_DEL2; - next_timeOutCnt <= timeOutCnt + 1'b1; - next_delCnt1 <= 8'h00; - end - else if (timeOutCnt == `ONE_HUNDRED_MS) - begin - NextState_rwBlkSt <= `WT_REQ; - next_readError <= `READ_TOKEN_ERROR; - end - else - begin - NextState_rwBlkSt <= `RD_DATA_CLR_RX; - next_rxDataRdyClr <= 1'b1; - end - end - `RD_TOKEN_WT_FIN: - begin - if (rxDataRdy == 1'b1) - begin - NextState_rwBlkSt <= `RD_TOKEN_CHK_LOOP; - next_locRespByte <= rxDataIn; - end - end - `RD_TOKEN_SEND_CMD: - begin - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - next_rxDataRdyClr <= 1'b1; - NextState_rwBlkSt <= `RD_TOKEN_DEL1; - end - `RD_TOKEN_DEL2: - begin - next_delCnt1 <= delCnt1 + 1'b1; - next_delCnt2 <= 8'h00; - if (delCnt1 == `MAX_8_BIT) - begin - NextState_rwBlkSt <= `RD_TOKEN_SEND_CMD; - end - else - begin - NextState_rwBlkSt <= `RD_TOKEN_DEL3; - end - end - `RD_TOKEN_INIT_LOOP: - begin - next_timeOutCnt <= 12'h000; - NextState_rwBlkSt <= `RD_TOKEN_SEND_CMD; - end - `RD_TOKEN_DEL1: - begin - next_txDataWen <= 1'b0; - next_rxDataRdyClr <= 1'b0; - NextState_rwBlkSt <= `RD_TOKEN_WT_FIN; - end - `RD_TOKEN_DEL3: - begin - next_delCnt2 <= delCnt2 + 1'b1; - if (delCnt2 == 8'hff) - begin - NextState_rwBlkSt <= `RD_TOKEN_DEL2; - end - end - `RD_DATA_ST_LOOP: - begin - next_txDataWen <= 1'b1; - next_txDataOut <= 8'hff; - next_loopCnt <= loopCnt + 1'b1; - NextState_rwBlkSt <= `RD_DATA_WT_DATA; - end - `RD_DATA_WT_DATA: - begin - next_txDataWen <= 1'b0; - if (rxDataRdy == 1'b1) - begin - NextState_rwBlkSt <= `RD_DATA_CHK_LOOP; - next_rxFifoWen <= 1'b1; - next_rxDataRdyClr <= 1'b1; - next_rxFifoData <= rxDataIn; - end - end - `RD_DATA_CHK_LOOP: - begin - if (loopCnt == 9'b000000000) - begin - NextState_rwBlkSt <= `RD_DATA_CS_ST1; - next_rxDataRdyClr <= 1'b0; - next_rxFifoWen <= 1'b0; - end - else - begin - NextState_rwBlkSt <= `RD_DATA_ST_LOOP; - next_rxDataRdyClr <= 1'b0; - next_rxFifoWen <= 1'b0; - end - end - `RD_DATA_CLR_RX: - begin - NextState_rwBlkSt <= `RD_DATA_ST_LOOP; - next_rxDataRdyClr <= 1'b0; - next_loopCnt <= 9'b000000000; - end - `RD_DATA_CS_FIN2: - begin - next_txDataWen <= 1'b0; - if (txDataEmpty == 1'b1) - begin - NextState_rwBlkSt <= `WT_REQ; - end - end - `RD_DATA_CS_FIN1: - begin - next_txDataWen <= 1'b0; - NextState_rwBlkSt <= `RD_DATA_CS_ST2; - end - `RD_DATA_CS_ST1: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `RD_DATA_CS_FIN1; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `RD_DATA_CS_ST2: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `RD_DATA_CS_FIN2; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `WR_DATA_D_FIN: - begin - next_txDataWen <= 1'b0; - if (loopCnt == 9'b000000000) - begin - NextState_rwBlkSt <= `WR_DATA_CS_ST1; - end - else - begin - NextState_rwBlkSt <= `WR_DATA_RD_FIFO1; - end - end - `WR_DATA_D_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_DATA_D_FIN; - next_txDataOut <= txFifoData; - next_txDataWen <= 1'b1; - end - end - `WR_DATA_RD_FIFO1: - begin - next_txFifoRen <= 1'b1; - next_loopCnt <= loopCnt + 1'b1; - NextState_rwBlkSt <= `WR_DATA_RD_FIFO2; - end - `WR_DATA_RD_FIFO2: - begin - next_txFifoRen <= 1'b0; - NextState_rwBlkSt <= `WR_DATA_D_ST; - end - `WR_DATA_LOOP_INIT: - begin - next_loopCnt <= 9'b000000000; - NextState_rwBlkSt <= `WR_DATA_RD_FIFO1; - end - `WR_DATA_CS_ST1: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_DATA_CS_FIN1; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `WR_DATA_CS_FIN1: - begin - next_txDataWen <= 1'b0; - NextState_rwBlkSt <= `WR_DATA_CS_ST2; - end - `WR_DATA_CS_FIN2: - begin - next_txDataWen <= 1'b0; - next_timeOutCnt <= 12'h000; - if (txDataEmpty == 1'b1) - begin - NextState_rwBlkSt <= `WR_DATA_REQ_RESP_ST; - end - end - `WR_DATA_CS_ST2: - begin - if (txDataFull == 1'b0) - begin - NextState_rwBlkSt <= `WR_DATA_CS_FIN2; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `WR_DATA_CHK_RESP: - begin - if (timeOutCnt == `WR_RESP_TOUT) - begin - NextState_rwBlkSt <= `WT_REQ; - next_writeError <= `WRITE_DATA_ERROR; - end - else if (locRespByte[4:0] == 5'h5) - begin - NextState_rwBlkSt <= `WR_BUSY_INIT_LOOP; - end - else - begin - NextState_rwBlkSt <= `WR_DATA_REQ_RESP_ST; - end - end - `WR_DATA_REQ_RESP_ST: - begin - NextState_rwBlkSt <= `WR_DATA_DEL; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - next_timeOutCnt <= timeOutCnt + 1'b1; - next_rxDataRdyClr <= 1'b1; - end - `WR_DATA_REQ_RESP_FIN: - begin - if (rxDataRdy == 1'b1) - begin - NextState_rwBlkSt <= `WR_DATA_CHK_RESP; - next_locRespByte <= rxDataIn; - end - end - `WR_DATA_DEL: - begin - NextState_rwBlkSt <= `WR_DATA_REQ_RESP_FIN; - next_txDataWen <= 1'b0; - next_rxDataRdyClr <= 1'b0; - end - endcase -end - -// Current State Logic (sequential) -always @ (posedge clk) -begin - if (rst == 1'b1) - CurrState_rwBlkSt <= `ST_RW_SD; - else - CurrState_rwBlkSt <= NextState_rwBlkSt; -end - -// Registered outputs logic -always @ (posedge clk) -begin - if (rst == 1'b1) - begin - readWriteSDBlockRdy <= 1'b0; - spiCS_n <= 1'b1; - readError <= 1'b0; - writeError <= 1'b0; - txDataOut <= 8'h00; - txDataWen <= 1'b0; - rxDataRdyClr <= 1'b0; - cmdByte <= 8'h00; - dataByte1 <= 8'h00; - dataByte2 <= 8'h00; - dataByte3 <= 8'h00; - dataByte4 <= 8'h00; - checkSumByte <= 8'h00; - sendCmdReq <= 1'b0; - txFifoRen <= 1'b0; - rxFifoWen <= 1'b0; - rxFifoData <= 8'h00; - loopCnt <= 8'h00; - delCnt1 <= 8'h00; - delCnt2 <= 8'h00; - timeOutCnt <= 12'h000; - locRespByte <= 8'h00; - end - else - begin - readWriteSDBlockRdy <= next_readWriteSDBlockRdy; - spiCS_n <= next_spiCS_n; - readError <= next_readError; - writeError <= next_writeError; - txDataOut <= next_txDataOut; - txDataWen <= next_txDataWen; - rxDataRdyClr <= next_rxDataRdyClr; - cmdByte <= next_cmdByte; - dataByte1 <= next_dataByte1; - dataByte2 <= next_dataByte2; - dataByte3 <= next_dataByte3; - dataByte4 <= next_dataByte4; - checkSumByte <= next_checkSumByte; - sendCmdReq <= next_sendCmdReq; - txFifoRen <= next_txFifoRen; - rxFifoWen <= next_rxFifoWen; - rxFifoData <= next_rxFifoData; - loopCnt <= next_loopCnt; - delCnt1 <= next_delCnt1; - delCnt2 <= next_delCnt2; - timeOutCnt <= next_timeOutCnt; - locRespByte <= next_locRespByte; - end -end - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.asf b/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.asf deleted file mode 100644 index f6f39e49..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.asf +++ /dev/null @@ -1,121 +0,0 @@ -VERSION=1.15 -HEADER -FILE="readWriteSPIWireData.asf" -FID=4788d213 -LANGUAGE=VERILOG -ENTITY="readWriteSPIWireData" -FRAMES=ON -FREEOID=95 -"LIBRARIES=//////////////////////////////////////////////////////////////////////\n//// ////\n//// readWriteSPIWireData.v ////\n//// ////\n//// This file is part of the spiMaster opencores effort.\n//// ////\n//// ////\n//// Module Description: ////\n//// parameterized dual clock domain fifo. \n//// fifo depth is restricted to 2^ADDR_WIDTH\n//// No protection against over runs and under runs.\n//// \n//// ////\n//// To Do: ////\n//// \n//// ////\n//// Author(s): ////\n//// - Steve Fielding, sfielding@base2designs.com ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//// ////\n//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG ////\n//// ////\n//// This source file may be used and distributed without ////\n//// restriction provided that this copyright statement is not ////\n//// removed from the file and that any derivative work contains ////\n//// the original copyright notice and the associated disclaimer. ////\n//// ////\n//// This source file is free software; you can redistribute it ////\n//// and/or modify it under the terms of the GNU Lesser General ////\n//// Public License as published by the Free Software Foundation; ////\n//// either version 2.1 of the License, or (at your option) any ////\n//// later version. ////\n//// ////\n//// This source is distributed in the hope that it will be ////\n//// useful, but WITHOUT ANY WARRANTY; without even the implied ////\n//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////\n//// PURPOSE. See the GNU Lesser General Public License for more ////\n//// details. ////\n//// ////\n//// You should have received a copy of the GNU Lesser General ////\n//// Public License along with this source; if not, download it ////\n//// from ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//\n`include \"timescale.v\"\n`include \"spiMaster_defines.v\"\n" -END -BUNDLES -B T "Declarations" 0,0,255 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Conditions" 0,0,0 0 0 0 255,255,255 0 3125 0 0110 1 "Arial" 0 -B F "States" 0,0,0 0 0 1 0,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Actions" 0,0,0 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 0 -B L "Transitions" 0,0,0 0 0 1 0,0,0 1 3527 1480 0000 1 "Arial" 0 -B F "Ports" 0,0,0 0 0 1 0,255,255 1 3527 1480 0000 1 "Arial" 0 -B L "Errors" 255,0,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -B T "State Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 4 -B F "Current State" 255,255,0 0 0 1 255,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Comments" 157,157,157 0 0 1 255,255,255 0 3527 1480 0000 1 "Arial" 0 -B L "Info" 0,255,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -END -INSTHEADER 1 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 5000,5000 10000,10000 -END -INSTHEADER 57 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -OBJECTS -G 1 0 0 TEXT 0,0,0 0 0 0 255,255,255 0 3527 1480 0000 1 "Arial" 0 | 110650,276400 1 0 0 "Module: readWriteSPIWireData" -A 5 0 1 TEXT "Actions" | 30673,274317 1 0 0 "-- diagram ACTION" -F 6 0 512 72 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,246400 -L 7 6 0 TEXT "Labels" | 31400,243400 1 0 0 "rwSPISt" -L 8 9 0 TEXT "Labels" | 167524,266756 1 0 0 "txDataFull" -I 9 0 2 Builtin InPort | 161524,266756 "" "" -L 10 11 0 TEXT "Labels" | 165076,262648 1 0 0 "txDataFullClr" -I 11 0 2 Builtin OutPort | 159076,262648 "" "" -L 12 13 0 TEXT "Labels" | 122918,264250 1 0 0 "rxDataRdySet" -I 13 0 2 Builtin OutPort | 116918,264250 "" "" -L 14 15 0 TEXT "Labels" | 167406,271658 1 0 0 "txDataIn[7:0]" -I 15 0 130 Builtin InPort | 161406,271658 "" "" -L 16 17 0 TEXT "Labels" | 123072,269174 1 0 0 "rxDataOut[7:0]" -I 17 0 130 Builtin OutPort | 117072,269174 "" "" -L 18 19 0 TEXT "State Labels" | 110704,231360 1 0 0 "WT_TX_DATA\n/0/" -S 19 6 0 ELLIPSE "States" | 110704,231360 6500 6500 -L 20 21 0 TEXT "State Labels" | 112226,189022 1 0 0 "CLK_HI\n/1/" -S 21 6 4096 ELLIPSE "States" | 112226,189022 6500 6500 -W 22 6 0 19 21 BEZIER "Transitions" | 110470,224884 110707,219468 110980,207626 111395,195467 -C 23 22 0 TEXT "Conditions" | 116947,226592 1 0 0 "txDataFull == 1'b1" -A 24 22 16 TEXT "Actions" | 104644,222649 1 0 0 "txDataShiftReg <= txDataIn;\nrxDataShiftReg <= 8'h00;\nbitCnt <= 4'h0;\nclkDelayCnt <= 8'h00;\ntxDataFullClr <= 1'b1;\ntxDataEmpty <= 1'b0;" -L 25 26 0 TEXT "Labels" | 85178,260017 1 0 0 "txDataShiftReg[7:0]" -I 26 0 130 Builtin Signal | 82178,260017 "" "" -L 27 28 0 TEXT "Labels" | 85450,264368 1 0 0 "bitCnt[3:0]" -I 28 0 130 Builtin Signal | 82450,264368 "" "" -L 29 30 0 TEXT "Labels" | 45301,255946 1 0 0 "clkDelay[7:0]" -I 30 0 130 Builtin InPort | 39301,255946 "" "" -L 31 32 0 TEXT "Labels" | 85178,269538 1 0 0 "clkDelayCnt[7:0]" -I 32 0 130 Builtin Signal | 82178,269538 "" "" -L 33 34 0 TEXT "State Labels" | 112064,143714 1 0 0 "CLK_LO\n/2/" -S 34 6 8192 ELLIPSE "States" | 112064,143714 6500 6500 -W 35 6 0 21 34 BEZIER "Transitions" | 111477,182571 110721,178461 111926,154930 111406,150180 -A 36 35 16 TEXT "Actions" | 117201,173770 1 0 0 "spiClkOut <= 1'b0;\nspiDataOut <= txDataShiftReg[7];\ntxDataShiftReg <= {txDataShiftReg[6:0], 1'b0};\nclkDelayCnt <= 8'h00;" -A 40 34 4 TEXT "Actions" | 129744,145618 1 0 0 "clkDelayCnt <= clkDelayCnt + 1'b1;" -C 41 39 0 TEXT "Conditions" | 113864,136917 1 0 0 "bitCnt == 4'h8" -W 39 6 1 34 57 BEZIER "Transitions" | 112175,137251 112384,130999 112714,101841 111797,94879 -W 50 6 2 34 21 BEZIER "Transitions" | 108826,149348 101042,157950 83708,154801 80796,161835\ - 77884,168870 77971,186684 79172,191015 80374,195346\ - 85000,196884 88570,197360 92140,197836 101831,194594\ - 106220,191507 -A 51 50 16 TEXT "Actions" | 41615,180095 1 0 0 "spiClkOut <= 1'b1;\nbitCnt <= bitCnt + 1'b1;\nclkDelayCnt <= 8'h00;\nrxDataShiftReg <= {rxDataShiftReg[6:0], spiDataIn};" -C 52 50 0 TEXT "Conditions" | 69697,159224 1 0 0 "clkDelayCnt == clkDelay" -A 53 21 4 TEXT "Actions" | 129906,194545 1 0 0 "clkDelayCnt <= clkDelayCnt + 1'b1;\ntxDataFullClr <= 1'b0;\nrxDataRdySet <= 1'b0;" -C 54 35 0 TEXT "Conditions" | 112616,182259 1 0 0 "clkDelayCnt == clkDelay" -L 56 57 0 TEXT "State Labels" | 112441,91219 1 0 0 "J1" -S 57 6 12292 ELLIPSE 0,0,0 0 0 1 255,0,0 1 | 111975,91295 3595 3595 -H 58 57 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -I 61 58 0 Builtin Entry | 96520,182880 -I 62 58 0 Builtin Exit | 123838,149654 -W 63 58 0 61 62 BEZIER "Transitions" | 100327,182880 105881,175159 115604,157376 121159,149654 -A 55 39 16 TEXT "Actions" | 101170,118509 1 0 0 "rxDataRdySet <= 1'b1;\nrxDataOut <= rxDataShiftReg;" -A 79 78 4 TEXT "Actions" | 172448,235984 1 0 0 "bitCnt <= 4'h0;\nclkDelayCnt <= 8'h00;\ntxDataFullClr <= 1'b0;\nrxDataRdySet <= 1'b0;\ntxDataShiftReg <= 8'h00;\nrxDataShiftReg <= 8'h00;\nrxDataOut <= 8'h00;\nspiDataOut <= 1'b0;\nspiClkOut <= 1'b0;\ntxDataEmpty <= 1'b0;" -S 78 6 16384 ELLIPSE "States" | 163200,234352 6500 6500 -L 77 78 0 TEXT "State Labels" | 163200,234352 1 0 0 "ST_RW_WIRE\n/3/" -C 75 70 0 TEXT "Conditions" | 67748,241498 1 0 0 "rst == 1'b1" -I 74 0 2 Builtin InPort | 195700,267632 "" "" -L 73 74 0 TEXT "Labels" | 201700,267632 1 0 0 "rst" -I 72 0 3 Builtin InPort | 195700,272800 "" "" -L 71 72 0 TEXT "Labels" | 201700,272800 1 0 0 "clk" -W 70 6 0 69 78 BEZIER "Transitions" | 53584,240424 67019,243331 142652,244275 157000,236303 -I 69 6 0 Builtin Reset | 53584,240424 -W 65 6 1 57 21 BEZIER "Transitions" | 108870,93105 102326,112538 73109,121258 64708,125153\ - 56308,129049 47906,146800 45670,157910 43435,169021\ - 42893,195716 46449,203811 50006,211907 64777,217599\ - 73008,216616 81239,215634 100244,201596 107791,193773 -C 66 65 0 TEXT "Conditions" | 72805,108285 1 0 0 "txDataFull == 1'b1" -W 67 6 2 57 19 BEZIER "Transitions" | 108779,92940 102622,102639 71923,91036 67388,98354\ - 62853,105673 50345,122275 43604,135689 36864,149103\ - 35643,196122 41029,209502 46416,222883 69180,229387\ - 78123,230877 87066,232368 97753,231428 104224,231859 -A 68 65 16 TEXT "Actions" | 47229,151610 1 0 0 "txDataShiftReg <= txDataIn;\nbitCnt <= 3'b000;\nclkDelayCnt <= 8'h00;\ntxDataFullClr <= 1'b1;" -L 88 87 0 TEXT "Labels" | 85310,255376 1 0 0 "rxDataShiftReg[7:0]" -I 87 0 130 Builtin Signal | 82310,255376 "" "" -I 86 0 2 Builtin OutPort | 37191,270020 "" "" -L 85 86 0 TEXT "Labels" | 43191,270020 1 0 0 "spiClkOut" -I 84 0 2 Builtin InPort | 39102,260465 "" "" -L 83 84 0 TEXT "Labels" | 45102,260465 1 0 0 "spiDataIn" -I 82 0 2 Builtin OutPort | 37191,265379 "" "" -L 81 82 0 TEXT "Labels" | 43191,265379 1 0 0 "spiDataOut" -W 80 6 0 78 19 BEZIER "Transitions" | 156735,233684 145855,233140 128082,232022 117202,231478 -A 92 19 4 TEXT "Actions" | 71554,227603 1 0 0 "rxDataRdySet <= 1'b0;\ntxDataEmpty <= 1'b1;" -L 93 94 0 TEXT "Labels" | 165150,258150 1 0 0 "txDataEmpty" -I 94 0 2 Builtin OutPort | 159150,258150 "" "" -END diff --git a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.v b/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.v deleted file mode 100644 index e105e8f7..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/readWriteSPIWireData.v +++ /dev/null @@ -1,229 +0,0 @@ - -////////////////////////////////////////////////////////////////////// -//// //// -//// readWriteSPIWireData.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module readWriteSPIWireData (clk, clkDelay, rst, rxDataOut, rxDataRdySet, spiClkOut, spiDataIn, spiDataOut, txDataEmpty, txDataFull, txDataFullClr, txDataIn); -input clk; -input [7:0]clkDelay; -input rst; -input spiDataIn; -input txDataFull; -input [7:0]txDataIn; -output [7:0]rxDataOut; -output rxDataRdySet; -output spiClkOut; -output spiDataOut; -output txDataEmpty; -output txDataFullClr; - -wire clk; -wire [7:0]clkDelay; -wire rst; -reg [7:0]rxDataOut, next_rxDataOut; -reg rxDataRdySet, next_rxDataRdySet; -reg spiClkOut, next_spiClkOut; -wire spiDataIn; -reg spiDataOut, next_spiDataOut; -reg txDataEmpty, next_txDataEmpty; -wire txDataFull; -reg txDataFullClr, next_txDataFullClr; -wire [7:0]txDataIn; - -// diagram signals declarations -reg [3:0]bitCnt, next_bitCnt; -reg [7:0]clkDelayCnt, next_clkDelayCnt; -reg [7:0]rxDataShiftReg, next_rxDataShiftReg; -reg [7:0]txDataShiftReg, next_txDataShiftReg; - -// BINARY ENCODED state machine: rwSPISt -// State codes definitions: -`define WT_TX_DATA 2'b00 -`define CLK_HI 2'b01 -`define CLK_LO 2'b10 -`define ST_RW_WIRE 2'b11 - -reg [1:0]CurrState_rwSPISt, NextState_rwSPISt; - -// Diagram actions (continuous assignments allowed only: assign ...) -// diagram ACTION - - -// Machine: rwSPISt - -// NextState logic (combinatorial) -always @ (txDataFull or txDataIn or clkDelayCnt or clkDelay or txDataShiftReg or bitCnt or rxDataShiftReg or spiDataIn or rxDataRdySet or txDataEmpty or txDataFullClr or spiClkOut or spiDataOut or rxDataOut or CurrState_rwSPISt) -begin - NextState_rwSPISt <= CurrState_rwSPISt; - // Set default values for outputs and signals - next_rxDataRdySet <= rxDataRdySet; - next_txDataEmpty <= txDataEmpty; - next_txDataShiftReg <= txDataShiftReg; - next_rxDataShiftReg <= rxDataShiftReg; - next_bitCnt <= bitCnt; - next_clkDelayCnt <= clkDelayCnt; - next_txDataFullClr <= txDataFullClr; - next_spiClkOut <= spiClkOut; - next_spiDataOut <= spiDataOut; - next_rxDataOut <= rxDataOut; - case (CurrState_rwSPISt) // synopsys parallel_case full_case - `WT_TX_DATA: - begin - next_rxDataRdySet <= 1'b0; - next_txDataEmpty <= 1'b1; - if (txDataFull == 1'b1) - begin - NextState_rwSPISt <= `CLK_HI; - next_txDataShiftReg <= txDataIn; - next_rxDataShiftReg <= 8'h00; - next_bitCnt <= 4'h0; - next_clkDelayCnt <= 8'h00; - next_txDataFullClr <= 1'b1; - next_txDataEmpty <= 1'b0; - end - end - `CLK_HI: - begin - next_clkDelayCnt <= clkDelayCnt + 1'b1; - next_txDataFullClr <= 1'b0; - next_rxDataRdySet <= 1'b0; - if (clkDelayCnt == clkDelay) - begin - NextState_rwSPISt <= `CLK_LO; - next_spiClkOut <= 1'b0; - next_spiDataOut <= txDataShiftReg[7]; - next_txDataShiftReg <= {txDataShiftReg[6:0], 1'b0}; - next_clkDelayCnt <= 8'h00; - end - end - `CLK_LO: - begin - next_clkDelayCnt <= clkDelayCnt + 1'b1; - if ((bitCnt == 4'h8) && (txDataFull == 1'b1)) - begin - NextState_rwSPISt <= `CLK_HI; - next_rxDataRdySet <= 1'b1; - next_rxDataOut <= rxDataShiftReg; - next_txDataShiftReg <= txDataIn; - next_bitCnt <= 3'b000; - next_clkDelayCnt <= 8'h00; - next_txDataFullClr <= 1'b1; - end - else if (bitCnt == 4'h8) - begin - NextState_rwSPISt <= `WT_TX_DATA; - next_rxDataRdySet <= 1'b1; - next_rxDataOut <= rxDataShiftReg; - end - else if (clkDelayCnt == clkDelay) - begin - NextState_rwSPISt <= `CLK_HI; - next_spiClkOut <= 1'b1; - next_bitCnt <= bitCnt + 1'b1; - next_clkDelayCnt <= 8'h00; - next_rxDataShiftReg <= {rxDataShiftReg[6:0], spiDataIn}; - end - end - `ST_RW_WIRE: - begin - next_bitCnt <= 4'h0; - next_clkDelayCnt <= 8'h00; - next_txDataFullClr <= 1'b0; - next_rxDataRdySet <= 1'b0; - next_txDataShiftReg <= 8'h00; - next_rxDataShiftReg <= 8'h00; - next_rxDataOut <= 8'h00; - next_spiDataOut <= 1'b0; - next_spiClkOut <= 1'b0; - next_txDataEmpty <= 1'b0; - NextState_rwSPISt <= `WT_TX_DATA; - end - endcase -end - -// Current State Logic (sequential) -always @ (posedge clk) -begin - if (rst == 1'b1) - CurrState_rwSPISt <= `ST_RW_WIRE; - else - CurrState_rwSPISt <= NextState_rwSPISt; -end - -// Registered outputs logic -always @ (posedge clk) -begin - if (rst == 1'b1) - begin - rxDataRdySet <= 1'b0; - txDataEmpty <= 1'b0; - txDataFullClr <= 1'b0; - spiClkOut <= 1'b0; - spiDataOut <= 1'b0; - rxDataOut <= 8'h00; - txDataShiftReg <= 8'h00; - rxDataShiftReg <= 8'h00; - bitCnt <= 4'h0; - clkDelayCnt <= 8'h00; - end - else - begin - rxDataRdySet <= next_rxDataRdySet; - txDataEmpty <= next_txDataEmpty; - txDataFullClr <= next_txDataFullClr; - spiClkOut <= next_spiClkOut; - spiDataOut <= next_spiDataOut; - rxDataOut <= next_rxDataOut; - txDataShiftReg <= next_txDataShiftReg; - rxDataShiftReg <= next_rxDataShiftReg; - bitCnt <= next_bitCnt; - clkDelayCnt <= next_clkDelayCnt; - end -end - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.asf b/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.asf deleted file mode 100644 index 4d05954e..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.asf +++ /dev/null @@ -1,231 +0,0 @@ -VERSION=1.15 -HEADER -FILE="sendCmd.asf" -FID=4788d213 -LANGUAGE=VERILOG -ENTITY="sendCmd" -FRAMES=ON -FREEOID=426 -"LIBRARIES=//////////////////////////////////////////////////////////////////////\n//// ////\n//// sendCmd.v ////\n//// ////\n//// This file is part of the spiMaster opencores effort.\n//// ////\n//// ////\n//// Module Description: ////\n//// parameterized dual clock domain fifo. \n//// fifo depth is restricted to 2^ADDR_WIDTH\n//// No protection against over runs and under runs.\n//// \n//// ////\n//// To Do: ////\n//// \n//// ////\n//// Author(s): ////\n//// - Steve Fielding, sfielding@base2designs.com ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//// ////\n//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG ////\n//// ////\n//// This source file may be used and distributed without ////\n//// restriction provided that this copyright statement is not ////\n//// removed from the file and that any derivative work contains ////\n//// the original copyright notice and the associated disclaimer. ////\n//// ////\n//// This source file is free software; you can redistribute it ////\n//// and/or modify it under the terms of the GNU Lesser General ////\n//// Public License as published by the Free Software Foundation; ////\n//// either version 2.1 of the License, or (at your option) any ////\n//// later version. ////\n//// ////\n//// This source is distributed in the hope that it will be ////\n//// useful, but WITHOUT ANY WARRANTY; without even the implied ////\n//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////\n//// PURPOSE. See the GNU Lesser General Public License for more ////\n//// details. ////\n//// ////\n//// You should have received a copy of the GNU Lesser General ////\n//// Public License along with this source; if not, download it ////\n//// from ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//\n`include \"timescale.v\"\n\n" -END -BUNDLES -B T "Declarations" 0,0,255 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Conditions" 0,0,0 0 0 0 255,255,255 0 3125 0 0110 1 "Arial" 0 -B F "States" 0,0,0 0 0 1 0,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Actions" 0,0,0 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 0 -B L "Transitions" 0,0,0 0 0 1 0,0,0 1 3527 1480 0000 1 "Arial" 0 -B F "Ports" 0,0,0 0 0 1 0,255,255 1 3527 1480 0000 1 "Arial" 0 -B L "Errors" 255,0,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -B T "State Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 4 -B F "Current State" 255,255,0 0 0 1 255,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Comments" 157,157,157 0 0 1 255,255,255 0 3527 1480 0000 1 "Arial" 0 -B L "Info" 0,255,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -END -INSTHEADER 1 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 5000,5000 10000,10000 -END -INSTHEADER 168 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -OBJECTS -S 287 169 36864 ELLIPSE "States" | 58145,42664 6500 6500 -C 286 284 0 TEXT "Conditions" | 58455,63310 1 0 0 "txDataFull == 1'b0" -A 285 284 16 TEXT "Actions" | 58389,58640 1 0 0 "txDataOut <= dataByte3;\ntxDataWen <= 1'b1;" -W 284 169 0 289 287 BEZIER "Transitions" | 55994,62919 56515,59615 56972,52449 57396,49118 -G 1 0 0 TEXT 0,0,0 0 0 0 255,255,255 0 3527 1480 0000 1 "Arial" 0 | 110650,276400 1 0 0 "Module: sendCmd" -A 5 0 1 TEXT "Actions" | 30400,270465 1 0 0 "-- diagram ACTION\nalways @(sendCmdReq1 or sendCmdReq2 ) begin\n sendCmdReq <= sendCmdReq1 | sendCmdReq2;\nend\n\nalways @(posedge clk) begin\n cmdByte <= cmdByte_1 | cmdByte_2;\n dataByte1 <= dataByte1_1 | dataByte1_2;\n dataByte2 <= dataByte2_1 | dataByte2_2;\n dataByte3 <= dataByte3_1 | dataByte3_2;\n dataByte4 <= dataByte4_1 | dataByte4_2;\n checkSumByte <= checkSumByte_1 | checkSumByte_2;\nend" -F 6 0 512 72 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,208764 -L 7 6 0 TEXT "Labels" | 33841,199139 1 0 0 "sndCmdSt" -L 298 297 0 TEXT "State Labels" | 119183,117704 1 0 0 "D_BYTE4_ST\n/12/" -S 297 169 49152 ELLIPSE "States" | 119183,117704 6500 6500 -L 296 295 0 TEXT "State Labels" | 121962,90985 1 0 0 "D_BYTE4_FIN\n/11/" -S 295 169 45056 ELLIPSE "States" | 121962,90985 6500 6500 -C 294 292 0 TEXT "Conditions" | 122272,111631 1 0 0 "txDataFull == 1'b0" -A 293 292 16 TEXT "Actions" | 122206,106961 1 0 0 "txDataOut <= dataByte4;\ntxDataWen <= 1'b1;" -W 292 169 0 297 295 BEZIER "Transitions" | 119811,111240 120332,107936 120789,100770 121213,97439 -L 290 289 0 TEXT "State Labels" | 55366,69383 1 0 0 "D_BYTE3_ST\n/10/" -S 289 169 40960 ELLIPSE "States" | 55366,69383 6500 6500 -L 288 287 0 TEXT "State Labels" | 58145,42664 1 0 0 "D_BYTE3_FIN\n/9/" -W 319 169 0 205 247 BEZIER "Transitions" | 63983,140499 60844,135517 56583,126997 53444,122015 -A 318 295 4 TEXT "Actions" | 139150,86599 1 0 0 "txDataWen <= 1'b0;" -A 317 287 4 TEXT "Actions" | 76633,44284 1 0 0 "txDataWen <= 1'b0;" -A 316 225 4 TEXT "Actions" | 71992,91513 1 0 0 "txDataWen <= 1'b0;" -A 315 311 4 TEXT "Actions" | 134912,45978 1 0 0 "txDataWen <= 1'b0;\ntimeOutCnt <= 10'h000;" -L 314 313 0 TEXT "State Labels" | 122732,70475 1 0 0 "CS_ST\n/14/" -S 313 169 57344 ELLIPSE "States" | 122732,70475 6500 6500 -L 312 311 0 TEXT "State Labels" | 125511,43756 1 0 0 "CS_FIN\n/13/" -S 311 169 53248 ELLIPSE "States" | 125511,43756 6500 6500 -C 310 308 0 TEXT "Conditions" | 125821,64402 1 0 0 "txDataFull == 1'b0" -A 309 308 16 TEXT "Actions" | 125755,59732 1 0 0 "txDataOut <= checkSumByte;\ntxDataWen <= 1'b1;" -W 308 169 0 313 311 BEZIER "Transitions" | 123360,64011 123881,60707 124338,53541 124762,50210 -W 335 169 0 332 182 BEZIER "Transitions" | 45364,251903 47642,252271 81651,254936 85013,246121 -W 334 169 0 185 332 BEZIER "Transitions" | 41073,269282 40336,265731 39290,259500 38553,255949 -S 332 169 61440 ELLIPSE "States" | 39325,249500 6500 6500 -L 331 332 0 TEXT "State Labels" | 39325,251108 1 0 0 "SEND_FF_ST\n/15/" -I 329 0 2 Builtin Signal | 178213,215725 "" "" -L 328 329 0 TEXT "Labels" | 181213,215725 1 0 0 "sendCmdReq" -L 327 326 0 TEXT "Labels" | 157273,263636 1 0 0 "sendCmdReq2" -I 326 0 2 Builtin InPort | 151273,263636 "" "" -I 325 0 2 Builtin InPort | 151961,268514 "" "" -L 324 325 0 TEXT "Labels" | 157961,268514 1 0 0 "sendCmdReq1" -W 322 169 0 295 313 BEZIER "Transitions" | 122244,84497 122585,81836 122598,79603 122939,76942 -W 321 169 0 287 297 BEZIER "Transitions" | 63804,39468 72608,38035 85574,34251 91921,34114\ - 98268,33978 106049,36299 107653,41212 109257,46126\ - 107891,63463 106287,73597 104684,83732 99633,106938\ - 99837,114069 100042,121201 105913,126526 108335,126867\ - 110758,127208 113121,124683 115032,122704 -W 320 169 0 225 289 BEZIER "Transitions" | 54252,82625 54525,80100 54595,78388 54868,75863 -A 351 260 16 TEXT "Actions" | 146029,190376 1 0 0 "respTout <= 1'b1;" -A 338 335 16 TEXT "Actions" | 57237,258852 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1" -C 337 335 0 TEXT "Conditions" | 46128,249292 1 0 0 "txDataFull == 1'b0" -I 74 0 2 Builtin InPort | 195700,267632 "" "" -L 73 74 0 TEXT "Labels" | 201700,267632 1 0 0 "rst" -I 72 0 3 Builtin InPort | 195700,272800 "" "" -L 71 72 0 TEXT "Labels" | 201700,272800 1 0 0 "clk" -L 367 366 0 TEXT "Labels" | 118445,251448 1 0 0 "dataByte2_2[7:0]" -I 366 0 130 Builtin InPort | 112445,251448 "" "" -L 365 364 0 TEXT "Labels" | 118188,256588 1 0 0 "dataByte2_1[7:0]" -I 364 0 130 Builtin InPort | 112188,256588 "" "" -L 363 362 0 TEXT "Labels" | 118445,261214 1 0 0 "dataByte1_2[7:0]" -I 362 0 130 Builtin InPort | 112445,261214 "" "" -I 361 0 130 Builtin InPort | 112448,265583 "" "" -L 360 361 0 TEXT "Labels" | 118448,265583 1 0 0 "dataByte1_1[7:0]" -A 358 253 16 TEXT "Actions" | 138128,223118 1 0 0 "respByte <= rxDataIn;" -C 357 356 0 TEXT "Conditions" | 73122,198009 1 0 0 "rst == 1'b1" -W 356 6 0 355 100 BEZIER "Transitions" | 60594,200141 72339,199739 94500,197787 106245,197385 -I 355 6 0 Builtin Reset | 60594,200141 -W 354 6 0 168 102 BEZIER "Transitions" | 105630,145031 98556,147323 85638,151108 82264,155037\ - 78891,158967 79547,170103 83247,173083 86948,176063\ - 98835,174994 105909,175387 -L 95 96 0 TEXT "Labels" | 155940,273023 1 0 0 "sendCmdRdy" -I 383 0 130 Builtin Signal | 177941,226776 "" "" -L 382 383 0 TEXT "Labels" | 180941,226776 1 0 0 "dataByte4[7:0]" -I 381 0 130 Builtin Signal | 178198,220865 "" "" -L 380 381 0 TEXT "Labels" | 181198,220865 1 0 0 "checkSumByte[7:0]" -L 379 378 0 TEXT "Labels" | 117931,223949 1 0 0 "checkSumByte_2[7:0]" -I 378 0 130 Builtin InPort | 111931,223949 "" "" -L 377 376 0 TEXT "Labels" | 117931,228318 1 0 0 "checkSumByte_1[7:0]" -I 376 0 130 Builtin InPort | 111931,228318 "" "" -L 375 374 0 TEXT "Labels" | 118188,232687 1 0 0 "dataByte4_2[7:0]" -I 374 0 130 Builtin InPort | 112188,232687 "" "" -L 373 372 0 TEXT "Labels" | 118188,237313 1 0 0 "dataByte4_1[7:0]" -I 372 0 130 Builtin InPort | 112188,237313 "" "" -L 371 370 0 TEXT "Labels" | 118188,241939 1 0 0 "dataByte3_2[7:0]" -I 370 0 130 Builtin InPort | 112188,241939 "" "" -L 369 368 0 TEXT "Labels" | 118188,246822 1 0 0 "dataByte3_1[7:0]" -I 368 0 130 Builtin InPort | 112188,246822 "" "" -I 111 0 2 Builtin OutPort | 150520,249425 "" "" -L 110 109 0 TEXT "Labels" | 158977,244784 1 0 0 "txDataFull" -I 109 0 2 Builtin InPort | 152977,244784 "" "" -L 108 107 0 TEXT "Labels" | 192010,249698 1 0 0 "rxDataRdy" -I 107 0 2 Builtin InPort | 186010,249698 "" "" -W 106 6 0 102 168 BEZIER "Transitions" | 112025,167024 112028,164120 111877,156052 111880,149910 -W 105 6 0 100 102 BEZIER "Transitions" | 112303,189956 112099,186817 112066,183113 111862,179974 -S 102 6 65536 ELLIPSE "States" | 112128,173499 6500 6500 -L 101 102 0 TEXT "State Labels" | 112128,173499 1 0 0 "WT_CMD\n/17/" -S 100 6 69632 ELLIPSE "States" | 112674,196431 6500 6500 -L 99 100 0 TEXT "State Labels" | 112674,196431 1 0 0 "ST_S_CMD\n/18/" -I 96 0 2 Builtin OutPort | 149940,273023 "" "" -I 391 0 130 Builtin OutPort | 109748,219216 "" "" -L 390 391 0 TEXT "Labels" | 115748,219216 1 0 0 "respByte[7:0]" -L 389 388 0 TEXT "Labels" | 181327,240140 1 0 0 "dataByte1[7:0]" -I 388 0 130 Builtin Signal | 178327,240140 "" "" -L 387 386 0 TEXT "Labels" | 181327,235771 1 0 0 "dataByte2[7:0]" -I 386 0 130 Builtin Signal | 178327,235771 "" "" -L 385 384 0 TEXT "Labels" | 181070,231402 1 0 0 "dataByte3[7:0]" -I 384 0 130 Builtin Signal | 178070,231402 "" "" -C 123 106 0 TEXT "Conditions" | 113758,166364 1 0 0 "sendCmdReq == 1'b1" -L 122 121 0 TEXT "Labels" | 189826,245330 1 0 0 "rxDataRdyClr" -I 121 0 2 Builtin OutPort | 183826,245330 "" "" -L 118 117 0 TEXT "Labels" | 156520,254066 1 0 0 "txDataOut[7:0]" -I 117 0 130 Builtin OutPort | 150520,254066 "" "" -L 116 115 0 TEXT "Labels" | 191737,253793 1 0 0 "rxDataIn[7:0]" -I 115 0 130 Builtin InPort | 185737,253793 "" "" -L 112 111 0 TEXT "Labels" | 156520,249425 1 0 0 "txDataWen" -L 392 393 0 TEXT "Labels" | 155040,236450 1 0 0 "cmdByte_1[7:0]" -I 393 0 130 Builtin InPort | 149040,236450 "" "" -L 394 395 0 TEXT "Labels" | 155040,232130 1 0 0 "cmdByte_2[7:0]" -I 395 0 130 Builtin InPort | 149040,232130 "" "" -L 396 397 0 TEXT "Labels" | 115350,214850 1 0 0 "respTout" -I 397 0 2 Builtin OutPort | 109350,214850 "" "" -L 398 399 0 TEXT "Labels" | 156083,221028 1 0 0 "cmdByte[7:0]" -I 399 0 130 Builtin Signal | 153083,221028 "" "" -A 137 100 4 TEXT "Actions" | 132312,205914 1 0 0 "sendCmdRdy <= 1'b0;\ntxDataWen <= 1'b0;\ntxDataOut <= 8'h00;\nrxDataRdyClr <= 1'b0;\nrespByte <= 8'h00;\nrespTout <= 1'b0;\ntimeOutCnt <= 10'h000;" -A 138 102 4 TEXT "Actions" | 124218,176348 1 0 0 "sendCmdRdy <= 1'b1;" -A 139 106 16 TEXT "Actions" | 108893,161005 1 0 0 "sendCmdRdy <= 1'b0;\nrespTout <= 1'b0;" -L 400 401 0 TEXT "Labels" | 156156,216020 1 0 0 "timeOutCnt[9:0]" -I 401 0 130 Builtin Signal | 153156,216020 "" "" -L 407 408 0 TEXT "Labels" | 158650,240900 1 0 0 "txDataEmpty" -I 408 0 2 Builtin InPort | 152650,240900 "" "" -A 412 410 16 TEXT "Actions" | 187604,127904 1 0 0 "" -C 411 410 0 TEXT "Conditions" | 176525,34775 1 0 0 "txDataEmpty == 1'b1" -W 410 169 0 311 234 BEZIER "Transitions" | 129680,38771 133617,37459 138963,34462 145962,34024\ - 152962,33587 173088,34463 180556,35962 188025,37462\ - 197775,42588 199431,55306 201088,68025 197962,113775\ - 186681,128962 175400,144150 133400,159150 122119,165962\ - 110838,172775 107712,185025 107774,191306 107837,197587\ - 111213,210463 112150,219431 113087,228400 113463,251400\ - 114962,258243 116462,265087 122088,269463 125056,270025\ - 128025,270588 133111,267776 136236,266714 -L 420 421 0 TEXT "State Labels" | 197224,232320 1 0 0 "DEL\n/19/" -S 421 169 77824 ELLIPSE "States" | 197224,232320 6500 6500 -W 422 169 0 234 421 BEZIER "Transitions" | 147223,260243 159499,254229 180037,242591 192313,236577 -A 423 422 16 TEXT "Actions" | 153948,265428 1 0 0 "txDataOut <= 8'hff;\ntxDataWen <= 1'b1;\ntimeOutCnt <= timeOutCnt + 1'b1;\nrxDataRdyClr <= 1'b1;" -W 424 169 0 421 237 BEZIER "Transitions" | 190754,232933 178974,233801 160757,232683 148977,233551 -A 425 424 16 TEXT "Actions" | 157420,238644 1 0 0 "txDataWen <= 1'b0;\nrxDataRdyClr <= 1'b0;" -L 167 168 0 TEXT "State Labels" | 111928,143426 1 0 0 "CMD" -S 168 6 73732 ELLIPSE 0,0,0 0 0 1 0,255,255 1 | 111928,143426 6500 6500 -H 169 168 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28668,29070 213168,277070 -S 176 169 65536 ELLIPSE "States" | 60614,226551 6500 6500 -A 177 176 4 TEXT "Actions" | 78632,227097 1 0 0 "txDataWen <= 1'b0;" -W 178 169 0 182 176 BEZIER "Transitions" | 85317,242783 68957,244509 60312,236489 60462,233017 -L 181 176 0 TEXT "State Labels" | 60614,226551 1 0 0 "CMD_BYTE_ST\n/16/" -S 182 169 8192 ELLIPSE "States" | 91419,245022 6500 6500 -L 183 182 0 TEXT "State Labels" | 91419,245558 1 0 0 "SEND_FF_FIN\n/2/" -I 184 169 0 Builtin Exit | 133914,177514 -I 185 169 0 Builtin Entry | 41073,271359 -L 193 194 0 TEXT "State Labels" | 61318,198350 1 0 0 "CMD_BYTE_FIN\n/3/" -S 194 169 12288 ELLIPSE "States" | 61318,198350 6500 6500 -W 197 169 0 176 194 BEZIER "Transitions" | 60038,220079 60241,216895 60646,208095 60689,204810 -C 200 197 0 TEXT "Conditions" | 62427,219576 1 0 0 "txDataFull == 1'b0" -A 201 197 16 TEXT "Actions" | 62131,214610 1 0 0 "txDataOut <= cmdByte;\ntxDataWen <= 1'b1;" -W 202 169 0 242 205 BEZIER "Transitions" | 65275,171028 65478,167844 67531,155583 67557,152187 -A 203 202 16 TEXT "Actions" | 55728,165182 1 0 0 "txDataOut <= dataByte1;\ntxDataWen <= 1'b1;" -C 204 202 0 TEXT "Conditions" | 67553,171135 1 0 0 "txDataFull == 1'b0" -S 205 169 16384 ELLIPSE "States" | 67858,145716 6500 6500 -L 206 205 0 TEXT "State Labels" | 67858,145716 1 0 0 "D_BYTE1_FIN\n/4/" -W 222 169 0 247 225 BEZIER "Transitions" | 52145,109346 52666,106042 53123,98876 53547,95545 -A 223 222 16 TEXT "Actions" | 54540,105067 1 0 0 "txDataOut <= dataByte2;\ntxDataWen <= 1'b1;" -C 224 222 0 TEXT "Conditions" | 54606,109737 1 0 0 "txDataFull == 1'b0" -S 225 169 0 ELLIPSE "States" | 54296,89091 6500 6500 -L 226 225 0 TEXT "State Labels" | 54296,89091 1 0 0 "D_BYTE2_FIN\n/0/" -L 233 234 0 TEXT "State Labels" | 141088,262390 1 0 0 "REQ_RESP_ST\n/5/" -S 234 169 20480 ELLIPSE "States" | 141088,262390 6500 6500 -L 236 237 0 TEXT "State Labels" | 142710,231828 1 0 0 "REQ_RESP_FIN\n/6/" -S 237 169 24576 ELLIPSE "States" | 142710,231828 6500 6500 -L 238 239 0 TEXT "State Labels" | 145411,207811 1 0 0 "CHK_RESP\n/7/" -S 239 169 28672 ELLIPSE "States" | 145411,207811 6500 6500 -C 255 253 0 TEXT "Conditions" | 150412,229033 1 0 0 "rxDataRdy == 1'b1" -W 253 169 0 237 239 BEZIER "Transitions" | 143448,225372 143908,221460 144298,218142 144670,214266 -S 247 169 4096 ELLIPSE "States" | 51517,115810 6500 6500 -L 246 247 0 TEXT "State Labels" | 51517,115810 1 0 0 "D_BYTE2_ST\n/1/" -W 245 169 0 194 242 BEZIER "Transitions" | 62217,191914 62763,188911 63074,186881 63620,183878 -A 243 205 4 TEXT "Actions" | 77303,148032 1 0 0 "txDataWen <= 1'b0;" -S 242 169 32768 ELLIPSE "States" | 64894,177508 6500 6500 -L 241 242 0 TEXT "State Labels" | 64894,177508 1 0 0 "D_BYTE1_ST\n/8/" -A 240 194 4 TEXT "Actions" | 71835,200982 1 0 0 "txDataWen <= 1'b0;" -W 264 169 3 239 234 BEZIER "Transitions" | 140148,211623 134593,217246 123512,226873 120971,232699\ - 118431,238525 119380,250586 121717,254311 124054,258037\ - 130485,259851 134685,261273 -C 263 262 0 TEXT "Conditions" | 112592,197061 1 0 0 "respByte[7] == 1'b0" -W 262 169 2 239 184 BEZIER "Transitions" | 143473,201609 142051,196460 135404,184680 133914,179562 -C 261 260 0 TEXT "Conditions" | 158534,204974 1 0 0 "timeOutCnt == 10'h200" -W 260 169 1 239 184 BEZIER "Transitions" | 151546,205667 157905,203655 172683,180675 136858,177514 -END diff --git a/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.v b/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.v deleted file mode 100644 index 25f68298..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/sendCmd.v +++ /dev/null @@ -1,369 +0,0 @@ - -////////////////////////////////////////////////////////////////////// -//// //// -//// sendCmd.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" - - -module sendCmd (checkSumByte_1, checkSumByte_2, clk, cmdByte_1, cmdByte_2, dataByte1_1, dataByte1_2, dataByte2_1, dataByte2_2, dataByte3_1, dataByte3_2, dataByte4_1, dataByte4_2, respByte, respTout, rst, rxDataIn, rxDataRdy, rxDataRdyClr, sendCmdRdy, sendCmdReq1, sendCmdReq2, txDataEmpty, txDataFull, txDataOut, txDataWen); -input [7:0]checkSumByte_1; -input [7:0]checkSumByte_2; -input clk; -input [7:0]cmdByte_1; -input [7:0]cmdByte_2; -input [7:0]dataByte1_1; -input [7:0]dataByte1_2; -input [7:0]dataByte2_1; -input [7:0]dataByte2_2; -input [7:0]dataByte3_1; -input [7:0]dataByte3_2; -input [7:0]dataByte4_1; -input [7:0]dataByte4_2; -input rst; -input [7:0]rxDataIn; -input rxDataRdy; -input sendCmdReq1; -input sendCmdReq2; -input txDataEmpty; -input txDataFull; -output [7:0]respByte; -output respTout; -output rxDataRdyClr; -output sendCmdRdy; -output [7:0]txDataOut; -output txDataWen; - -wire [7:0]checkSumByte_1; -wire [7:0]checkSumByte_2; -wire clk; -wire [7:0]cmdByte_1; -wire [7:0]cmdByte_2; -wire [7:0]dataByte1_1; -wire [7:0]dataByte1_2; -wire [7:0]dataByte2_1; -wire [7:0]dataByte2_2; -wire [7:0]dataByte3_1; -wire [7:0]dataByte3_2; -wire [7:0]dataByte4_1; -wire [7:0]dataByte4_2; -reg [7:0]respByte, next_respByte; -reg respTout, next_respTout; -wire rst; -wire [7:0]rxDataIn; -wire rxDataRdy; -reg rxDataRdyClr, next_rxDataRdyClr; -reg sendCmdRdy, next_sendCmdRdy; -wire sendCmdReq1; -wire sendCmdReq2; -wire txDataEmpty; -wire txDataFull; -reg [7:0]txDataOut, next_txDataOut; -reg txDataWen, next_txDataWen; - -// diagram signals declarations -reg [7:0]checkSumByte, next_checkSumByte; -reg [7:0]cmdByte, next_cmdByte; -reg [7:0]dataByte1, next_dataByte1; -reg [7:0]dataByte2, next_dataByte2; -reg [7:0]dataByte3, next_dataByte3; -reg [7:0]dataByte4, next_dataByte4; -reg sendCmdReq, next_sendCmdReq; -reg [9:0]timeOutCnt, next_timeOutCnt; - -// BINARY ENCODED state machine: sndCmdSt -// State codes definitions: -`define CMD_D_BYTE2_FIN 5'b00000 -`define CMD_D_BYTE2_ST 5'b00001 -`define CMD_SEND_FF_FIN 5'b00010 -`define CMD_CMD_BYTE_FIN 5'b00011 -`define CMD_D_BYTE1_FIN 5'b00100 -`define CMD_REQ_RESP_ST 5'b00101 -`define CMD_REQ_RESP_FIN 5'b00110 -`define CMD_CHK_RESP 5'b00111 -`define CMD_D_BYTE1_ST 5'b01000 -`define CMD_D_BYTE3_FIN 5'b01001 -`define CMD_D_BYTE3_ST 5'b01010 -`define CMD_D_BYTE4_FIN 5'b01011 -`define CMD_D_BYTE4_ST 5'b01100 -`define CMD_CS_FIN 5'b01101 -`define CMD_CS_ST 5'b01110 -`define CMD_SEND_FF_ST 5'b01111 -`define CMD_CMD_BYTE_ST 5'b10000 -`define WT_CMD 5'b10001 -`define ST_S_CMD 5'b10010 -`define CMD_DEL 5'b10011 - -reg [4:0]CurrState_sndCmdSt, NextState_sndCmdSt; - -// Diagram actions (continuous assignments allowed only: assign ...) -// diagram ACTION -always @(sendCmdReq1 or sendCmdReq2 ) begin -sendCmdReq <= sendCmdReq1 | sendCmdReq2; -end -always @(posedge clk) begin -cmdByte <= cmdByte_1 | cmdByte_2; -dataByte1 <= dataByte1_1 | dataByte1_2; -dataByte2 <= dataByte2_1 | dataByte2_2; -dataByte3 <= dataByte3_1 | dataByte3_2; -dataByte4 <= dataByte4_1 | dataByte4_2; -checkSumByte <= checkSumByte_1 | checkSumByte_2; -end - - -// Machine: sndCmdSt - -// NextState logic (combinatorial) -always @ (txDataFull or dataByte2 or timeOutCnt or rxDataRdy or rxDataIn or respByte or dataByte1 or dataByte3 or dataByte4 or txDataEmpty or checkSumByte or cmdByte or sendCmdReq or txDataWen or txDataOut or rxDataRdyClr or respTout or sendCmdRdy or CurrState_sndCmdSt) -begin - NextState_sndCmdSt <= CurrState_sndCmdSt; - // Set default values for outputs and signals - next_txDataWen <= txDataWen; - next_txDataOut <= txDataOut; - next_timeOutCnt <= timeOutCnt; - next_rxDataRdyClr <= rxDataRdyClr; - next_respByte <= respByte; - next_respTout <= respTout; - next_sendCmdRdy <= sendCmdRdy; - case (CurrState_sndCmdSt) // synopsys parallel_case full_case - `WT_CMD: - begin - next_sendCmdRdy <= 1'b1; - if (sendCmdReq == 1'b1) - begin - NextState_sndCmdSt <= `CMD_SEND_FF_ST; - next_sendCmdRdy <= 1'b0; - next_respTout <= 1'b0; - end - end - `ST_S_CMD: - begin - next_sendCmdRdy <= 1'b0; - next_txDataWen <= 1'b0; - next_txDataOut <= 8'h00; - next_rxDataRdyClr <= 1'b0; - next_respByte <= 8'h00; - next_respTout <= 1'b0; - next_timeOutCnt <= 10'h000; - NextState_sndCmdSt <= `WT_CMD; - end - `CMD_D_BYTE2_FIN: - begin - next_txDataWen <= 1'b0; - NextState_sndCmdSt <= `CMD_D_BYTE3_ST; - end - `CMD_D_BYTE2_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_D_BYTE2_FIN; - next_txDataOut <= dataByte2; - next_txDataWen <= 1'b1; - end - end - `CMD_SEND_FF_FIN: - begin - NextState_sndCmdSt <= `CMD_CMD_BYTE_ST; - end - `CMD_CMD_BYTE_FIN: - begin - next_txDataWen <= 1'b0; - NextState_sndCmdSt <= `CMD_D_BYTE1_ST; - end - `CMD_D_BYTE1_FIN: - begin - next_txDataWen <= 1'b0; - NextState_sndCmdSt <= `CMD_D_BYTE2_ST; - end - `CMD_REQ_RESP_ST: - begin - NextState_sndCmdSt <= `CMD_DEL; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - next_timeOutCnt <= timeOutCnt + 1'b1; - next_rxDataRdyClr <= 1'b1; - end - `CMD_REQ_RESP_FIN: - begin - if (rxDataRdy == 1'b1) - begin - NextState_sndCmdSt <= `CMD_CHK_RESP; - next_respByte <= rxDataIn; - end - end - `CMD_CHK_RESP: - begin - if (timeOutCnt == 10'h200) - begin - NextState_sndCmdSt <= `WT_CMD; - next_respTout <= 1'b1; - end - else if (respByte[7] == 1'b0) - begin - NextState_sndCmdSt <= `WT_CMD; - end - else - begin - NextState_sndCmdSt <= `CMD_REQ_RESP_ST; - end - end - `CMD_D_BYTE1_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_D_BYTE1_FIN; - next_txDataOut <= dataByte1; - next_txDataWen <= 1'b1; - end - end - `CMD_D_BYTE3_FIN: - begin - next_txDataWen <= 1'b0; - NextState_sndCmdSt <= `CMD_D_BYTE4_ST; - end - `CMD_D_BYTE3_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_D_BYTE3_FIN; - next_txDataOut <= dataByte3; - next_txDataWen <= 1'b1; - end - end - `CMD_D_BYTE4_FIN: - begin - next_txDataWen <= 1'b0; - NextState_sndCmdSt <= `CMD_CS_ST; - end - `CMD_D_BYTE4_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_D_BYTE4_FIN; - next_txDataOut <= dataByte4; - next_txDataWen <= 1'b1; - end - end - `CMD_CS_FIN: - begin - next_txDataWen <= 1'b0; - next_timeOutCnt <= 10'h000; - if (txDataEmpty == 1'b1) - begin - NextState_sndCmdSt <= `CMD_REQ_RESP_ST; - end - end - `CMD_CS_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_CS_FIN; - next_txDataOut <= checkSumByte; - next_txDataWen <= 1'b1; - end - end - `CMD_SEND_FF_ST: - begin - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_SEND_FF_FIN; - next_txDataOut <= 8'hff; - next_txDataWen <= 1'b1; - end - end - `CMD_CMD_BYTE_ST: - begin - next_txDataWen <= 1'b0; - if (txDataFull == 1'b0) - begin - NextState_sndCmdSt <= `CMD_CMD_BYTE_FIN; - next_txDataOut <= cmdByte; - next_txDataWen <= 1'b1; - end - end - `CMD_DEL: - begin - NextState_sndCmdSt <= `CMD_REQ_RESP_FIN; - next_txDataWen <= 1'b0; - next_rxDataRdyClr <= 1'b0; - end - endcase -end - -// Current State Logic (sequential) -always @ (posedge clk) -begin - if (rst == 1'b1) - CurrState_sndCmdSt <= `ST_S_CMD; - else - CurrState_sndCmdSt <= NextState_sndCmdSt; -end - -// Registered outputs logic -always @ (posedge clk) -begin - if (rst == 1'b1) - begin - txDataWen <= 1'b0; - txDataOut <= 8'h00; - rxDataRdyClr <= 1'b0; - respByte <= 8'h00; - respTout <= 1'b0; - sendCmdRdy <= 1'b0; - timeOutCnt <= 10'h000; - end - else - begin - txDataWen <= next_txDataWen; - txDataOut <= next_txDataOut; - rxDataRdyClr <= next_rxDataRdyClr; - respByte <= next_respByte; - respTout <= next_respTout; - sendCmdRdy <= next_sendCmdRdy; - timeOutCnt <= next_timeOutCnt; - end -end - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.asf b/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.asf deleted file mode 100644 index a5bdd745..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.asf +++ /dev/null @@ -1,141 +0,0 @@ -VERSION=1.15 -HEADER -FILE="spiCtrl.asf" -FID=4788d213 -LANGUAGE=VERILOG -ENTITY="spiCtrl" -FRAMES=ON -FREEOID=187 -"LIBRARIES=//////////////////////////////////////////////////////////////////////\n//// ////\n//// spiCtrl.v ////\n//// ////\n//// This file is part of the spiMaster opencores effort.\n//// ////\n//// ////\n//// Module Description: ////\n//// parameterized dual clock domain fifo. \n//// fifo depth is restricted to 2^ADDR_WIDTH\n//// No protection against over runs and under runs.\n//// \n//// ////\n//// To Do: ////\n//// \n//// ////\n//// Author(s): ////\n//// - Steve Fielding, sfielding@base2designs.com ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//// ////\n//// Copyright (C) 2008 Steve Fielding and OPENCORES.ORG ////\n//// ////\n//// This source file may be used and distributed without ////\n//// restriction provided that this copyright statement is not ////\n//// removed from the file and that any derivative work contains ////\n//// the original copyright notice and the associated disclaimer. ////\n//// ////\n//// This source file is free software; you can redistribute it ////\n//// and/or modify it under the terms of the GNU Lesser General ////\n//// Public License as published by the Free Software Foundation; ////\n//// either version 2.1 of the License, or (at your option) any ////\n//// later version. ////\n//// ////\n//// This source is distributed in the hope that it will be ////\n//// useful, but WITHOUT ANY WARRANTY; without even the implied ////\n//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////\n//// PURPOSE. See the GNU Lesser General Public License for more ////\n//// details. ////\n//// ////\n//// You should have received a copy of the GNU Lesser General ////\n//// Public License along with this source; if not, download it ////\n//// from ////\n//// ////\n//////////////////////////////////////////////////////////////////////\n//\n`include \"timescale.v\"\n`include \"spiMaster_defines.v\"\n" -END -BUNDLES -B T "Declarations" 0,0,255 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Conditions" 0,0,0 0 0 0 255,255,255 0 3125 0 0110 1 "Arial" 0 -B F "States" 0,0,0 0 0 1 0,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Actions" 0,0,0 0 0 1 255,255,255 0 3125 0 0000 1 "Arial" 0 -B T "Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 0 -B L "Transitions" 0,0,0 0 0 1 0,0,0 1 3527 1480 0000 1 "Arial" 0 -B F "Ports" 0,0,0 0 0 1 0,255,255 1 3527 1480 0000 1 "Arial" 0 -B L "Errors" 255,0,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -B T "State Labels" 0,0,0 0 0 0 255,255,255 0 3125 0 0000 1 "Arial" 4 -B F "Current State" 255,255,0 0 0 1 255,255,0 1 3527 1480 0000 1 "Arial" 0 -B T "Comments" 157,157,157 0 0 1 255,255,255 0 3527 1480 0000 1 "Arial" 0 -B L "Info" 0,255,0 0 3 1 255,255,255 1 3527 1480 0000 1 "Arial" 0 -END -INSTHEADER 1 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 5000,5000 10000,10000 -END -INSTHEADER 99 -PAGE 25400,25400 215900,279400 -UPPERLEFT 0,0 -GRID=OFF -GRIDSIZE 0,0 10000,10000 -END -OBJECTS -G 1 0 0 TEXT 0,0,0 0 0 0 255,255,255 0 3527 1480 0000 1 "Arial" 0 | 110650,276400 1 0 0 "Module: spiCtrl" -A 5 0 1 TEXT "Actions" | 30673,274317 1 0 0 "-- diagram ACTION" -F 6 0 512 72 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,232796 -L 7 6 0 TEXT "Labels" | 32486,211363 1 0 0 "spiCtrlSt" -L 8 9 0 TEXT "Labels" | 166432,268121 1 0 0 "spiTransCtrl" -I 9 0 2 Builtin InPort | 160432,268121 "" "" -L 10 11 0 TEXT "Labels" | 164257,264286 1 0 0 "spiTransSts" -I 11 0 2 Builtin OutPort | 158257,264286 "" "" -L 14 15 0 TEXT "Labels" | 166314,272204 1 0 0 "spiTransType[1:0]" -I 15 0 130 Builtin InPort | 160314,272204 "" "" -S 78 6 0 ELLIPSE "States" | 117132,210174 6500 6500 -L 77 78 0 TEXT "State Labels" | 117132,210174 1 0 0 "ST_S_CTRL\n/0/" -C 75 70 0 TEXT "Conditions" | 64251,212776 1 0 0 "rst == 1'b1" -I 74 0 2 Builtin InPort | 195973,268451 "" "" -L 73 74 0 TEXT "Labels" | 201973,268451 1 0 0 "rst" -I 72 0 3 Builtin InPort | 195700,272800 "" "" -L 71 72 0 TEXT "Labels" | 201700,272800 1 0 0 "clk" -W 70 6 0 69 78 BEZIER "Transitions" | 55625,209356 74109,218718 92075,219949 111473,213370 -I 69 6 0 Builtin Reset | 54670,208387 -I 92 0 2 Builtin InPort | 99404,245269 "" "" -L 91 92 0 TEXT "Labels" | 105404,245269 1 0 0 "SDInitRdy" -I 90 0 2 Builtin OutPort | 97222,240694 "" "" -L 89 90 0 TEXT "Labels" | 103222,240694 1 0 0 "SDInitReq" -L 95 96 0 TEXT "State Labels" | 61517,181659 1 0 0 "WT_S_CTRL_REQ\n/1/" -S 96 6 4096 ELLIPSE "States" | 61517,181659 6500 6500 -W 97 6 0 78 96 BEZIER "Transitions" | 111858,206376 102862,186278 81827,184985 67818,183250 -L 98 99 0 TEXT "State Labels" | 61244,155715 1 0 0 "J1" -S 99 6 8196 ELLIPSE 0,0,0 0 0 1 255,0,0 1 | 61335,155624 3871 3871 -W 100 6 0 96 99 BEZIER "Transitions" | 61562,175246 61630,170469 58461,163807 60148,158618 -C 101 100 0 TEXT "Conditions" | 62422,174791 1 0 0 "spiTransCtrl == `TRANS_START" -A 102 100 16 TEXT "Actions" | 58411,169566 1 0 0 "spiTransSts <= `TRANS_BUSY;" -H 103 99 0 RECT 0,0,0 0 0 1 255,255,255 0 | 28400,28400 212900,276400 -I 106 103 0 Builtin Entry | 96520,182880 -I 107 103 0 Builtin Exit | 144780,121920 -W 108 103 0 106 107 BEZIER "Transitions" | 100342,182880 105892,175161 136499,129639 142050,121920 -L 110 111 0 TEXT "State Labels" | 138174,125339 1 0 0 "DIR_ACC\n/3/" -S 111 6 16384 ELLIPSE "States" | 138174,125339 6500 6500 -W 113 6 0 99 111 BEZIER "Transitions" | 61166,151770 61234,146806 61130,137919 61640,134485\ - 62150,131051 64054,127243 73166,126223 82278,125203\ - 114404,125351 131676,125215 -C 115 113 0 TEXT "Conditions" | 67726,131051 1 0 0 "spiTransType == `DIRECT_ACCESS" -L 120 121 0 TEXT "Labels" | 46442,250017 1 0 0 "txDataWen" -I 121 0 2 Builtin OutPort | 40442,250017 "" "" -A 123 113 16 TEXT "Actions" | 94110,126699 1 0 0 "txDataWen <= 1'b1;\nspiCS_n <= 1'b0;" -A 125 111 4 TEXT "Actions" | 125118,137851 1 0 0 "txDataWen <= 1'b0;" -L 126 127 0 TEXT "State Labels" | 164014,125067 1 0 0 "WT_FIN1\n/2/" -S 127 6 12288 ELLIPSE "States" | 164014,125067 6500 6500 -W 128 6 0 111 127 BEZIER "Transitions" | 144619,124502 150739,124502 151363,124352 157533,124582 -W 136 6 0 127 96 BEZIER "Transitions" | 162717,131431 160337,140339 156330,157231 149122,163725\ - 141914,170219 117842,178379 106656,180181 95470,181983\ - 78345,181829 68009,181353 -C 137 136 0 TEXT "Conditions" | 156126,140571 1 0 0 "rxDataRdy == 1'b1" -A 138 136 16 TEXT "Actions" | 144158,151179 1 0 0 "rxDataRdyClr <= 1'b1;\nspiCS_n <= 1'b1;" -A 139 96 4 TEXT "Actions" | 42430,197963 1 0 0 "rxDataRdyClr <= 1'b0;\nspiTransSts <= `TRANS_NOT_BUSY;" -L 140 141 0 TEXT "State Labels" | 138990,98683 1 0 0 "INIT\n/4/" -S 141 6 20480 ELLIPSE "States" | 138990,98683 6500 6500 -W 142 6 0 99 141 BEZIER "Transitions" | 60786,151798 60378,142958 58886,126563 58818,120307\ - 58750,114051 59294,106707 60280,104225 61266,101743\ - 64666,99159 74118,98581 83570,98003 115288,98421\ - 132492,98557 -C 144 142 0 TEXT "Conditions" | 66910,103851 1 0 0 "spiTransType == `INIT_SD" -A 146 142 16 TEXT "Actions" | 93022,99499 1 0 0 "SDInitReq <= 1'b1;" -L 147 148 0 TEXT "State Labels" | 163742,99499 1 0 0 "WT_FIN2\n/5/" -S 148 6 24576 ELLIPSE "States" | 163742,99499 6500 6500 -W 149 6 0 141 148 BEZIER "Transitions" | 145474,99128 150302,99196 152415,99360 157243,99428 -A 150 141 4 TEXT "Actions" | 122126,110651 1 0 0 "SDInitReq <= 1'b0;" -W 151 6 0 148 96 BEZIER "Transitions" | 168589,103829 172805,107705 180470,114663 182272,121531\ - 184074,128399 182850,148119 177444,156007 172038,163895\ - 151638,175727 141812,179059 131986,182391 113082,183887\ - 103562,183887 94042,183887 77595,182762 68007,182014 -C 152 151 0 TEXT "Conditions" | 162382,115003 1 0 0 "SDInitRdy == 1'b1" -L 153 154 0 TEXT "State Labels" | 139806,74203 1 0 0 "RW\n/6/" -S 154 6 28672 ELLIPSE "States" | 139806,74203 6500 6500 -L 155 156 0 TEXT "State Labels" | 165374,73931 1 0 0 "WT_FIN3\n/7/" -S 156 6 32768 ELLIPSE "States" | 165374,73931 6500 6500 -W 161 6 0 99 154 BEZIER "Transitions" | 60982,151777 60302,133009 58070,97323 58546,87327\ - 59022,77331 62286,74883 71942,74271 81598,73659\ - 115628,74049 133308,74049 -W 162 6 0 99 154 BEZIER "Transitions" | 61169,151767 60217,127151 57526,79507 57832,66587\ - 58138,53667 62998,56357 73205,49463 83413,42570\ - 122689,61354 133487,72683 -W 163 6 0 154 156 BEZIER "Transitions" | 146246,75076 150598,74736 154569,75047 158921,74707 -C 165 161 0 TEXT "Conditions" | 65006,80459 1 0 0 "spiTransType == `RW_WRITE_SD_BLOCK" -C 166 162 0 TEXT "Conditions" | 61742,61486 1 0 0 "spiTransType == `RW_READ_SD_BLOCK" -A 167 161 16 TEXT "Actions" | 64462,75019 1 0 0 "readWriteSDBlockReq <= `WRITE_SD_BLOCK;" -A 168 162 16 TEXT "Actions" | 60862,54842 1 0 0 "readWriteSDBlockReq <= `READ_SD_BLOCK;" -A 169 154 4 TEXT "Actions" | 103358,87803 1 0 0 "readWriteSDBlockReq <= `NO_BLOCK_REQ;" -W 170 6 0 156 96 BEZIER "Transitions" | 171013,77161 178425,82737 192778,92291 196144,105313\ - 199510,118335 198150,159271 192336,170967 186522,182663\ - 164626,188511 153678,189531 142730,190551 120834,188783\ - 109886,187661 98938,186539 78902,183914 67954,182554 -C 171 170 0 TEXT "Conditions" | 168638,86715 1 0 0 "readWriteSDBlockRdy == 1'b1" -L 172 173 0 TEXT "Labels" | 46441,240515 1 0 0 "rxDataRdyClr" -I 173 0 2 Builtin OutPort | 40441,240515 "" "" -L 176 177 0 TEXT "Labels" | 133432,244833 1 0 0 "readWriteSDBlockReq[1:0]" -I 177 0 130 Builtin OutPort | 127432,244833 "" "" -L 178 179 0 TEXT "Labels" | 48477,245479 1 0 0 "rxDataRdy" -I 179 0 2 Builtin InPort | 42477,245479 "" "" -L 182 183 0 TEXT "Labels" | 135468,240330 1 0 0 "readWriteSDBlockRdy" -I 183 0 2 Builtin InPort | 129468,240330 "" "" -A 184 78 4 TEXT "Actions" | 131510,229116 1 0 0 "readWriteSDBlockReq <= `NO_BLOCK_REQ;\ntxDataWen <= 1'b0;\nSDInitReq <= 1'b0;\nrxDataRdyClr <= 1'b0;\nspiTransSts <= `TRANS_NOT_BUSY;\nspiCS_n <= 1'b1;" -L 185 186 0 TEXT "Labels" | 165711,256531 1 0 0 "spiCS_n" -I 186 0 2 Builtin OutPort | 159711,256531 "" "" -END diff --git a/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.v b/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.v deleted file mode 100644 index 0f84004a..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/spiCtrl.v +++ /dev/null @@ -1,224 +0,0 @@ - -////////////////////////////////////////////////////////////////////// -//// //// -//// spiCtrl.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2008 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module spiCtrl (clk, readWriteSDBlockRdy, readWriteSDBlockReq, rst, rxDataRdy, rxDataRdyClr, SDInitRdy, SDInitReq, spiCS_n, spiTransCtrl, spiTransSts, spiTransType, txDataWen); -input clk; -input readWriteSDBlockRdy; -input rst; -input rxDataRdy; -input SDInitRdy; -input spiTransCtrl; -input [1:0]spiTransType; -output [1:0]readWriteSDBlockReq; -output rxDataRdyClr; -output SDInitReq; -output spiCS_n; -output spiTransSts; -output txDataWen; - -wire clk; -wire readWriteSDBlockRdy; -reg [1:0]readWriteSDBlockReq, next_readWriteSDBlockReq; -wire rst; -wire rxDataRdy; -reg rxDataRdyClr, next_rxDataRdyClr; -wire SDInitRdy; -reg SDInitReq, next_SDInitReq; -reg spiCS_n, next_spiCS_n; -wire spiTransCtrl; -reg spiTransSts, next_spiTransSts; -wire [1:0]spiTransType; -reg txDataWen, next_txDataWen; - -// BINARY ENCODED state machine: spiCtrlSt -// State codes definitions: -`define ST_S_CTRL 3'b000 -`define WT_S_CTRL_REQ 3'b001 -`define WT_FIN1 3'b010 -`define DIR_ACC 3'b011 -`define INIT 3'b100 -`define WT_FIN2 3'b101 -`define RW 3'b110 -`define WT_FIN3 3'b111 - -reg [2:0]CurrState_spiCtrlSt, NextState_spiCtrlSt; - -// Diagram actions (continuous assignments allowed only: assign ...) -// diagram ACTION - - -// Machine: spiCtrlSt - -// NextState logic (combinatorial) -always @ (spiTransCtrl or rxDataRdy or spiTransType or SDInitRdy or readWriteSDBlockRdy or readWriteSDBlockReq or txDataWen or SDInitReq or rxDataRdyClr or spiTransSts or spiCS_n or CurrState_spiCtrlSt) -begin - NextState_spiCtrlSt <= CurrState_spiCtrlSt; - // Set default values for outputs and signals - next_readWriteSDBlockReq <= readWriteSDBlockReq; - next_txDataWen <= txDataWen; - next_SDInitReq <= SDInitReq; - next_rxDataRdyClr <= rxDataRdyClr; - next_spiTransSts <= spiTransSts; - next_spiCS_n <= spiCS_n; - case (CurrState_spiCtrlSt) // synopsys parallel_case full_case - `ST_S_CTRL: - begin - next_readWriteSDBlockReq <= `NO_BLOCK_REQ; - next_txDataWen <= 1'b0; - next_SDInitReq <= 1'b0; - next_rxDataRdyClr <= 1'b0; - next_spiTransSts <= `TRANS_NOT_BUSY; - next_spiCS_n <= 1'b1; - NextState_spiCtrlSt <= `WT_S_CTRL_REQ; - end - `WT_S_CTRL_REQ: - begin - next_rxDataRdyClr <= 1'b0; - next_spiTransSts <= `TRANS_NOT_BUSY; - if ((spiTransCtrl == `TRANS_START) && (spiTransType == `INIT_SD)) - begin - NextState_spiCtrlSt <= `INIT; - next_spiTransSts <= `TRANS_BUSY; - next_SDInitReq <= 1'b1; - end - else if ((spiTransCtrl == `TRANS_START) && (spiTransType == `RW_WRITE_SD_BLOCK)) - begin - NextState_spiCtrlSt <= `RW; - next_spiTransSts <= `TRANS_BUSY; - next_readWriteSDBlockReq <= `WRITE_SD_BLOCK; - end - else if ((spiTransCtrl == `TRANS_START) && (spiTransType == `RW_READ_SD_BLOCK)) - begin - NextState_spiCtrlSt <= `RW; - next_spiTransSts <= `TRANS_BUSY; - next_readWriteSDBlockReq <= `READ_SD_BLOCK; - end - else if ((spiTransCtrl == `TRANS_START) && (spiTransType == `DIRECT_ACCESS)) - begin - NextState_spiCtrlSt <= `DIR_ACC; - next_spiTransSts <= `TRANS_BUSY; - next_txDataWen <= 1'b1; - next_spiCS_n <= 1'b0; - end - end - `WT_FIN1: - begin - if (rxDataRdy == 1'b1) - begin - NextState_spiCtrlSt <= `WT_S_CTRL_REQ; - next_rxDataRdyClr <= 1'b1; - next_spiCS_n <= 1'b1; - end - end - `DIR_ACC: - begin - next_txDataWen <= 1'b0; - NextState_spiCtrlSt <= `WT_FIN1; - end - `INIT: - begin - next_SDInitReq <= 1'b0; - NextState_spiCtrlSt <= `WT_FIN2; - end - `WT_FIN2: - begin - if (SDInitRdy == 1'b1) - begin - NextState_spiCtrlSt <= `WT_S_CTRL_REQ; - end - end - `RW: - begin - next_readWriteSDBlockReq <= `NO_BLOCK_REQ; - NextState_spiCtrlSt <= `WT_FIN3; - end - `WT_FIN3: - begin - if (readWriteSDBlockRdy == 1'b1) - begin - NextState_spiCtrlSt <= `WT_S_CTRL_REQ; - end - end - endcase -end - -// Current State Logic (sequential) -always @ (posedge clk) -begin - if (rst == 1'b1) - CurrState_spiCtrlSt <= `ST_S_CTRL; - else - CurrState_spiCtrlSt <= NextState_spiCtrlSt; -end - -// Registered outputs logic -always @ (posedge clk) -begin - if (rst == 1'b1) - begin - readWriteSDBlockReq <= `NO_BLOCK_REQ; - txDataWen <= 1'b0; - SDInitReq <= 1'b0; - rxDataRdyClr <= 1'b0; - spiTransSts <= `TRANS_NOT_BUSY; - spiCS_n <= 1'b1; - end - else - begin - readWriteSDBlockReq <= next_readWriteSDBlockReq; - txDataWen <= next_txDataWen; - SDInitReq <= next_SDInitReq; - rxDataRdyClr <= next_rxDataRdyClr; - spiTransSts <= next_spiTransSts; - spiCS_n <= next_spiCS_n; - end -end - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/sd_interface/RTL/spiMaster.v b/usrp2/fpga/opencores/sd_interface/RTL/spiMaster.v deleted file mode 100644 index af844baa..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/spiMaster.v +++ /dev/null @@ -1,383 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// spiMaster.v //// -//// //// -//// This file is part of the spiMaster opencores effort. -//// //// -//// //// -//// Module Description: //// -//// parameterized dual clock domain fifo. -//// fifo depth is restricted to 2^ADDR_WIDTH -//// No protection against over runs and under runs. -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2008 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - -module spiMaster( - clk_i, - rst_i, - address_i, - data_i, - data_o, - strobe_i, - we_i, - ack_o, - - // SPI logic clock - spiSysClk, - - //SPI bus - spiClkOut, - spiDataIn, - spiDataOut, - spiCS_n -); - -//Wishbone bus -input clk_i; -input rst_i; -input [7:0] address_i; -input [7:0] data_i; -output [7:0] data_o; -input strobe_i; -input we_i; -output ack_o; - -// SPI logic clock -input spiSysClk; - -//SPI bus -output spiClkOut; -input spiDataIn; -output spiDataOut; -output spiCS_n; - -// local wires and regs -wire spiSysClk; -wire [7:0] spiClkDelayFromInitSD; -wire rstSyncToSpiClk; -wire [7:0] rxDataFromRWSPIWireData; -wire rxDataRdySetFromRWSPIWireData; -wire txDataFullFromSpiTxRxData; -wire txDataFullClrFromRWSPIWireData; -wire [7:0] txDataToRWSPIWireData; -wire rxDataRdyClrFromRWSDBlock; -wire rxDataRdyClrFromSendCmd; -wire [7:0] rxDataFromSpiTxRxData; -wire rxDataRdy; -wire [7:0] txDataFromRWSDBlock; -wire txDataWenFromRWSDBlock; -wire [7:0] txDataFromSendCmd; -wire txDataWenFromSendCmd; -wire [7:0] txDataFromInitSD; -wire txDataWenFromInitSD; -wire [7:0] dataFromCtrlStsReg; -wire [7:0] dataFromTxFifo; -wire [7:0] dataFromRxFifo; -wire [1:0] spiTransType; -wire [7:0] spiDirectAccessTxData; -wire [1:0] readWriteSDBlockReq; -wire [1:0] SDWriteError; -wire [1:0] SDReadError; -wire [1:0] SDInitError; -wire [7:0] cmdByteFromInitSD; -wire [7:0] dataByte1FromInitSD; -wire [7:0] dataByte2FromInitSD; -wire [7:0] dataByte3FromInitSD; -wire [7:0] dataByte4FromInitSD; -wire [7:0] checkSumByteFromInitSD; -wire [7:0] sendCmdRespByte; -wire [7:0] cmdByteFromRWSDBlock; -wire [7:0] dataByte1FromRWSDBlock; -wire [7:0] dataByte2FromRWSDBlock; -wire [7:0] dataByte3FromRWSDBlock; -wire [7:0] dataByte4FromRWSDBlock; -wire [7:0] checkSumByteFromRWSDBlock; -wire [7:0] txFifoDataOut; -wire [7:0] rxFifoDataIn; -wire [31:0] SDAddr; -wire [7:0] spiClkDelayFromCtrlStsReg; -wire spiCS_nFromInitSD; -wire spiCS_nFromRWSDBlock; -wire spiCS_nFromSpiCtrl; - - -assign spiCS_n = spiCS_nFromInitSD & spiCS_nFromRWSDBlock & spiCS_nFromSpiCtrl; - -// ----------------------------------- -// Instance of Module: wishBoneBI -// ----------------------------------- -wishBoneBI u_wishBoneBI( - .ack_o( ack_o ), - .address( address_i ), - .clk( clk_i ), - .ctrlStsRegSel( ctrlStsRegSel ), - .dataFromCtrlStsReg( dataFromCtrlStsReg ), - .dataFromRxFifo( dataFromRxFifo ), - .dataFromTxFifo( dataFromTxFifo ), - .dataIn( data_i ), - .dataOut( data_o ), - .rst( rst_i ), - .rxFifoSel( rxFifoSel ), - .strobe_i( strobe_i ), - .txFifoSel( txFifoSel ), - .writeEn( we_i ) - ); - -// ----------------------------------- -// Instance of Module: ctrlStsRegBI -// ----------------------------------- -ctrlStsRegBI u_ctrlStsRegBI( - .busClk( clk_i ), - .spiSysClk( spiSysClk ), - .rstSyncToBusClkOut( rstSyncToBusClk ), - .rstSyncToSpiClkOut( rstSyncToSpiClk ), - .rstFromWire( rst_i ), - .address( address_i ), - .strobe_i( strobe_i ), - .dataIn( data_i ), - .dataOut( dataFromCtrlStsReg ), - .ctrlStsRegSel( ctrlStsRegSel ), - .spiTransType( spiTransType ), - .spiTransCtrl( spiTransCtrl ), - .spiTransStatus( spiTransSts ), - .spiDirectAccessTxData(spiDirectAccessTxData), - .spiDirectAccessRxData(rxDataFromSpiTxRxData), - .writeEn( we_i ), - .SDWriteError( SDWriteError ), - .SDReadError( SDReadError ), - .SDInitError( SDInitError ), - .SDAddr( SDAddr ), - .spiClkDelay( spiClkDelayFromCtrlStsReg) - ); - -// ----------------------------------- -// Instance of Module: spiCtrl -// ----------------------------------- -spiCtrl u_spiCtrl( - .clk( spiSysClk ), - .rst( rstSyncToSpiClk ), - .SDInitReq( SDInitReq ), - .SDInitRdy( SDInitRdy ), - .readWriteSDBlockReq( readWriteSDBlockReq ), - .readWriteSDBlockRdy( readWriteSDBlockRdy ), - .rxDataRdy( rxDataRdyFromSpiTxRxData), - .rxDataRdyClr( rxDataRdyClrFromSpiCtrl), - .spiTransType( spiTransType ), - .spiTransCtrl( spiTransCtrl ), - .spiTransSts( spiTransSts ), - .txDataWen( txDataWenFromSpiCtrl ), - .spiCS_n( spiCS_nFromSpiCtrl ) - ); - - -// ----------------------------------- -// Instance of Module: initSD -// ----------------------------------- -initSD u_initSD( - .clk( spiSysClk ), - .rst( rstSyncToSpiClk ), - .SDInitReq( SDInitReq ), - .SDInitRdy( SDInitRdy ), - .initError( SDInitError ), - .sendCmdReq( sendCmdReqFromInitSD ), - .sendCmdRdy( sendCmdRdy ), - .cmdByte( cmdByteFromInitSD ), - .dataByte1( dataByte1FromInitSD ), - .dataByte2( dataByte2FromInitSD ), - .dataByte3( dataByte3FromInitSD ), - .dataByte4( dataByte4FromInitSD ), - .checkSumByte( checkSumByteFromInitSD), - .respByte( sendCmdRespByte ), - .respTout( sendCmdRespTout ), - .spiCS_n( spiCS_nFromInitSD ), - .spiClkDelayOut( spiClkDelayFromInitSD ), - .spiClkDelayIn( spiClkDelayFromCtrlStsReg), - .txDataFull( txDataFullFromSpiTxRxData), - .txDataEmpty( txDataEmptyFromRWSPIWireData), - .txDataOut( txDataFromInitSD ), - .txDataWen( txDataWenFromInitSD ), - .rxDataRdy( rxDataRdyFromSpiTxRxData), - .rxDataRdyClr( rxDataRdyClrFromInitSD) - ); - -// ----------------------------------- -// Instance of Module: readWriteSDBlock -// ----------------------------------- -readWriteSDBlock u_readWriteSDBlock( - .clk( spiSysClk ), - .rst( rstSyncToSpiClk ), - .readWriteSDBlockReq( readWriteSDBlockReq ), - .readWriteSDBlockRdy( readWriteSDBlockRdy ), - .cmdByte( cmdByteFromRWSDBlock ), - .dataByte1( dataByte1FromRWSDBlock), - .dataByte2( dataByte2FromRWSDBlock), - .dataByte3( dataByte3FromRWSDBlock), - .dataByte4( dataByte4FromRWSDBlock), - .checkSumByte( checkSumByteFromRWSDBlock), - .readError( SDReadError ), - .respByte( sendCmdRespByte ), - .respTout( sendCmdRespTout ), - .rxDataIn( rxDataFromSpiTxRxData ), - .rxDataRdy( rxDataRdyFromSpiTxRxData), - .rxDataRdyClr( rxDataRdyClrFromRWSDBlock), - .sendCmdRdy( sendCmdRdy ), - .sendCmdReq( sendCmdReqFromRWSDBlock), - .spiCS_n( spiCS_nFromRWSDBlock ), - .txDataFull( txDataFullFromSpiTxRxData), - .txDataEmpty( txDataEmptyFromRWSPIWireData), - .txDataOut( txDataFromRWSDBlock ), - .txDataWen( txDataWenFromRWSDBlock), - .txFifoData( txFifoDataOut ), - .txFifoRen( txFifoRE ), - .rxFifoData( rxFifoDataIn ), - .rxFifoWen( rRxFifoWE ), - .writeError( SDWriteError ), - .blockAddr( SDAddr ) - - ); - -// ----------------------------------- -// Instance of Module: sendCmd -// ----------------------------------- -sendCmd u_sendCmd( - .clk( spiSysClk ), - .rst( rstSyncToSpiClk ), - .sendCmdReq1( sendCmdReqFromInitSD ), - .sendCmdReq2( sendCmdReqFromRWSDBlock), - .sendCmdRdy( sendCmdRdy ), - .cmdByte_1( cmdByteFromInitSD ), - .cmdByte_2( cmdByteFromRWSDBlock ), - .dataByte1_1( dataByte1FromInitSD ), - .dataByte1_2( dataByte1FromRWSDBlock), - .dataByte2_1( dataByte2FromInitSD ), - .dataByte2_2( dataByte2FromRWSDBlock), - .dataByte3_1( dataByte3FromInitSD ), - .dataByte3_2( dataByte3FromRWSDBlock), - .dataByte4_1( dataByte4FromInitSD ), - .dataByte4_2( dataByte4FromRWSDBlock), - .checkSumByte_1( checkSumByteFromInitSD), - .checkSumByte_2( checkSumByteFromRWSDBlock), - .respByte( sendCmdRespByte ), - .respTout( sendCmdRespTout ), - .rxDataIn( rxDataFromSpiTxRxData ), - .rxDataRdy( rxDataRdyFromSpiTxRxData), - .rxDataRdyClr( rxDataRdyClrFromSendCmd), - .txDataFull( txDataFullFromSpiTxRxData), - .txDataEmpty( txDataEmptyFromRWSPIWireData), - .txDataOut( txDataFromSendCmd ), - .txDataWen( txDataWenFromSendCmd ) - ); - -// ----------------------------------- -// Instance of Module: spiTxRxData -// ----------------------------------- -spiTxRxData u_spiTxRxData( - .clk( spiSysClk ), - .rst( rstSyncToSpiClk ), - .rx1DataRdyClr( rxDataRdyClrFromRWSDBlock), - .rx2DataRdyClr( rxDataRdyClrFromSendCmd), - .rx3DataRdyClr( rxDataRdyClrFromInitSD), - .rx4DataRdyClr( rxDataRdyClrFromSpiCtrl), - .rxDataIn( rxDataFromRWSPIWireData), - .rxDataOut( rxDataFromSpiTxRxData ), - .rxDataRdy( rxDataRdyFromSpiTxRxData), - .rxDataRdySet( rxDataRdySetFromRWSPIWireData), - .tx1DataIn( txDataFromRWSDBlock ), - .tx1DataWEn( txDataWenFromRWSDBlock), - .tx2DataIn( txDataFromSendCmd ), - .tx2DataWEn( txDataWenFromSendCmd ), - .tx3DataIn( txDataFromInitSD ), - .tx3DataWEn( txDataWenFromInitSD ), - .tx4DataIn( spiDirectAccessTxData ), - .tx4DataWEn( txDataWenFromSpiCtrl ), - .txDataFull( txDataFullFromSpiTxRxData), - .txDataFullClr( txDataFullClrFromRWSPIWireData), - .txDataOut( txDataToRWSPIWireData ) - ); - -// ----------------------------------- -// Instance of Module: readWriteSPIWireData -// ----------------------------------- -readWriteSPIWireData u_readWriteSPIWireData( - .clk( spiSysClk ), - .clkDelay( spiClkDelayFromInitSD ), - .rst( rstSyncToSpiClk ), - .rxDataOut( rxDataFromRWSPIWireData), - .rxDataRdySet( rxDataRdySetFromRWSPIWireData), - .spiClkOut( spiClkOut ), - .spiDataIn( spiDataIn ), - .spiDataOut( spiDataOut ), - .txDataFull( txDataFullFromSpiTxRxData), - .txDataFullClr( txDataFullClrFromRWSPIWireData), - .txDataIn( txDataToRWSPIWireData ), - .txDataEmpty( txDataEmptyFromRWSPIWireData) - ); - -TxFifo #(`TX_FIFO_DEPTH, `TX_FIFO_ADDR_WIDTH) u_txFifo ( - .spiSysClk(spiSysClk), - .busClk(clk_i), - .rstSyncToBusClk(rstSyncToBusClk), - .rstSyncToSpiClk(rstSyncToSpiClk), - .fifoREn(txFifoRE), - .fifoEmpty(hostTxFifoEmpty), - .busAddress(address_i[2:0]), - .busWriteEn(we_i), - .busStrobe_i(strobe_i), - .busFifoSelect(txFifoSel), - .busDataIn(data_i), - .busDataOut(dataFromTxFifo), - .fifoDataOut(txFifoDataOut) ); - - -RxFifo #(`RX_FIFO_DEPTH, `RX_FIFO_ADDR_WIDTH) u_rxFifo( - .spiSysClk(spiSysClk), - .busClk(clk_i), - .rstSyncToBusClk(rstSyncToBusClk), - .rstSyncToSpiClk(rstSyncToSpiClk), - .fifoWEn(rRxFifoWE), - .fifoFull(hostRxFifoFull), - .busAddress(address_i[2:0]), - .busWriteEn(we_i), - .busStrobe_i(strobe_i), - .busFifoSelect(rxFifoSel), - .busDataIn(data_i), - .busDataOut(dataFromRxFifo), - .fifoDataIn(rxFifoDataIn) ); - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/RTL/spiMaster_defines.v b/usrp2/fpga/opencores/sd_interface/RTL/spiMaster_defines.v deleted file mode 100644 index 1e219f67..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/spiMaster_defines.v +++ /dev/null @@ -1,125 +0,0 @@ -// ------------------------ spiMaster_defines.v ---------------------- -`define SPI_MASTER_VERSION_NUM 8'h00 -`define SPI_SYS_CLK_48MHZ -//`define SPI_SYS_CLK_30MHZ - -//memoryMap -`define CTRL_STS_REG_BASE 8'h00 -`define RX_FIFO_BASE 8'h10 -`define TX_FIFO_BASE 8'h20 -`define ADDRESS_DECODE_MASK 8'hf0 -`define SPI_MASTER_VERSION_REG 8'h00 -`define SPI_MASTER_CONTROL_REG 8'h01 -`define TRANS_TYPE_REG 8'h02 -`define TRANS_CTRL_REG 8'h03 -`define TRANS_STS_REG 8'h04 -`define TRANS_ERROR_REG 8'h05 -`define DIRECT_ACCESS_DATA_REG 8'h06 -`define SD_ADDR_7_0_REG 8'h07 -`define SD_ADDR_15_8_REG 8'h08 -`define SD_ADDR_23_16_REG 8'h09 -`define SD_ADDR_31_24_REG 8'h0a -`define SPI_CLK_DEL_REG 8'h0b - - -//FifoAddresses -`define FIFO_DATA_REG 3'b000 -`define FIFO_STATUS_REG 3'b001 -`define FIFO_DATA_COUNT_MSB 3'b010 -`define FIFO_DATA_COUNT_LSB 3'b011 -`define FIFO_CONTROL_REG 3'b100 - - -`ifdef SIM_COMPILE -`define SLOW_SPI_CLK 8'h2 -`define FAST_SPI_CLK 8'h00 -`define TWO_MS 10'h001 -`define TWO_FIFTY_MS 12'h001 -`define ONE_HUNDRED_MS 12'h00c -`else //not SIM_COMPILE - -`ifdef SPI_SYS_CLK_48MHZ - -// --------------- spiSysClk = 48MHz -// if you change the clock frequency you will need to change these constants - -// SLOW_SPI_CLK controls the SPI clock at start up. -// should be aiming for 400KHz -// SLOW_SPI_CLK = (spiSysClk / (400KHz * 2)) - 1 -`define SLOW_SPI_CLK 8'h3b -// controls the SPI clock after init is complete. -// should be aiming for 24MHz ? -// controls the SPI clock after init is complete. -// should be aiming for 24MHz ? -// if spiSysClk >= 48MHz -// FAST_SPI_CLK = (spiSysClk / (24MHz * 2)) - 1 -// else FAST_SPI_CLK = 0 -`define FAST_SPI_CLK 8'h00 -// TWO_MS = ((2mS * spiSysClk) / 256) - 1 -`define TWO_MS 10'h177 -// TWO_FIFTY_MS = ((250mS * spiSysClk) / 65536) - 1 -`define TWO_FIFTY_MS 12'h0b6 -// ONE_HUNDRED_MS = ((100mS * spiSysClk) / 65536) - 1 -`define ONE_HUNDRED_MS 12'h048 - -`else //not SPI_SYS_CLK_48MHZ - -`ifdef SPI_SYS_CLK_30MHZ -// --------------- spiSysClk = 30MHz -`define SLOW_SPI_CLK 8'h24 -`define FAST_SPI_CLK 8'h00 -`define TWO_MS 10'h0e9 -`define TWO_FIFTY_MS 12'h071 -`define ONE_HUNDRED_MS 12'h02c - -`endif //SPI_SYS_CLK_30MHZ -`endif //SPI_SYS_CLK_48MHZ -`endif //SIM_COMPILE - - - -`ifdef SIM_COMPILE -`define SD_INIT_START_SEQ_LEN 8'h03 -`define MAX_8_BIT 8'h08 -`else -`define SD_INIT_START_SEQ_LEN 8'ha0 -`define MAX_8_BIT 8'hff -`endif - - -`define WR_RESP_TOUT 12'hf00 - -`define NO_BLOCK_REQ 2'b00 -`define WRITE_SD_BLOCK 2'b01 -`define READ_SD_BLOCK 2'b10 - -`define READ_NO_ERROR 2'b00 -`define READ_CMD_ERROR 2'b01 -`define READ_TOKEN_ERROR 2'b10 - -`define WRITE_NO_ERROR 2'b00 -`define WRITE_CMD_ERROR 2'b01 -`define WRITE_DATA_ERROR 2'b10 -`define WRITE_BUSY_ERROR 2'b11 - - -`define TRANS_NOT_BUSY 1'b0 -`define TRANS_BUSY 1'b1 - -`define TRANS_START 1'b1 -`define TRANS_STOP 1'b0 - -`define DIRECT_ACCESS 2'b00 -`define INIT_SD 2'b01 -`define RW_READ_SD_BLOCK 2'b10 -`define RW_WRITE_SD_BLOCK 2'b11 - -`define INIT_NO_ERROR 2'b00 -`define INIT_CMD0_ERROR 2'b01 -`define INIT_CMD1_ERROR 2'b10 - -`define TX_FIFO_DEPTH 512 -`define TX_FIFO_ADDR_WIDTH 9 -`define RX_FIFO_DEPTH 512 -`define RX_FIFO_ADDR_WIDTH 9 - diff --git a/usrp2/fpga/opencores/sd_interface/RTL/spiTxRxData.v b/usrp2/fpga/opencores/sd_interface/RTL/spiTxRxData.v deleted file mode 100644 index 2b5870c2..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/spiTxRxData.v +++ /dev/null @@ -1,108 +0,0 @@ -`include "timescale.v" - -module spiTxRxData ( - clk, - rst, - - tx1DataIn, - tx2DataIn, - tx3DataIn, - tx4DataIn, - tx1DataWEn, - tx2DataWEn, - tx3DataWEn, - tx4DataWEn, - - txDataOut, - txDataFull, - txDataFullClr, - - rx1DataRdyClr, - rx2DataRdyClr, - rx3DataRdyClr, - rx4DataRdyClr, - - rxDataIn, - rxDataOut, - rxDataRdy, - rxDataRdySet -); - -input clk; -input rst; - -input [7:0] tx1DataIn; -input [7:0] tx2DataIn; -input [7:0] tx3DataIn; -input [7:0] tx4DataIn; -input tx1DataWEn; -input tx2DataWEn; -input tx3DataWEn; -input tx4DataWEn; - -output [7:0] txDataOut; -reg [7:0] txDataOut; -output txDataFull; -reg txDataFull; -input txDataFullClr; - -input rx1DataRdyClr; -input rx2DataRdyClr; -input rx3DataRdyClr; -input rx4DataRdyClr; - -input [7:0] rxDataIn; -output [7:0] rxDataOut; -reg [7:0] rxDataOut; -output rxDataRdy; -reg rxDataRdy; -input rxDataRdySet; - - -// --- Transmit control -always @(posedge clk) begin - if (rst == 1'b1) begin - txDataOut <= 8'h00; - txDataFull <= 1'b0; - end - else begin - if (tx1DataWEn == 1'b1) begin - txDataOut <= tx1DataIn; - txDataFull <= 1'b1; - end - else if (tx2DataWEn == 1'b1) begin - txDataOut <= tx2DataIn; - txDataFull <= 1'b1; - end - else if (tx3DataWEn == 1'b1) begin - txDataOut <= tx3DataIn; - txDataFull <= 1'b1; - end - else if (tx4DataWEn == 1'b1) begin - txDataOut <= tx4DataIn; - txDataFull <= 1'b1; - end - if (txDataFullClr == 1'b1) - txDataFull <= 1'b0; - end -end - -// --- Receive control -always @(posedge clk) begin - if (rst == 1'b1) begin - rxDataOut <= 8'h00; - rxDataRdy <= 1'b0; - end - else begin - if (rx1DataRdyClr == 1'b1 || rx2DataRdyClr == 1'b1 || rx3DataRdyClr == 1'b1 || rx4DataRdyClr == 1'b1) begin - rxDataRdy <= 1'b0; - end - if (rxDataRdySet == 1'b1) begin - rxDataRdy <= 1'b1; - rxDataOut <= rxDataIn; - end - end -end - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/RTL/timescale.v b/usrp2/fpga/opencores/sd_interface/RTL/timescale.v deleted file mode 100644 index 571f4a06..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/timescale.v +++ /dev/null @@ -1,5 +0,0 @@ -////////////////////////////////////////////////////////////////////// -// timescale.v -////////////////////////////////////////////////////////////////////// -`timescale 1ns / 1ps - diff --git a/usrp2/fpga/opencores/sd_interface/RTL/wishBoneBI.v b/usrp2/fpga/opencores/sd_interface/RTL/wishBoneBI.v deleted file mode 100644 index 72daaa48..00000000 --- a/usrp2/fpga/opencores/sd_interface/RTL/wishBoneBI.v +++ /dev/null @@ -1,145 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// wishBoneBI.v //// -//// //// -//// This file is part of the usbhostslave opencores effort. -//// //// -//// //// -//// Module Description: //// -//// -//// //// -//// To Do: //// -//// -//// //// -//// Author(s): //// -//// - Steve Fielding, sfielding@base2designs.com //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG //// -//// //// -//// 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 //// -//// //// -////////////////////////////////////////////////////////////////////// -// -`include "timescale.v" -`include "spiMaster_defines.v" - - -module wishBoneBI ( - clk, rst, - address, dataIn, dataOut, writeEn, - strobe_i, - ack_o, - ctrlStsRegSel, - rxFifoSel, txFifoSel, - dataFromCtrlStsReg, - dataFromRxFifo, - dataFromTxFifo - ); -input clk; -input rst; -input [7:0] address; -input [7:0] dataIn; -output [7:0] dataOut; -input strobe_i; -output ack_o; -input writeEn; -output ctrlStsRegSel; -output rxFifoSel; -output txFifoSel; -input [7:0] dataFromCtrlStsReg; -input [7:0] dataFromRxFifo; -input [7:0] dataFromTxFifo; - - -wire clk; -wire rst; -wire [7:0] address; -wire [7:0] dataIn; -reg [7:0] dataOut; -wire writeEn; -wire strobe_i; -reg ack_o; -reg ctrlStsRegSel; -reg rxFifoSel; -reg txFifoSel; -wire [7:0] dataFromCtrlStsReg; -wire [7:0] dataFromRxFifo; -wire [7:0] dataFromTxFifo; - -//internal wires and regs -reg ack_delayed; -reg ack_immediate; - -//address decode and data mux -always @(address or - dataFromCtrlStsReg or - dataFromRxFifo or - dataFromTxFifo) -begin - ctrlStsRegSel <= 1'b0; - rxFifoSel <= 1'b0; - txFifoSel <= 1'b0; - case (address & `ADDRESS_DECODE_MASK) - `CTRL_STS_REG_BASE : begin - ctrlStsRegSel <= 1'b1; - dataOut <= dataFromCtrlStsReg; - end - `RX_FIFO_BASE : begin - rxFifoSel <= 1'b1; - dataOut <= dataFromRxFifo; - end - `TX_FIFO_BASE : begin - txFifoSel <= 1'b1; - dataOut <= dataFromTxFifo; - end - default: - dataOut <= 8'h00; - endcase -end - -//delayed ack -always @(posedge clk) begin - ack_delayed <= strobe_i; -end - -//immediate ack -always @(strobe_i) begin - ack_immediate <= strobe_i; -end - -//select between immediate and delayed ack -always @(writeEn or address or ack_delayed or ack_immediate) begin - if (writeEn == 1'b0 && - (address == `RX_FIFO_BASE + `FIFO_DATA_REG || - address == `TX_FIFO_BASE + `FIFO_DATA_REG) ) - begin - ack_o <= ack_delayed; - end - else - begin - ack_o <= ack_immediate; - end -end - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/bench/testCase0.v b/usrp2/fpga/opencores/sd_interface/bench/testCase0.v deleted file mode 100644 index 09e4bc0f..00000000 --- a/usrp2/fpga/opencores/sd_interface/bench/testCase0.v +++ /dev/null @@ -1,126 +0,0 @@ -// ---------------------------------- testcase0.v ---------------------------- -`include "timescale.v" -`include "spiMaster_defines.v" - -module testCase0(); - -reg ack; -reg [7:0] data; -reg [15:0] dataWord; -reg [7:0] dataRead; -reg [7:0] dataWrite; -integer i; -integer j; - -initial -begin - $write("\n\n"); - //testHarness.reset; - #1000; - - //write to block addr reg, and read back - //testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , 8'h5a); - $write("Testing register read/write\n"); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SPI_CLK_DEL_REG , 8'h10); - testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SPI_CLK_DEL_REG , 8'h10); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_7_0_REG , 8'h78); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_15_8_REG , 8'h56); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_23_16_REG , 8'h34); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_31_24_REG , 8'h12); - testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_7_0_REG , 8'h78); - testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_15_8_REG , 8'h56); - testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_23_16_REG , 8'h34); - testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_31_24_REG , 8'h12); - - //write one byte to spi bus, and wait for complete - $write("Testing SPI bus direct access\n"); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `DIRECT_ACCESS}); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`DIRECT_ACCESS_DATA_REG , 8'h5f); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START}); - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - while (dataRead[0] == `TRANS_BUSY) - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - - //write one byte to spi bus, and wait for complete - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`DIRECT_ACCESS_DATA_REG , 8'haa); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START}); - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - while (dataRead[0] == `TRANS_BUSY) - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - - //init test - $write("Testing SD init\n"); - testHarness.u_sdModel.setRespByte(8'h01); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `INIT_SD}); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START}); - #60000; - testHarness.u_sdModel.setRespByte(8'h00); - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - while (dataRead[0] == `TRANS_BUSY) - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead); - if (dataRead[1:0] == `INIT_NO_ERROR) - $write("SD init test passed\n"); - else - $write("---- ERROR: SD init test failed. Error code = 0x%01x\n", dataRead[1:0] ); - - //block write - $write("Testing block write\n"); - dataWrite = 8'h00; - for (i=0; i<=511; i=i+1) begin - testHarness.u_wb_master_model.wb_write(1, `TX_FIFO_BASE+`FIFO_DATA_REG , dataWrite); - dataWrite = dataWrite + 1'b1; - end - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `RW_WRITE_SD_BLOCK}); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START}); - #100000; - testHarness.u_sdModel.setRespByte(8'h05); //write response - #8000000; - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - if (dataRead[0] == `TRANS_BUSY) begin - $write("---- ERROR: SD block write failed to complete\n"); - end - else begin - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead); - if (dataRead[5:4] == `WRITE_NO_ERROR) - $write("SD block write passed\n"); - else - $write("---- ERROR: SD block write failed. Error code = 0x%01x\n", dataRead[5:4] ); - end - - //block read - $write("Testing block read\n"); - testHarness.u_sdModel.setRespByte(8'h00); //cmd response - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `RW_READ_SD_BLOCK}); - testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START}); - #100000; - testHarness.u_sdModel.setRespByte(8'hfe); //read response - #8000000; - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead); - if (dataRead[0] == `TRANS_BUSY) begin - $write("---- ERROR: SD block read failed to complete\n"); - end - else begin - testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead); - if (dataRead[3:2] == `READ_NO_ERROR) begin - $write("SD block read passed\n"); - for (j=0; j<=15; j=j+1) begin - $write("Data 0x%0x = ",j*32); - for (i=0; i<=31; i=i+1) begin - testHarness.u_wb_master_model.wb_read(1, `RX_FIFO_BASE+`FIFO_DATA_REG , dataRead); - $write("0x%0x ",dataRead); - end - $write("\n"); - end - end - else - $write("---- ERROR: SD block read failed. Error code = 0x%01x\n", dataRead[3:2] ); - end - - $write("Finished all tests\n"); - $stop; - -end - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/bench/testHarness.v b/usrp2/fpga/opencores/sd_interface/bench/testHarness.v deleted file mode 100644 index ce126d67..00000000 --- a/usrp2/fpga/opencores/sd_interface/bench/testHarness.v +++ /dev/null @@ -1,105 +0,0 @@ -`include "timescale.v" - -module testHarness( ); - - -// ----------------------------------- -// Local Wires -// ----------------------------------- -reg clk; -reg rst; -reg spiSysClk; -wire [7:0] adr; -wire [7:0] masterDout; -wire [7:0] masterDin; -wire stb; -wire we; -wire ack; -wire spiClk; -wire spiMasterDataIn; -wire spiMasterDataOut; -wire spiCS_n; - - -initial begin -$dumpfile("wave.vcd"); -$dumpvars(0, u_spiMaster); -end - -spiMaster u_spiMaster ( - //Wishbone bus - .clk_i(clk), - .rst_i(rst), - .address_i(adr), - .data_i(masterDout), - .data_o(masterDin), - .strobe_i(stb), - .we_i(we), - .ack_o(ack), - - // SPI logic clock - .spiSysClk(spiSysClk), - - //SPI bus - .spiClkOut(spiClk), - .spiDataIn(spiMasterDataIn), - .spiDataOut(spiMasterDataOut), - .spiCS_n(spiCS_n) -); - -wb_master_model #(.dwidth(8), .awidth(8)) u_wb_master_model ( - .clk(clk), - .rst(rst), - .adr(adr), - .din(masterDin), - .dout(masterDout), - .cyc(), - .stb(stb), - .we(we), - .sel(), - .ack(ack), - .err(1'b0), - .rty(1'b0) -); - -sdModel u_sdModel ( - .spiClk(spiClk), - .spiDataIn(spiMasterDataOut), - .spiDataOut(spiMasterDataIn), - .spiCS_n(spiCS_n) -); -//--------------- reset --------------- -initial begin - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); - rst <= 1'b1; - @(posedge clk); - rst <= 1'b0; - @(posedge clk); -end - -// ****************************** Clock section ****************************** -`define CLK_50MHZ_HALF_PERIOD 10 -`define CLK_25MHZ_HALF_PERIOD 20 - -always begin - #`CLK_25MHZ_HALF_PERIOD clk <= 1'b0; - #`CLK_25MHZ_HALF_PERIOD clk <= 1'b1; -end - -always begin - #`CLK_50MHZ_HALF_PERIOD spiSysClk <= 1'b0; - #`CLK_50MHZ_HALF_PERIOD spiSysClk <= 1'b1; -end - - - - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/doc/spiMaster_FSM.pdf b/usrp2/fpga/opencores/sd_interface/doc/spiMaster_FSM.pdf deleted file mode 100644 index 6a1ffc041f3ec5fb4aa24ca56056ba3907d58460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3871409 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

  • ec?6kFUoY&HrlY{{K(= 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

    1sbaA0FGvH~j&5T$s~lb%v5yV!JP%t^mK1 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%0Dw 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 z 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 eFlm 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%0Du)dOmFEiua(NiiV7 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

    eGEtSGqE?A%#M?= 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%0D=8x_=pR7BhSIZx6Ijfl4OLB}J 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�U(0nL^(pLW0$eRP`g}h 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

    1^NR8PS`p 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

    XU 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 RXcW$#>}&?Umsru@(%eFhIy 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 MAvV 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 diff --git a/usrp2/fpga/opencores/sd_interface/doc/spiMaster_Specification.pdf b/usrp2/fpga/opencores/sd_interface/doc/spiMaster_Specification.pdf deleted file mode 100644 index b317e84c7d76d1d79ba4b3e8b82e71ae4449997d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45134 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 diff --git a/usrp2/fpga/opencores/sd_interface/doc/src/spiMaster_Specification.sxw b/usrp2/fpga/opencores/sd_interface/doc/src/spiMaster_Specification.sxw deleted file mode 100644 index 25895f0cbc80c68f9ee4babc2aac19e4cc2fe9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42063 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 t*6)}2v#Y(oHUGSoVn^8Df=c}l_V?{{ZV%z}5f& diff --git a/usrp2/fpga/opencores/sd_interface/model/sdModel.v b/usrp2/fpga/opencores/sd_interface/model/sdModel.v deleted file mode 100644 index 1e202bac..00000000 --- a/usrp2/fpga/opencores/sd_interface/model/sdModel.v +++ /dev/null @@ -1,99 +0,0 @@ -`include "timescale.v" - -module sdModel( - spiClk, - spiDataIn, - spiDataOut, - spiCS_n -); -input spiClk; -input spiDataIn; -output spiDataOut; -reg spiDataOut; -input spiCS_n; - -//local wires and regs -reg [7:0] rxByte; -reg [7:0] respByte; -reg [1:0] smSt; -reg [7:0] cnt; - -`define START 2'b00 -`define WAIT_FF 2'b01 -`define WAIT_FF_FIN 2'b10 - -initial -begin - smSt = `START; -end - - -// ------------------------------ txRxByte -------------------------- -task txRxByte; -input [7:0] txData; -output [7:0] rxData; - -integer i; -begin - spiDataOut <= txData[7]; - //@(negedge spiCS_n); - for (i=0;i<=7;i=i+1) begin - @(posedge spiClk); - rxData[0] <= spiDataIn; - rxData = rxData << 1; - @(negedge spiClk); - spiDataOut <= txData[6]; - txData = txData << 1; - end -end -endtask - - -//response state machine -always begin - case (smSt) - `START: begin - txRxByte(8'hff, rxByte); - if (rxByte == 8'hff) begin - smSt <= `WAIT_FF; - cnt <= 8'h00; - end - end - `WAIT_FF: begin - txRxByte(8'hff, rxByte); - if (rxByte == 8'hff) begin - cnt <= cnt + 1'b1; - if (cnt == 8'h04) begin - txRxByte(respByte, rxByte); - smSt <= `WAIT_FF_FIN; - end - end - else begin - smSt <= `START; - cnt <= 8'h00; - end - end - `WAIT_FF_FIN: begin - txRxByte(8'hff, rxByte); - if (rxByte == 8'h04) begin - cnt <= cnt + 1'b1; - if (cnt == 8'hff) begin - txRxByte(respByte, rxByte); - smSt <= `START; - end - end - else - smSt <= `START; - end - endcase -end - -// setRespByte -task setRespByte; - input [7:0] dataByte; - begin - respByte = dataByte; - end -endtask - -endmodule diff --git a/usrp2/fpga/opencores/sd_interface/model/wb_master_model.v b/usrp2/fpga/opencores/sd_interface/model/wb_master_model.v deleted file mode 100644 index 3f8b7ee6..00000000 --- a/usrp2/fpga/opencores/sd_interface/model/wb_master_model.v +++ /dev/null @@ -1,176 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// wb_master_model.v //// -//// //// -//// This file is part of the SPI IP core project //// -//// http://www.opencores.org/projects/spi/ //// -//// //// -//// Author(s): //// -//// - Simon Srot (simons@opencores.org) //// -//// //// -//// Based on: //// -//// - i2c/bench/verilog/wb_master_model.v //// -//// Copyright (C) 2001 Richard Herveille //// -//// //// -//// All additional information is avaliable in the Readme.txt //// -//// file. //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2002 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// - -`include "timescale.v" - -module wb_master_model(clk, rst, adr, din, dout, cyc, stb, we, sel, ack, err, rty); - - parameter dwidth = 32; - parameter awidth = 32; - - input clk, rst; - output [awidth -1:0] adr; - input [dwidth -1:0] din; - output [dwidth -1:0] dout; - output cyc, stb; - output we; - output [dwidth/8 -1:0] sel; - input ack, err, rty; - - // Internal signals - reg [awidth -1:0] adr; - reg [dwidth -1:0] dout; - reg cyc, stb; - reg we; - reg [dwidth/8 -1:0] sel; - - reg [dwidth -1:0] q; - - // Memory Logic - initial - begin - adr = {awidth{1'bx}}; - dout = {dwidth{1'bx}}; - cyc = 1'b0; - stb = 1'bx; - we = 1'hx; - sel = {dwidth/8{1'bx}}; - #1; - end - - // Wishbone write cycle - task wb_write; - input delay; - integer delay; - - input [awidth -1:0] a; - input [dwidth -1:0] d; - - begin - - // wait initial delay - repeat(delay) @(posedge clk); - - // assert wishbone signal - #1; - adr = a; - dout = d; - cyc = 1'b1; - stb = 1'b1; - we = 1'b1; - sel = {dwidth/8{1'b1}}; - @(posedge clk); - - // wait for acknowledge from slave - while(~ack) @(posedge clk); - - // negate wishbone signals - #1; - cyc = 1'b0; - stb = 1'bx; - adr = {awidth{1'bx}}; - dout = {dwidth{1'bx}}; - we = 1'hx; - sel = {dwidth/8{1'bx}}; - - end - endtask - - // Wishbone read cycle - task wb_read; - input delay; - integer delay; - - input [awidth -1:0] a; - output [dwidth -1:0] d; - - begin - - // wait initial delay - repeat(delay) @(posedge clk); - - // assert wishbone signals - #1; - adr = a; - dout = {dwidth{1'bx}}; - cyc = 1'b1; - stb = 1'b1; - we = 1'b0; - sel = {dwidth/8{1'b1}}; - @(posedge clk); - - // wait for acknowledge from slave - while(~ack) @(posedge clk); - - // negate wishbone signals - #1; - cyc = 1'b0; - stb = 1'bx; - adr = {awidth{1'bx}}; - dout = {dwidth{1'bx}}; - we = 1'hx; - sel = {dwidth/8{1'bx}}; - d = din; - - end - endtask - - // Wishbone compare cycle (read data from location and compare with expected data) - task wb_cmp; - input delay; - integer delay; - - input [awidth -1:0] a; - input [dwidth -1:0] d_exp; - - begin - wb_read (delay, a, q); - - if (d_exp !== q) - $display("Data compare error. Received %h, expected %h at time %t", q, d_exp, $time); - end - endtask - -endmodule - diff --git a/usrp2/fpga/opencores/sd_interface/sim/build_icarus.bat b/usrp2/fpga/opencores/sd_interface/sim/build_icarus.bat deleted file mode 100644 index d3d60d70..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/build_icarus.bat +++ /dev/null @@ -1,4 +0,0 @@ -iverilog -o testHarness -cfilelist.icarus - -pause - diff --git a/usrp2/fpga/opencores/sd_interface/sim/compile.do b/usrp2/fpga/opencores/sd_interface/sim/compile.do deleted file mode 100644 index 0388e1db..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/compile.do +++ /dev/null @@ -1,22 +0,0 @@ - -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/dpMem_dc.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/fifoRTL.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/RxFifoBI.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/TxFifoBI.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/RxFifo.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/TxFifo.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/initSD.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/readWriteSPIWireData.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/readWriteSDBlock.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/sendCmd.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/spiCtrl.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/spiTxRxData.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/spiMaster.v -vlog +define+SIM_COMPILE +incdir+../rtl ../model/wb_master_model.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/wishBoneBI.v -vlog +define+SIM_COMPILE +incdir+../rtl ../rtl/ctrlStsRegBI.v -vlog +define+SIM_COMPILE +incdir+../rtl ../model/sdModel.v -vlog +define+SIM_COMPILE +incdir+../rtl ../bench/testHarness.v -vlog +define+SIM_COMPILE +incdir+../rtl ../bench/testCase0.v - - diff --git a/usrp2/fpga/opencores/sd_interface/sim/filelist.icarus b/usrp2/fpga/opencores/sd_interface/sim/filelist.icarus deleted file mode 100644 index 48a2ad03..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/filelist.icarus +++ /dev/null @@ -1,21 +0,0 @@ -../rtl/spiMasterTop.v -../rtl/dpMem_dc.v -../rtl/fifoRTL.v -../rtl/RxFifoBI.v -../rtl/TxFifoBI.v -../rtl/RxFifo.v -../rtl/TxFifo.v -../rtl/initSD.v -../rtl/readWriteSPIWireData.v -../rtl/readWriteSDBlock.v -../rtl/sendCmd.v -../rtl/spiCtrl.v -../rtl/spiTxRxData.v -../rtl/wishBoneBI.v -../rtl/ctrlStsRegBI.v -../model/wb_master_model.v -../model/sdModel.v -../bench/testHarness.v -../bench/testCase0.v -+incdir+../rtl - diff --git a/usrp2/fpga/opencores/sd_interface/sim/run.do b/usrp2/fpga/opencores/sd_interface/sim/run.do deleted file mode 100644 index c0ff8bac..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/run.do +++ /dev/null @@ -1,5 +0,0 @@ -vsim testCase0 testHarness -do wave.do -run -all - - diff --git a/usrp2/fpga/opencores/sd_interface/sim/run_icarus.bat b/usrp2/fpga/opencores/sd_interface/sim/run_icarus.bat deleted file mode 100644 index 9d6aae00..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/run_icarus.bat +++ /dev/null @@ -1,2 +0,0 @@ -vvp testHarness - diff --git a/usrp2/fpga/opencores/sd_interface/sim/testHarness b/usrp2/fpga/opencores/sd_interface/sim/testHarness deleted file mode 100644 index 08c4dad3..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/testHarness +++ /dev/null @@ -1,5458 +0,0 @@ -:vpi_time_precision - 12; -:vpi_module "system"; -S_005FC090 .scope module, "testCase0" "testCase0"; - .timescale -9; -V_$006AD848 .var "dataRead", 7, 0; -V_$006AFD38 .var "dataWrite", 7, 0; -V_$006AFE40 .var/i "i", 31, 0; -S_006338F0 .scope module, "testHarness" "testHarness"; - .timescale -9; -V_$006E2EF0 .net "ack", 0, 0, V_$006DE038[0]; -V_$006E2F60 .net "adr", 7, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3], V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -V_$006DF4B8 .var "clk", 0, 0; -V_$006DF480 .net "masterDin", 7, 0, V_$006DE8E8[0], V_$006DE8E8[1], V_$006DE8E8[2], V_$006DE8E8[3], V_$006DE8E8[4], V_$006DE8E8[5], V_$006DE8E8[6], V_$006DE8E8[7]; -V_$006E31C0 .net "masterDout", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006E0BD0 .var "rst", 0, 0; -V_$006E0D70 .net "spiCS_n", 0, 0, L_006E3660; -V_$006DE750 .net "spiClk", 0, 0, V_$006CAA28[0]; -V_$006DE7C0 .net "spiMasterDataIn", 0, 0, V_$00644A08[0]; -V_$006E3498 .net "spiMasterDataOut", 0, 0, V_$006CAAD8[0]; -V_$006E3508 .var "spiSysClk", 0, 0; -V_$006E3578 .net "stb", 0, 0, V_$006607B0[0]; -V_$006E35B0 .net "we", 0, 0, V_$006A5C98[0]; -S_006C1500 .scope module, "u_spiMasterTop" "spiMasterTop", S_006338F0; - .timescale -9; -L_006E3540 .functor AND, V_$006DADF8[0], V_$006D6C70[0], C<1>, C<1>; -L_006E3660 .functor AND, L_006E3540, V_$006DBBB8[0], C<1>, C<1>; -V_$006DDD50 .net "SDAddr", 31, 0, V_$006DBED8[0], V_$006DBED8[1], V_$006DBED8[2], V_$006DBED8[3], V_$006DBED8[4], V_$006DBED8[5], V_$006DBED8[6], V_$006DBED8[7], V_$006DBED8[8], V_$006DBED8[9], V_$006DBED8[10], V_$006DBED8[11], V_$006DBED8[12], V_$006DBED8[13], V_$006DBED8[14], V_$006DBED8[15], V_$006DBED8[16], V_$006DBED8[17], V_$006DBED8[18], V_$006DBED8[19], V_$006DBED8[20], V_$006DBED8[21], V_$006DBED8[22], V_$006DBED8[23], V_$006DBED8[24], V_$006DBED8[25], V_$006DBED8[26], V_$006DBED8[27], V_$006DBED8[28], V_$006DBED8[29], V_$006DBED8[30], V_$006DBED8[31]; -V_$006DF148 .net "SDInitError", 1, 0, V_$006D8260[0], V_$006D8260[1]; -V_$006DF1E0 .net "SDReadError", 1, 0, V_$006D6488[0], V_$006D6488[1]; -V_$006DF278 .net "SDWriteError", 1, 0, V_$006D75E8[0], V_$006D75E8[1]; -V_$006DF310 .net "ack_o", 0, 0, V_$006DE038[0]; -V_$006DF378 .net "address_i", 7, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3], V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -V_$006DF4F0 .net "checkSumByteFromInitSD", 7, 0, V_$006D7F80[0], V_$006D7F80[1], V_$006D7F80[2], V_$006D7F80[3], V_$006D7F80[4], V_$006D7F80[5], V_$006D7F80[6], V_$006D7F80[7]; -V_$006DF608 .net "checkSumByteFromRWSDBlock", 7, 0, V_$006D2790[0], V_$006D2790[1], V_$006D2790[2], V_$006D2790[3], V_$006D2790[4], V_$006D2790[5], V_$006D2790[6], V_$006D2790[7]; -V_$006DF7E8 .net "clk_i", 0, 0, V_$006DF4B8[0]; -V_$006DF850 .net "cmdByteFromInitSD", 7, 0, V_$006D7B08[0], V_$006D7B08[1], V_$006D7B08[2], V_$006D7B08[3], V_$006D7B08[4], V_$006D7B08[5], V_$006D7B08[6], V_$006D7B08[7]; -V_$006DFA08 .net "cmdByteFromRWSDBlock", 7, 0, V_$006D2970[0], V_$006D2970[1], V_$006D2970[2], V_$006D2970[3], V_$006D2970[4], V_$006D2970[5], V_$006D2970[6], V_$006D2970[7]; -V_$006DFBF0 .net "dataByte1FromInitSD", 7, 0, V_$006D7C70[0], V_$006D7C70[1], V_$006D7C70[2], V_$006D7C70[3], V_$006D7C70[4], V_$006D7C70[5], V_$006D7C70[6], V_$006D7C70[7]; -V_$006DFDD0 .net "dataByte1FromRWSDBlock", 7, 0, V_$006D2AB0[0], V_$006D2AB0[1], V_$006D2AB0[2], V_$006D2AB0[3], V_$006D2AB0[4], V_$006D2AB0[5], V_$006D2AB0[6], V_$006D2AB0[7]; -V_$006DFA40 .net "dataByte2FromInitSD", 7, 0, V_$006D7DD0[0], V_$006D7DD0[1], V_$006D7DD0[2], V_$006D7DD0[3], V_$006D7DD0[4], V_$006D7DD0[5], V_$006D7DD0[6], V_$006D7DD0[7]; -V_$006D8068 .net "dataByte2FromRWSDBlock", 7, 0, V_$006D2C18[0], V_$006D2C18[1], V_$006D2C18[2], V_$006D2C18[3], V_$006D2C18[4], V_$006D2C18[5], V_$006D2C18[6], V_$006D2C18[7]; -V_$006D2D38 .net "dataByte3FromInitSD", 7, 0, V_$006D80C8[0], V_$006D80C8[1], V_$006D80C8[2], V_$006D80C8[3], V_$006D80C8[4], V_$006D80C8[5], V_$006D80C8[6], V_$006D80C8[7]; -V_$006D81E8 .net "dataByte3FromRWSDBlock", 7, 0, V_$006D2D78[0], V_$006D2D78[1], V_$006D2D78[2], V_$006D2D78[3], V_$006D2D78[4], V_$006D2D78[5], V_$006D2D78[6], V_$006D2D78[7]; -V_$006D30F8 .net "dataByte4FromInitSD", 7, 0, V_$006D8228[0], V_$006D8228[1], V_$006D8228[2], V_$006D8228[3], V_$006D8228[4], V_$006D8228[5], V_$006D8228[6], V_$006D8228[7]; -V_$006D8380 .net "dataByte4FromRWSDBlock", 7, 0, V_$006D3138[0], V_$006D3138[1], V_$006D3138[2], V_$006D3138[3], V_$006D3138[4], V_$006D3138[5], V_$006D3138[6], V_$006D3138[7]; -V_$006E0468 .net "dataFromCtrlStsReg", 7, 0, V_$006DC658[0], V_$006DC658[1], V_$006DC658[2], V_$006DC658[3], V_$006DC658[4], V_$006DC658[5], V_$006DC658[6], V_$006DC658[7]; -V_$006E0590 .net "dataFromRxFifo", 7, 0, V_$006A5290[0], V_$006A5290[1], V_$006A5290[2], V_$006A5290[3], V_$006A5290[4], V_$006A5290[5], V_$006A5290[6], V_$006A5290[7]; -V_$006E07B0 .net "dataFromTxFifo", 7, 0, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>; -V_$006E09D0 .net "data_i", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006DE808 .net "data_o", 7, 0, V_$006DE8E8[0], V_$006DE8E8[1], V_$006DE8E8[2], V_$006DE8E8[3], V_$006DE8E8[4], V_$006DE8E8[5], V_$006DE8E8[6], V_$006DE8E8[7]; -V_$006DE868 .net "readWriteSDBlockReq", 1, 0, V_$006DBA28[0], V_$006DBA28[1]; -V_$006DE8A0 .net "rstSyncToSpiClk", 0, 0, V_$006DCA00[0]; -V_$006E0D38 .net "rst_i", 0, 0, V_$006E0BD0[0]; -V_$006E0DA8 .net "rxDataFromRWSPIWireData", 7, 0, V_$006C90B8[0], V_$006C90B8[1], V_$006C90B8[2], V_$006C90B8[3], V_$006C90B8[4], V_$006C90B8[5], V_$006C90B8[6], V_$006C90B8[7]; -V_$006CB650 .net "rxDataFromSpiTxRxData", 7, 0, V_$006CB750[0], V_$006CB750[1], V_$006CB750[2], V_$006CB750[3], V_$006CB750[4], V_$006CB750[5], V_$006CB750[6], V_$006CB750[7]; -V_$006DD040 .net "rxDataRdyClrFromRWSDBlock", 0, 0, V_$006D6920[0]; -V_$006DD008 .net "rxDataRdyClrFromSendCmd", 0, 0, V_$006D1308[0]; -V_$006DCD68 .net "rxDataRdySetFromRWSPIWireData", 0, 0, V_$006CA688[0]; -V_$006DCD30 .net "rxFifoDataIn", 7, 0, V_$006D6958[0], V_$006D6958[1], V_$006D6958[2], V_$006D6958[3], V_$006D6958[4], V_$006D6958[5], V_$006D6958[6], V_$006D6958[7]; -V_$006D6B58 .net "sendCmdRespByte", 7, 0, V_$006D0B40[0], V_$006D0B40[1], V_$006D0B40[2], V_$006D0B40[3], V_$006D0B40[4], V_$006D0B40[5], V_$006D0B40[6], V_$006D0B40[7]; -V_$006DCCC0 .net "spiCS_n", 0, 0, L_006E3660; -V_$006DCC88 .net "spiCS_nFromInitSD", 0, 0, V_$006DADF8[0]; -V_$006DCC50 .net "spiCS_nFromRWSDBlock", 0, 0, V_$006D6C70[0]; -V_$006E12C8 .net "spiCS_nFromSpiCtrl", 0, 0, V_$006DBBB8[0]; -V_$006E1300 .net "spiClkDelayFromCtrlStsReg", 7, 0, V_$006DCA38[0], V_$006DCA38[1], V_$006DCA38[2], V_$006DCA38[3], V_$006DCA38[4], V_$006DCA38[5], V_$006DCA38[6], V_$006DCA38[7]; -V_$006DCB70 .net "spiClkDelayFromInitSD", 7, 0, V_$006DB188[0], V_$006DB188[1], V_$006DB188[2], V_$006DB188[3], V_$006DB188[4], V_$006DB188[5], V_$006DB188[6], V_$006DB188[7]; -V_$006DB2A8 .net "spiClkOut", 0, 0, V_$006CAA28[0]; -V_$006E1450 .net "spiDataIn", 0, 0, V_$00644A08[0]; -V_$006E14B8 .net "spiDataOut", 0, 0, V_$006CAAD8[0]; -V_$006E1520 .net "spiDirectAccessTxData", 7, 0, V_$006DD220[0], V_$006DD220[1], V_$006DD220[2], V_$006DD220[3], V_$006DD220[4], V_$006DD220[5], V_$006DD220[6], V_$006DD220[7]; -V_$006DD340 .net "spiSysClk", 0, 0, V_$006E3508[0]; -V_$006E1700 .net "spiTransType", 1, 0, V_$006DDBA0[0], V_$006DDBA0[1]; -V_$006DDBD8 .net "strobe_i", 0, 0, V_$006607B0[0]; -V_$006E1798 .net "txDataFromInitSD", 7, 0, V_$006D71D0[0], V_$006D71D0[1], V_$006D71D0[2], V_$006D71D0[3], V_$006D71D0[4], V_$006D71D0[5], V_$006D71D0[6], V_$006D71D0[7]; -V_$006DB478 .net "txDataFromRWSDBlock", 7, 0, V_$006D7208[0], V_$006D7208[1], V_$006D7208[2], V_$006D7208[3], V_$006D7208[4], V_$006D7208[5], V_$006D7208[6], V_$006D7208[7]; -V_$006D7268 .net "txDataFromSendCmd", 7, 0, V_$006D1678[0], V_$006D1678[1], V_$006D1678[2], V_$006D1678[3], V_$006D1678[4], V_$006D1678[5], V_$006D1678[6], V_$006D1678[7]; -V_$006E1AE8 .net "txDataFullClrFromRWSPIWireData", 0, 0, V_$006CAC78[0]; -V_$006E1B50 .net "txDataFullFromSpiTxRxData", 0, 0, V_$006CC7A8[0]; -V_$006E1B88 .net "txDataToRWSPIWireData", 7, 0, V_$006CC858[0], V_$006CC858[1], V_$006CC858[2], V_$006CC858[3], V_$006CC858[4], V_$006CC858[5], V_$006CC858[6], V_$006CC858[7]; -V_$006CC978 .net "txDataWenFromInitSD", 0, 0, V_$006DB4B8[0]; -V_$006E1CD8 .net "txDataWenFromRWSDBlock", 0, 0, V_$006D72A8[0]; -V_$006E1D40 .net "txDataWenFromSendCmd", 0, 0, V_$006D17B8[0]; -V_$006E1DA8 .net "txFifoDataOut", 7, 0, V_$006C7CF0[0], V_$006C7CF0[1], V_$006C7CF0[2], V_$006C7CF0[3], V_$006C7CF0[4], V_$006C7CF0[5], V_$006C7CF0[6], V_$006C7CF0[7]; -V_$006E1FC8 .net "we_i", 0, 0, V_$006A5C98[0]; -V_$006E2040 .net "ctrlStsRegSel", 0, 0, V_$006DE140[0]; -V_$006E2078 .net "rxFifoSel", 0, 0, V_$006DE9B8[0]; -V_$006E20E8 .net "txFifoSel", 0, 0, V_$006DEA20[0]; -V_$006E2158 .net "spiTransCtrl", 0, 0, V_$006DDF80[0]; -V_$006E2190 .net "spiTransSts", 0, 0, V_$006DBC48[0]; -V_$006E21C8 .net "rstSyncToBusClk", 0, 0, V_$006DC940[0]; -V_$006E2310 .net "readWriteSDBlockRdy", 0, 0, V_$006D6E38[0]; -V_$006E2348 .net "rxDataRdyFromSpiTxRxData", 0, 0, V_$006CB9B8[0]; -V_$006E2498 .net "rxDataRdyClrFromSpiCtrl", 0, 0, V_$006DAC70[0]; -V_$006E24D0 .net "SDInitRdy", 0, 0, V_$006D7E68[0]; -V_$006E2628 .net "SDInitReq", 0, 0, V_$006DB678[0]; -V_$006E2660 .net "txDataWenFromSpiCtrl", 0, 0, V_$006DBDB0[0]; -V_$006E27C0 .net "sendCmdRespTout", 0, 0, V_$006D1010[0]; -V_$006E2830 .net "rxDataRdyClrFromInitSD", 0, 0, V_$006DACA8[0]; -V_$006E2998 .net "sendCmdRdy", 0, 0, V_$006D1360[0]; -V_$006E2A08 .net "sendCmdReqFromInitSD", 0, 0, V_$006DAD18[0]; -V_$006E2B78 .net "txDataEmptyFromRWSPIWireData", 0, 0, V_$006CAB30[0]; -V_$006DB320 .net "rRxFifoWE", 0, 0, V_$006D6B90[0]; -V_$006D6BC8 .net "sendCmdReqFromRWSDBlock", 0, 0, V_$006D6C38[0]; -V_$006E2CF0 .net "txFifoRE", 0, 0, V_$006D7488[0]; -V_$006D75B0 .net "hostTxFifoEmpty", 0, 0, V_$006C7FF8[0]; -V_$006E2EB8 .net "hostRxFifoFull", 0, 0, V_$006C4260[0]; -S_006DD638 .scope module, "u_wishBoneBI" "wishBoneBI", S_006C1500; - .timescale -9; -V_$006DDE60 .var "ack_delayed", 0, 0; -V_$006DDEE0 .var "ack_immediate", 0, 0; -V_$006DE038 .var "ack_o", 0, 0; -V_$006DE0A8 .net "address", 7, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3], V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -V_$006DE108 .net "clk", 0, 0, V_$006DF4B8[0]; -V_$006DE140 .var "ctrlStsRegSel", 0, 0; -V_$006DE178 .net "dataFromCtrlStsReg", 7, 0, V_$006DC658[0], V_$006DC658[1], V_$006DC658[2], V_$006DC658[3], V_$006DC658[4], V_$006DC658[5], V_$006DC658[6], V_$006DC658[7]; -V_$006DE280 .net "dataFromRxFifo", 7, 0, V_$006A5290[0], V_$006A5290[1], V_$006A5290[2], V_$006A5290[3], V_$006A5290[4], V_$006A5290[5], V_$006A5290[6], V_$006A5290[7]; -V_$006DE3A0 .net "dataFromTxFifo", 7, 0, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>; -V_$006DE5B8 .net "dataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006DE8E8 .var "dataOut", 7, 0; -V_$006DE980 .net "rst", 0, 0, V_$006E0BD0[0]; -V_$006DE9B8 .var "rxFifoSel", 0, 0; -V_$006DE920 .net "strobe_i", 0, 0, V_$006607B0[0]; -V_$006DEA20 .var "txFifoSel", 0, 0; -V_$006DEA88 .net "writeEn", 0, 0, V_$006A5C98[0]; -E_006DDDA0/0 .event edge, V_$006DDEE0[0], V_$006DDE60[0], V_$0068AE60[0], V_$0068AE60[1]; -E_006DDDA0/1 .event edge, V_$0068AE60[2], V_$0068AE60[3], V_$0068AE60[4], V_$0068AE60[5]; -E_006DDDA0/2 .event edge, V_$0068AE60[6], V_$0068AE60[7], V_$006A5C98[0]; -E_006DDDA0 .event/or E_006DDDA0/0, E_006DDDA0/1, E_006DDDA0/2; -E_006DDDF8 .event edge, V_$006607B0[0]; -E_006DDE28/0 .event edge, C<0>, C<0>, C<0>, C<0>; -E_006DDE28/1 .event edge, C<0>, C<0>, C<0>, C<0>; -E_006DDE28/2 .event edge, V_$006A5290[0], V_$006A5290[1], V_$006A5290[2], V_$006A5290[3]; -E_006DDE28/3 .event edge, V_$006A5290[4], V_$006A5290[5], V_$006A5290[6], V_$006A5290[7]; -E_006DDE28/4 .event edge, V_$006DC658[0], V_$006DC658[1], V_$006DC658[2], V_$006DC658[3]; -E_006DDE28/5 .event edge, V_$006DC658[4], V_$006DC658[5], V_$006DC658[6], V_$006DC658[7]; -E_006DDE28/6 .event edge, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3]; -E_006DDE28/7 .event edge, V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -E_006DDE28 .event/or E_006DDE28/0, E_006DDE28/1, E_006DDE28/2, E_006DDE28/3, E_006DDE28/4, E_006DDE28/5, E_006DDE28/6, E_006DDE28/7; -S_006DBE08 .scope module, "u_ctrlStsRegBI" "ctrlStsRegBI", S_006C1500; - .timescale -9; -V_$006DBED8 .var "SDAddr", 31, 0; -V_$006DC3C8 .net "SDInitError", 1, 0, V_$006D8260[0], V_$006D8260[1]; -V_$006DC440 .var "SDInitErrorSTB", 1, 0; -V_$006DC478 .net "SDReadError", 1, 0, V_$006D6488[0], V_$006D6488[1]; -V_$006DC4D0 .var "SDReadErrorSTB", 1, 0; -V_$006DCE08 .net "SDWriteError", 1, 0, V_$006D75E8[0], V_$006D75E8[1]; -V_$006DCE80 .var "SDWriteErrorSTB", 1, 0; -V_$006DCEF8 .net "address", 7, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3], V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -V_$006DC578 .net "busClk", 0, 0, V_$006DF4B8[0]; -V_$006DC5B0 .net "ctrlStsRegSel", 0, 0, V_$006DE140[0]; -V_$006DC5E8 .net "dataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006DC658 .var "dataOut", 7, 0; -V_$006DC6B8 .var "rstFromBus", 0, 0; -V_$006DC620 .net "rstFromWire", 0, 0, V_$006E0BD0[0]; -V_$006DC710 .var "rstShift", 5, 0; -V_$006DC940 .var "rstSyncToBusClkOut", 0, 0; -V_$006DC978 .var "rstSyncToSpiClkFirst", 0, 0; -V_$006DCA00 .var "rstSyncToSpiClkOut", 0, 0; -V_$006DCA38 .var "spiClkDelay", 7, 0; -V_$006DCBF0 .net "spiDirectAccessRxData", 7, 0, V_$006CB750[0], V_$006CB750[1], V_$006CB750[2], V_$006CB750[3], V_$006CB750[4], V_$006CB750[5], V_$006CB750[6], V_$006CB750[7]; -V_$006DD078 .var "spiDirectAccessRxDataSTB", 7, 0; -V_$006DD220 .var "spiDirectAccessTxData", 7, 0; -V_$006DD380 .var "spiDirectAccessTxDataSTB", 7, 0; -V_$006DDF48 .net "spiSysClk", 0, 0, V_$006E3508[0]; -V_$006DDF80 .var "spiTransCtrl", 0, 0; -V_$006DD6A8 .var "spiTransCtrlSTB", 0, 0; -V_$006DD6E0 .var "spiTransCtrlShift", 5, 0; -V_$006DD918 .net "spiTransStatus", 0, 0, V_$006DBC48[0]; -V_$006DD970 .var "spiTransStatusReg1", 0, 0; -V_$006DD9E0 .var "spiTransStatusReg2", 0, 0; -V_$006DDAA8 .var "spiTransStatusSTB", 0, 0; -V_$006DDBA0 .var "spiTransType", 1, 0; -V_$006DDC18 .var "spiTransTypeSTB", 1, 0; -V_$006DDCE0 .net "strobe_i", 0, 0, V_$006607B0[0]; -V_$006DDD18 .net "writeEn", 0, 0, V_$006A5C98[0]; -E_006DBE78/0 .event edge, V_$006DC710[0], V_$006DC710[1], V_$006DC710[2], V_$006DC710[3]; -E_006DBE78/1 .event edge, V_$006DC710[4], V_$006DC710[5]; -E_006DBE78 .event/or E_006DBE78/0, E_006DBE78/1; -E_006DBEB8/0 .event edge, V_$006DD078[0], V_$006DD078[1], V_$006DD078[2], V_$006DD078[3]; -E_006DBEB8/1 .event edge, V_$006DD078[4], V_$006DD078[5], V_$006DD078[6], V_$006DD078[7]; -E_006DBEB8/2 .event edge, V_$006DDAA8[0], V_$006DD6A8[0], V_$006DDC18[0], V_$006DDC18[1]; -E_006DBEB8/3 .event edge, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2], V_$0068AE60[3]; -E_006DBEB8/4 .event edge, V_$0068AE60[4], V_$0068AE60[5], V_$0068AE60[6], V_$0068AE60[7]; -E_006DBEB8 .event/or E_006DBEB8/0, E_006DBEB8/1, E_006DBEB8/2, E_006DBEB8/3, E_006DBEB8/4; -S_006DA008 .scope module, "u_spiCtrl" "spiCtrl", S_006C1500; - .timescale -9; -V_$006DB530 .var "CurrState_spiCtrlSt", 2, 0; -V_$006DB5C8 .var "NextState_spiCtrlSt", 2, 0; -V_$006DB620 .net "SDInitRdy", 0, 0, V_$006D7E68[0]; -V_$006DB678 .var "SDInitReq", 0, 0; -V_$006DB6D0 .net "clk", 0, 0, V_$006E3508[0]; -V_$006DB728 .var "next_SDInitReq", 0, 0; -V_$006DB760 .var "next_readWriteSDBlockReq", 1, 0; -V_$006DB7C0 .var "next_rxDataRdyClr", 0, 0; -V_$006DB810 .var "next_spiCS_n", 0, 0; -V_$006DB890 .var "next_spiTransSts", 0, 0; -V_$006DB918 .var "next_txDataWen", 0, 0; -V_$006DB9D0 .net "readWriteSDBlockRdy", 0, 0, V_$006D6E38[0]; -V_$006DBA28 .var "readWriteSDBlockReq", 1, 0; -V_$006DB950 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006DBB18 .net "rxDataRdy", 0, 0, V_$006CB9B8[0]; -V_$006DAC70 .var "rxDataRdyClr", 0, 0; -V_$006DBBB8 .var "spiCS_n", 0, 0; -V_$006DBC10 .net "spiTransCtrl", 0, 0, V_$006DDF80[0]; -V_$006DBC48 .var "spiTransSts", 0, 0; -V_$006DBCC8 .net "spiTransType", 1, 0, V_$006DDBA0[0], V_$006DDBA0[1]; -V_$006DBDB0 .var "txDataWen", 0, 0; -E_006DB510/0 .event edge, V_$006DB530[0], V_$006DB530[1], V_$006DB530[2], V_$006DBBB8[0]; -E_006DB510/1 .event edge, V_$006DBC48[0], V_$006DAC70[0], V_$006DB678[0], V_$006DBDB0[0]; -E_006DB510/2 .event edge, V_$006DBA28[0], V_$006DBA28[1], V_$006D6E38[0], V_$006D7E68[0]; -E_006DB510/3 .event edge, V_$006CB9B8[0], V_$006DDF80[0]; -E_006DB510 .event/or E_006DB510/0, E_006DB510/1, E_006DB510/2, E_006DB510/3; -S_006D5E10 .scope module, "u_initSD" "initSD", S_006C1500; - .timescale -9; -V_$006D7810 .var "CurrState_initSDSt", 3, 0; -V_$006D78C0 .var "NextState_initSDSt", 3, 0; -V_$006D7E68 .var "SDInitRdy", 0, 0; -V_$006D7F00 .net "SDInitReq", 0, 0, V_$006DB678[0]; -V_$006D7F80 .var "checkSumByte", 7, 0; -V_$006D7AD0 .net "clk", 0, 0, V_$006E3508[0]; -V_$006D7B08 .var "cmdByte", 7, 0; -V_$006D7C70 .var "dataByte1", 7, 0; -V_$006D7DD0 .var "dataByte2", 7, 0; -V_$006D80C8 .var "dataByte3", 7, 0; -V_$006D8228 .var "dataByte4", 7, 0; -V_$006D83C0 .var "delCnt1", 9, 0; -V_$006D83F8 .var "delCnt2", 7, 0; -V_$006D8260 .var "initError", 1, 0; -V_$006D8E20 .var "loopCnt", 7, 0; -V_$006D8560 .var "next_SDInitRdy", 0, 0; -V_$006D85E0 .var "next_checkSumByte", 7, 0; -V_$006D8900 .var "next_cmdByte", 7, 0; -V_$006D8B78 .var "next_dataByte1", 7, 0; -V_$006D90D8 .var "next_dataByte2", 7, 0; -V_$006D93B8 .var "next_dataByte3", 7, 0; -V_$006D9F90 .var "next_dataByte4", 7, 0; -V_$006D9750 .var "next_delCnt1", 9, 0; -V_$006D9AB8 .var "next_delCnt2", 7, 0; -V_$006D9D58 .var "next_initError", 1, 0; -V_$006DA0A8 .var "next_loopCnt", 7, 0; -V_$006DA348 .var "next_rxDataRdyClr", 0, 0; -V_$006DA3D0 .var "next_sendCmdReq", 0, 0; -V_$006DA450 .var "next_spiCS_n", 0, 0; -V_$006DA4D0 .var "next_spiClkDelayOut", 7, 0; -V_$006DA638 .var "next_txDataOut", 7, 0; -V_$006DA918 .var "next_txDataWen", 0, 0; -V_$006DA998 .net "respByte", 7, 0, V_$006D0B40[0], V_$006D0B40[1], V_$006D0B40[2], V_$006D0B40[3], V_$006D0B40[4], V_$006D0B40[5], V_$006D0B40[6], V_$006D0B40[7]; -V_$006DAB98 .net "respTout", 0, 0, V_$006D1010[0]; -V_$006DAC00 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006DAC38 .net "rxDataRdy", 0, 0, V_$006CB9B8[0]; -V_$006DACA8 .var "rxDataRdyClr", 0, 0; -V_$006DACE0 .net "sendCmdRdy", 0, 0, V_$006D1360[0]; -V_$006DAD18 .var "sendCmdReq", 0, 0; -V_$006DADF8 .var "spiCS_n", 0, 0; -V_$006DAE30 .net "spiClkDelayIn", 7, 0, V_$006DCA38[0], V_$006DCA38[1], V_$006DCA38[2], V_$006DCA38[3], V_$006DCA38[4], V_$006DCA38[5], V_$006DCA38[6], V_$006DCA38[7]; -V_$006DB188 .var "spiClkDelayOut", 7, 0; -V_$006DB2E8 .net "txDataEmpty", 0, 0, V_$006CAB30[0]; -V_$006DB358 .net "txDataFull", 0, 0, V_$006CC7A8[0]; -V_$006D71D0 .var "txDataOut", 7, 0; -V_$006DB4B8 .var "txDataWen", 0, 0; -E_006C8B28/0 .event edge, V_$006D7810[0], V_$006D7810[1], V_$006D7810[2], V_$006D7810[3]; -E_006C8B28/1 .event edge, V_$006DACA8[0], V_$006DAD18[0], V_$006D7F80[0], V_$006D7F80[1]; -E_006C8B28/2 .event edge, V_$006D7F80[2], V_$006D7F80[3], V_$006D7F80[4], V_$006D7F80[5]; -E_006C8B28/3 .event edge, V_$006D7F80[6], V_$006D7F80[7], V_$006D8228[0], V_$006D8228[1]; -E_006C8B28/4 .event edge, V_$006D8228[2], V_$006D8228[3], V_$006D8228[4], V_$006D8228[5]; -E_006C8B28/5 .event edge, V_$006D8228[6], V_$006D8228[7], V_$006D80C8[0], V_$006D80C8[1]; -E_006C8B28/6 .event edge, V_$006D80C8[2], V_$006D80C8[3], V_$006D80C8[4], V_$006D80C8[5]; -E_006C8B28/7 .event edge, V_$006D80C8[6], V_$006D80C8[7], V_$006D7DD0[0], V_$006D7DD0[1]; -E_006C8B28/8 .event edge, V_$006D7DD0[2], V_$006D7DD0[3], V_$006D7DD0[4], V_$006D7DD0[5]; -E_006C8B28/9 .event edge, V_$006D7DD0[6], V_$006D7DD0[7], V_$006D7C70[0], V_$006D7C70[1]; -E_006C8B28/10 .event edge, V_$006D7C70[2], V_$006D7C70[3], V_$006D7C70[4], V_$006D7C70[5]; -E_006C8B28/11 .event edge, V_$006D7C70[6], V_$006D7C70[7], V_$006D7B08[0], V_$006D7B08[1]; -E_006C8B28/12 .event edge, V_$006D7B08[2], V_$006D7B08[3], V_$006D7B08[4], V_$006D7B08[5]; -E_006C8B28/13 .event edge, V_$006D7B08[6], V_$006D7B08[7], V_$006DB4B8[0], V_$006D71D0[0]; -E_006C8B28/14 .event edge, V_$006D71D0[1], V_$006D71D0[2], V_$006D71D0[3], V_$006D71D0[4]; -E_006C8B28/15 .event edge, V_$006D71D0[5], V_$006D71D0[6], V_$006D71D0[7], V_$006D8260[0]; -E_006C8B28/16 .event edge, V_$006D8260[1], V_$006DADF8[0], V_$006D7E68[0], V_$006DB188[0]; -E_006C8B28/17 .event edge, V_$006DB188[1], V_$006DB188[2], V_$006DB188[3], V_$006DB188[4]; -E_006C8B28/18 .event edge, V_$006DB188[5], V_$006DB188[6], V_$006DB188[7], V_$006CAB30[0]; -E_006C8B28/19 .event edge, V_$006D83F8[0], V_$006D83F8[1], V_$006D83F8[2], V_$006D83F8[3]; -E_006C8B28/20 .event edge, V_$006D83F8[4], V_$006D83F8[5], V_$006D83F8[6], V_$006D83F8[7]; -E_006C8B28/21 .event edge, V_$006D83C0[0], V_$006D83C0[1], V_$006D83C0[2], V_$006D83C0[3]; -E_006C8B28/22 .event edge, V_$006D83C0[4], V_$006D83C0[5], V_$006D83C0[6], V_$006D83C0[7]; -E_006C8B28/23 .event edge, V_$006D83C0[8], V_$006D83C0[9], V_$006D0B40[0], V_$006D0B40[1]; -E_006C8B28/24 .event edge, V_$006D0B40[2], V_$006D0B40[3], V_$006D0B40[4], V_$006D0B40[5]; -E_006C8B28/25 .event edge, V_$006D0B40[6], V_$006D0B40[7], V_$006D1010[0], V_$006D1360[0]; -E_006C8B28/26 .event edge, V_$006D8E20[0], V_$006D8E20[1], V_$006D8E20[2], V_$006D8E20[3]; -E_006C8B28/27 .event edge, V_$006D8E20[4], V_$006D8E20[5], V_$006D8E20[6], V_$006D8E20[7]; -E_006C8B28/28 .event edge, V_$006CC7A8[0], V_$006DB678[0], V_$006DCA38[0], V_$006DCA38[1]; -E_006C8B28/29 .event edge, V_$006DCA38[2], V_$006DCA38[3], V_$006DCA38[4], V_$006DCA38[5]; -E_006C8B28/30 .event edge, V_$006DCA38[6], V_$006DCA38[7]; -E_006C8B28 .event/or E_006C8B28/0, E_006C8B28/1, E_006C8B28/2, E_006C8B28/3, E_006C8B28/4, E_006C8B28/5, E_006C8B28/6, E_006C8B28/7, E_006C8B28/8, E_006C8B28/9, E_006C8B28/10, E_006C8B28/11, E_006C8B28/12, E_006C8B28/13, E_006C8B28/14, E_006C8B28/15, E_006C8B28/16, E_006C8B28/17, E_006C8B28/18, E_006C8B28/19, E_006C8B28/20, E_006C8B28/21, E_006C8B28/22, E_006C8B28/23, E_006C8B28/24, E_006C8B28/25, E_006C8B28/26, E_006C8B28/27, E_006C8B28/28, E_006C8B28/29, E_006C8B28/30; -S_006D0E50 .scope module, "u_readWriteSDBlock" "readWriteSDBlock", S_006C1500; - .timescale -9; -V_$006D1830 .var "CurrState_rwBlkSt", 5, 0; -V_$006D1C70 .var "NextState_rwBlkSt", 5, 0; -V_$006D2078 .net "blockAddr", 31, 0, V_$006DBED8[0], V_$006DBED8[1], V_$006DBED8[2], V_$006DBED8[3], V_$006DBED8[4], V_$006DBED8[5], V_$006DBED8[6], V_$006DBED8[7], V_$006DBED8[8], V_$006DBED8[9], V_$006DBED8[10], V_$006DBED8[11], V_$006DBED8[12], V_$006DBED8[13], V_$006DBED8[14], V_$006DBED8[15], V_$006DBED8[16], V_$006DBED8[17], V_$006DBED8[18], V_$006DBED8[19], V_$006DBED8[20], V_$006DBED8[21], V_$006DBED8[22], V_$006DBED8[23], V_$006DBED8[24], V_$006DBED8[25], V_$006DBED8[26], V_$006DBED8[27], V_$006DBED8[28], V_$006DBED8[29], V_$006DBED8[30], V_$006DBED8[31]; -V_$006D2790 .var "checkSumByte", 7, 0; -V_$006D28F0 .net "clk", 0, 0, V_$006E3508[0]; -V_$006D2970 .var "cmdByte", 7, 0; -V_$006D2AB0 .var "dataByte1", 7, 0; -V_$006D2C18 .var "dataByte2", 7, 0; -V_$006D2D78 .var "dataByte3", 7, 0; -V_$006D3138 .var "dataByte4", 7, 0; -V_$006D3278 .var "delCnt1", 7, 0; -V_$006D3310 .var "delCnt2", 7, 0; -V_$006D3370 .var "locRespByte", 7, 0; -V_$006D32B0 .var "loopCnt", 8, 0; -V_$006D3580 .var "next_checkSumByte", 7, 0; -V_$006D3890 .var "next_cmdByte", 7, 0; -V_$006D3B18 .var "next_dataByte1", 7, 0; -V_$006D40D8 .var "next_dataByte2", 7, 0; -V_$006D43B8 .var "next_dataByte3", 7, 0; -V_$006D4F90 .var "next_dataByte4", 7, 0; -V_$006D4750 .var "next_delCnt1", 7, 0; -V_$006D4A70 .var "next_delCnt2", 7, 0; -V_$006D4D10 .var "next_locRespByte", 7, 0; -V_$006D5200 .var "next_loopCnt", 8, 0; -V_$006D5DD8 .var "next_readError", 1, 0; -V_$006D5F20 .var "next_readWriteSDBlockRdy", 0, 0; -V_$006D5FB0 .var "next_rxDataRdyClr", 0, 0; -V_$006D5520 .var "next_rxFifoData", 7, 0; -V_$006D5800 .var "next_rxFifoWen", 0, 0; -V_$006D5880 .var "next_sendCmdReq", 0, 0; -V_$006D5948 .var "next_spiCS_n", 0, 0; -V_$006D5A20 .var "next_timeOutCnt", 9, 0; -V_$006D6008 .var "next_txDataOut", 7, 0; -V_$006D62B0 .var "next_txDataWen", 0, 0; -V_$006D6330 .var "next_txFifoRen", 0, 0; -V_$006D63B0 .var "next_writeError", 1, 0; -V_$006D6488 .var "readError", 1, 0; -V_$006D6E38 .var "readWriteSDBlockRdy", 0, 0; -V_$006D6EC0 .net "readWriteSDBlockReq", 1, 0, V_$006DBA28[0], V_$006DBA28[1]; -V_$006D6F98 .net "respByte", 7, 0, V_$006D0B40[0], V_$006D0B40[1], V_$006D0B40[2], V_$006D0B40[3], V_$006D0B40[4], V_$006D0B40[5], V_$006D0B40[6], V_$006D0B40[7]; -V_$006D6648 .net "respTout", 0, 0, V_$006D1010[0]; -V_$006D66A0 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006D66D8 .net "rxDataIn", 7, 0, V_$006CB750[0], V_$006CB750[1], V_$006CB750[2], V_$006CB750[3], V_$006CB750[4], V_$006CB750[5], V_$006CB750[6], V_$006CB750[7]; -V_$006D68B8 .net "rxDataRdy", 0, 0, V_$006CB9B8[0]; -V_$006D6920 .var "rxDataRdyClr", 0, 0; -V_$006D6958 .var "rxFifoData", 7, 0; -V_$006D6B90 .var "rxFifoWen", 0, 0; -V_$006D6C00 .net "sendCmdRdy", 0, 0, V_$006D1360[0]; -V_$006D6C38 .var "sendCmdReq", 0, 0; -V_$006D6C70 .var "spiCS_n", 0, 0; -V_$006D6CA8 .var "timeOutCnt", 9, 0; -V_$006D7160 .net "txDataEmpty", 0, 0, V_$006CAB30[0]; -V_$006D7198 .net "txDataFull", 0, 0, V_$006CC7A8[0]; -V_$006D7208 .var "txDataOut", 7, 0; -V_$006D72A8 .var "txDataWen", 0, 0; -V_$006D73E8 .net "txFifoData", 7, 0, V_$006C7CF0[0], V_$006C7CF0[1], V_$006C7CF0[2], V_$006C7CF0[3], V_$006C7CF0[4], V_$006C7CF0[5], V_$006C7CF0[6], V_$006C7CF0[7]; -V_$006D7488 .var "txFifoRen", 0, 0; -V_$006D75E8 .var "writeError", 1, 0; -E_006D1810/0 .event edge, V_$006D1830[0], V_$006D1830[1], V_$006D1830[2], V_$006D1830[3]; -E_006D1810/1 .event edge, V_$006D1830[4], V_$006D1830[5], V_$006D6958[0], V_$006D6958[1]; -E_006D1810/2 .event edge, V_$006D6958[2], V_$006D6958[3], V_$006D6958[4], V_$006D6958[5]; -E_006D1810/3 .event edge, V_$006D6958[6], V_$006D6958[7], V_$006D6B90[0], V_$006D7488[0]; -E_006D1810/4 .event edge, V_$006D6C38[0], V_$006D2790[0], V_$006D2790[1], V_$006D2790[2]; -E_006D1810/5 .event edge, V_$006D2790[3], V_$006D2790[4], V_$006D2790[5], V_$006D2790[6]; -E_006D1810/6 .event edge, V_$006D2790[7], V_$006D3138[0], V_$006D3138[1], V_$006D3138[2]; -E_006D1810/7 .event edge, V_$006D3138[3], V_$006D3138[4], V_$006D3138[5], V_$006D3138[6]; -E_006D1810/8 .event edge, V_$006D3138[7], V_$006D2D78[0], V_$006D2D78[1], V_$006D2D78[2]; -E_006D1810/9 .event edge, V_$006D2D78[3], V_$006D2D78[4], V_$006D2D78[5], V_$006D2D78[6]; -E_006D1810/10 .event edge, V_$006D2D78[7], V_$006D2C18[0], V_$006D2C18[1], V_$006D2C18[2]; -E_006D1810/11 .event edge, V_$006D2C18[3], V_$006D2C18[4], V_$006D2C18[5], V_$006D2C18[6]; -E_006D1810/12 .event edge, V_$006D2C18[7], V_$006D2AB0[0], V_$006D2AB0[1], V_$006D2AB0[2]; -E_006D1810/13 .event edge, V_$006D2AB0[3], V_$006D2AB0[4], V_$006D2AB0[5], V_$006D2AB0[6]; -E_006D1810/14 .event edge, V_$006D2AB0[7], V_$006D2970[0], V_$006D2970[1], V_$006D2970[2]; -E_006D1810/15 .event edge, V_$006D2970[3], V_$006D2970[4], V_$006D2970[5], V_$006D2970[6]; -E_006D1810/16 .event edge, V_$006D2970[7], V_$006D6920[0], V_$006D72A8[0], V_$006D7208[0]; -E_006D1810/17 .event edge, V_$006D7208[1], V_$006D7208[2], V_$006D7208[3], V_$006D7208[4]; -E_006D1810/18 .event edge, V_$006D7208[5], V_$006D7208[6], V_$006D7208[7], V_$006D75E8[0]; -E_006D1810/19 .event edge, V_$006D75E8[1], V_$006D6488[0], V_$006D6488[1], V_$006D6C70[0]; -E_006D1810/20 .event edge, V_$006D6E38[0], V_$006D3310[0], V_$006D3310[1], V_$006D3310[2]; -E_006D1810/21 .event edge, V_$006D3310[3], V_$006D3310[4], V_$006D3310[5], V_$006D3310[6]; -E_006D1810/22 .event edge, V_$006D3310[7], V_$006D3278[0], V_$006D3278[1], V_$006D3278[2]; -E_006D1810/23 .event edge, V_$006D3278[3], V_$006D3278[4], V_$006D3278[5], V_$006D3278[6]; -E_006D1810/24 .event edge, V_$006D3278[7], V_$006CB750[0], V_$006CB750[1], V_$006CB750[2]; -E_006D1810/25 .event edge, V_$006CB750[3], V_$006CB750[4], V_$006CB750[5], V_$006CB750[6]; -E_006D1810/26 .event edge, V_$006CB750[7], V_$006CB9B8[0], V_$006D3370[0], V_$006D3370[1]; -E_006D1810/27 .event edge, V_$006D3370[2], V_$006D3370[3], V_$006D3370[4], V_$006D3370[5]; -E_006D1810/28 .event edge, V_$006D3370[6], V_$006D3370[7], V_$006D6CA8[0], V_$006D6CA8[1]; -E_006D1810/29 .event edge, V_$006D6CA8[2], V_$006D6CA8[3], V_$006D6CA8[4], V_$006D6CA8[5]; -E_006D1810/30 .event edge, V_$006D6CA8[6], V_$006D6CA8[7], V_$006D6CA8[8], V_$006D6CA8[9]; -E_006D1810/31 .event edge, V_$006CAB30[0], V_$006C7CF0[0], V_$006C7CF0[1], V_$006C7CF0[2]; -E_006D1810/32 .event edge, V_$006C7CF0[3], V_$006C7CF0[4], V_$006C7CF0[5], V_$006C7CF0[6]; -E_006D1810/33 .event edge, V_$006C7CF0[7], V_$006D32B0[0], V_$006D32B0[1], V_$006D32B0[2]; -E_006D1810/34 .event edge, V_$006D32B0[3], V_$006D32B0[4], V_$006D32B0[5], V_$006D32B0[6]; -E_006D1810/35 .event edge, V_$006D32B0[7], V_$006D32B0[8], V_$006CC7A8[0], V_$006DBA28[0]; -E_006D1810/36 .event edge, V_$006DBA28[1], V_$006D1360[0], V_$006DBED8[0], V_$006DBED8[1]; -E_006D1810/37 .event edge, V_$006DBED8[2], V_$006DBED8[3], V_$006DBED8[4], V_$006DBED8[5]; -E_006D1810/38 .event edge, V_$006DBED8[6], V_$006DBED8[7], V_$006DBED8[8], V_$006DBED8[9]; -E_006D1810/39 .event edge, V_$006DBED8[10], V_$006DBED8[11], V_$006DBED8[12], V_$006DBED8[13]; -E_006D1810/40 .event edge, V_$006DBED8[14], V_$006DBED8[15], V_$006DBED8[16], V_$006DBED8[17]; -E_006D1810/41 .event edge, V_$006DBED8[18], V_$006DBED8[19], V_$006DBED8[20], V_$006DBED8[21]; -E_006D1810/42 .event edge, V_$006DBED8[22], V_$006DBED8[23], V_$006DBED8[24], V_$006DBED8[25]; -E_006D1810/43 .event edge, V_$006DBED8[26], V_$006DBED8[27], V_$006DBED8[28], V_$006DBED8[29]; -E_006D1810/44 .event edge, V_$006DBED8[30], V_$006DBED8[31]; -E_006D1810 .event/or E_006D1810/0, E_006D1810/1, E_006D1810/2, E_006D1810/3, E_006D1810/4, E_006D1810/5, E_006D1810/6, E_006D1810/7, E_006D1810/8, E_006D1810/9, E_006D1810/10, E_006D1810/11, E_006D1810/12, E_006D1810/13, E_006D1810/14, E_006D1810/15, E_006D1810/16, E_006D1810/17, E_006D1810/18, E_006D1810/19, E_006D1810/20, E_006D1810/21, E_006D1810/22, E_006D1810/23, E_006D1810/24, E_006D1810/25, E_006D1810/26, E_006D1810/27, E_006D1810/28, E_006D1810/29, E_006D1810/30, E_006D1810/31, E_006D1810/32, E_006D1810/33, E_006D1810/34, E_006D1810/35, E_006D1810/36, E_006D1810/37, E_006D1810/38, E_006D1810/39, E_006D1810/40, E_006D1810/41, E_006D1810/42, E_006D1810/43, E_006D1810/44; -S_006CC9E8 .scope module, "u_sendCmd" "sendCmd", S_006C1500; - .timescale -9; -V_$006CCC20 .var "CurrState_sndCmdSt", 4, 0; -V_$006CCD78 .var "NextState_sndCmdSt", 4, 0; -V_$006CD0D8 .var "checkSumByte", 7, 0; -V_$006CD390 .net "checkSumByte_1", 7, 0, V_$006D7F80[0], V_$006D7F80[1], V_$006D7F80[2], V_$006D7F80[3], V_$006D7F80[4], V_$006D7F80[5], V_$006D7F80[6], V_$006D7F80[7]; -V_$006CDF58 .net "checkSumByte_2", 7, 0, V_$006D2790[0], V_$006D2790[1], V_$006D2790[2], V_$006D2790[3], V_$006D2790[4], V_$006D2790[5], V_$006D2790[6], V_$006D2790[7]; -V_$006CD750 .net "clk", 0, 0, V_$006E3508[0]; -V_$006CD788 .var "cmdByte", 7, 0; -V_$006CDA58 .net "cmdByte_1", 7, 0, V_$006D7B08[0], V_$006D7B08[1], V_$006D7B08[2], V_$006D7B08[3], V_$006D7B08[4], V_$006D7B08[5], V_$006D7B08[6], V_$006D7B08[7]; -V_$006CDCF8 .net "cmdByte_2", 7, 0, V_$006D2970[0], V_$006D2970[1], V_$006D2970[2], V_$006D2970[3], V_$006D2970[4], V_$006D2970[5], V_$006D2970[6], V_$006D2970[7]; -V_$006CE188 .var "dataByte1", 7, 0; -V_$006CE428 .net "dataByte1_1", 7, 0, V_$006D7C70[0], V_$006D7C70[1], V_$006D7C70[2], V_$006D7C70[3], V_$006D7C70[4], V_$006D7C70[5], V_$006D7C70[6], V_$006D7C70[7]; -V_$006CE538 .net "dataByte1_2", 7, 0, V_$006D2AB0[0], V_$006D2AB0[1], V_$006D2AB0[2], V_$006D2AB0[3], V_$006D2AB0[4], V_$006D2AB0[5], V_$006D2AB0[6], V_$006D2AB0[7]; -V_$006CE7B0 .var "dataByte2", 7, 0; -V_$006CE460 .net "dataByte2_1", 7, 0, V_$006D7DD0[0], V_$006D7DD0[1], V_$006D7DD0[2], V_$006D7DD0[3], V_$006D7DD0[4], V_$006D7DD0[5], V_$006D7DD0[6], V_$006D7DD0[7]; -V_$006CECD8 .net "dataByte2_2", 7, 0, V_$006D2C18[0], V_$006D2C18[1], V_$006D2C18[2], V_$006D2C18[3], V_$006D2C18[4], V_$006D2C18[5], V_$006D2C18[6], V_$006D2C18[7]; -V_$006CF158 .var "dataByte3", 7, 0; -V_$006CF3F8 .net "dataByte3_1", 7, 0, V_$006D80C8[0], V_$006D80C8[1], V_$006D80C8[2], V_$006D80C8[3], V_$006D80C8[4], V_$006D80C8[5], V_$006D80C8[6], V_$006D80C8[7]; -V_$006CFF80 .net "dataByte3_2", 7, 0, V_$006D2D78[0], V_$006D2D78[1], V_$006D2D78[2], V_$006D2D78[3], V_$006D2D78[4], V_$006D2D78[5], V_$006D2D78[6], V_$006D2D78[7]; -V_$006CF750 .var "dataByte4", 7, 0; -V_$006CFA18 .net "dataByte4_1", 7, 0, V_$006D8228[0], V_$006D8228[1], V_$006D8228[2], V_$006D8228[3], V_$006D8228[4], V_$006D8228[5], V_$006D8228[6], V_$006D8228[7]; -V_$006CFCB8 .net "dataByte4_2", 7, 0, V_$006D3138[0], V_$006D3138[1], V_$006D3138[2], V_$006D3138[3], V_$006D3138[4], V_$006D3138[5], V_$006D3138[6], V_$006D3138[7]; -V_$006D01A8 .var "next_respByte", 7, 0; -V_$006D0488 .var "next_respTout", 0, 0; -V_$006D04F0 .var "next_rxDataRdyClr", 0, 0; -V_$006D0E18 .var "next_sendCmdRdy", 0, 0; -V_$006D0F08 .var "next_timeOutCnt", 9, 0; -V_$006D07C0 .var "next_txDataOut", 7, 0; -V_$006D0AC0 .var "next_txDataWen", 0, 0; -V_$006D0B40 .var "respByte", 7, 0; -V_$006D1010 .var "respTout", 0, 0; -V_$006D1090 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006D1150 .net "rxDataIn", 7, 0, V_$006CB750[0], V_$006CB750[1], V_$006CB750[2], V_$006CB750[3], V_$006CB750[4], V_$006CB750[5], V_$006CB750[6], V_$006CB750[7]; -V_$006D12B0 .net "rxDataRdy", 0, 0, V_$006CB9B8[0]; -V_$006D1308 .var "rxDataRdyClr", 0, 0; -V_$006D1360 .var "sendCmdRdy", 0, 0; -V_$006D1398 .var "sendCmdReq", 0, 0; -V_$006D13D0 .net "sendCmdReq1", 0, 0, V_$006DAD18[0]; -V_$006D1428 .net "sendCmdReq2", 0, 0, V_$006D6C38[0]; -V_$006D14A8 .var "timeOutCnt", 9, 0; -V_$006D15B8 .net "txDataEmpty", 0, 0, V_$006CAB30[0]; -V_$006D1610 .net "txDataFull", 0, 0, V_$006CC7A8[0]; -V_$006D1678 .var "txDataOut", 7, 0; -V_$006D17B8 .var "txDataWen", 0, 0; -E_006CCA58/0 .event edge, V_$006CCC20[0], V_$006CCC20[1], V_$006CCC20[2], V_$006CCC20[3]; -E_006CCA58/1 .event edge, V_$006CCC20[4], V_$006D1360[0], V_$006D1010[0], V_$006D1308[0]; -E_006CCA58/2 .event edge, V_$006D1678[0], V_$006D1678[1], V_$006D1678[2], V_$006D1678[3]; -E_006CCA58/3 .event edge, V_$006D1678[4], V_$006D1678[5], V_$006D1678[6], V_$006D1678[7]; -E_006CCA58/4 .event edge, V_$006D17B8[0], V_$006D1398[0], V_$006CD788[0], V_$006CD788[1]; -E_006CCA58/5 .event edge, V_$006CD788[2], V_$006CD788[3], V_$006CD788[4], V_$006CD788[5]; -E_006CCA58/6 .event edge, V_$006CD788[6], V_$006CD788[7], V_$006CD0D8[0], V_$006CD0D8[1]; -E_006CCA58/7 .event edge, V_$006CD0D8[2], V_$006CD0D8[3], V_$006CD0D8[4], V_$006CD0D8[5]; -E_006CCA58/8 .event edge, V_$006CD0D8[6], V_$006CD0D8[7], V_$006CAB30[0], V_$006CF750[0]; -E_006CCA58/9 .event edge, V_$006CF750[1], V_$006CF750[2], V_$006CF750[3], V_$006CF750[4]; -E_006CCA58/10 .event edge, V_$006CF750[5], V_$006CF750[6], V_$006CF750[7], V_$006CF158[0]; -E_006CCA58/11 .event edge, V_$006CF158[1], V_$006CF158[2], V_$006CF158[3], V_$006CF158[4]; -E_006CCA58/12 .event edge, V_$006CF158[5], V_$006CF158[6], V_$006CF158[7], V_$006CE188[0]; -E_006CCA58/13 .event edge, V_$006CE188[1], V_$006CE188[2], V_$006CE188[3], V_$006CE188[4]; -E_006CCA58/14 .event edge, V_$006CE188[5], V_$006CE188[6], V_$006CE188[7], V_$006D0B40[0]; -E_006CCA58/15 .event edge, V_$006D0B40[1], V_$006D0B40[2], V_$006D0B40[3], V_$006D0B40[4]; -E_006CCA58/16 .event edge, V_$006D0B40[5], V_$006D0B40[6], V_$006D0B40[7], V_$006CB750[0]; -E_006CCA58/17 .event edge, V_$006CB750[1], V_$006CB750[2], V_$006CB750[3], V_$006CB750[4]; -E_006CCA58/18 .event edge, V_$006CB750[5], V_$006CB750[6], V_$006CB750[7], V_$006CB9B8[0]; -E_006CCA58/19 .event edge, V_$006D14A8[0], V_$006D14A8[1], V_$006D14A8[2], V_$006D14A8[3]; -E_006CCA58/20 .event edge, V_$006D14A8[4], V_$006D14A8[5], V_$006D14A8[6], V_$006D14A8[7]; -E_006CCA58/21 .event edge, V_$006D14A8[8], V_$006D14A8[9], V_$006CE7B0[0], V_$006CE7B0[1]; -E_006CCA58/22 .event edge, V_$006CE7B0[2], V_$006CE7B0[3], V_$006CE7B0[4], V_$006CE7B0[5]; -E_006CCA58/23 .event edge, V_$006CE7B0[6], V_$006CE7B0[7], V_$006CC7A8[0]; -E_006CCA58 .event/or E_006CCA58/0, E_006CCA58/1, E_006CCA58/2, E_006CCA58/3, E_006CCA58/4, E_006CCA58/5, E_006CCA58/6, E_006CCA58/7, E_006CCA58/8, E_006CCA58/9, E_006CCA58/10, E_006CCA58/11, E_006CCA58/12, E_006CCA58/13, E_006CCA58/14, E_006CCA58/15, E_006CCA58/16, E_006CCA58/17, E_006CCA58/18, E_006CCA58/19, E_006CCA58/20, E_006CCA58/21, E_006CCA58/22, E_006CCA58/23; -E_006CCC00 .event edge, V_$006D6C38[0], V_$006DAD18[0]; -S_006CABC8 .scope module, "u_spiTxRxData" "spiTxRxData", S_006C1500; - .timescale -9; -V_$006CBE48 .net "clk", 0, 0, V_$006E3508[0]; -V_$006CBE80 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006CBEB8 .net "rx1DataRdyClr", 0, 0, V_$006D6920[0]; -V_$006CBF60 .net "rx2DataRdyClr", 0, 0, V_$006D1308[0]; -V_$006CB4F8 .net "rx3DataRdyClr", 0, 0, V_$006DACA8[0]; -V_$006CB568 .net "rx4DataRdyClr", 0, 0, V_$006DAC70[0]; -V_$006CB5F0 .net "rxDataIn", 7, 0, V_$006C90B8[0], V_$006C90B8[1], V_$006C90B8[2], V_$006C90B8[3], V_$006C90B8[4], V_$006C90B8[5], V_$006C90B8[6], V_$006C90B8[7]; -V_$006CB750 .var "rxDataOut", 7, 0; -V_$006CB9B8 .var "rxDataRdy", 0, 0; -V_$006CBA20 .net "rxDataRdySet", 0, 0, V_$006CA688[0]; -V_$006CBA78 .net "tx1DataIn", 7, 0, V_$006D7208[0], V_$006D7208[1], V_$006D7208[2], V_$006D7208[3], V_$006D7208[4], V_$006D7208[5], V_$006D7208[6], V_$006D7208[7]; -V_$006CBD38 .net "tx1DataWEn", 0, 0, V_$006D72A8[0]; -V_$006CC038 .net "tx2DataIn", 7, 0, V_$006D1678[0], V_$006D1678[1], V_$006D1678[2], V_$006D1678[3], V_$006D1678[4], V_$006D1678[5], V_$006D1678[6], V_$006D1678[7]; -V_$006CBAB0 .net "tx2DataWEn", 0, 0, V_$006D17B8[0]; -V_$006CC2F8 .net "tx3DataIn", 7, 0, V_$006D71D0[0], V_$006D71D0[1], V_$006D71D0[2], V_$006D71D0[3], V_$006D71D0[4], V_$006D71D0[5], V_$006D71D0[6], V_$006D71D0[7]; -V_$006CCE78 .net "tx3DataWEn", 0, 0, V_$006DB4B8[0]; -V_$006CCF00 .net "tx4DataIn", 7, 0, V_$006DD220[0], V_$006DD220[1], V_$006DD220[2], V_$006DD220[3], V_$006DD220[4], V_$006DD220[5], V_$006DD220[6], V_$006DD220[7]; -V_$006CC720 .net "tx4DataWEn", 0, 0, V_$006DBDB0[0]; -V_$006CC7A8 .var "txDataFull", 0, 0; -V_$006CC800 .net "txDataFullClr", 0, 0, V_$006CAC78[0]; -V_$006CC858 .var "txDataOut", 7, 0; -S_006C9128 .scope module, "u_readWriteSPIWireData" "readWriteSPIWireData", S_006C1500; - .timescale -9; -V_$006C9298 .var "CurrState_rwSPISt", 1, 0; -V_$006C92D0 .var "NextState_rwSPISt", 1, 0; -V_$006C9BE0 .var "bitCnt", 3, 0; -V_$006C9C18 .net "clk", 0, 0, V_$006E3508[0]; -V_$006C9CC8 .net "clkDelay", 7, 0, V_$006DB188[0], V_$006DB188[1], V_$006DB188[2], V_$006DB188[3], V_$006DB188[4], V_$006DB188[5], V_$006DB188[6], V_$006DB188[7]; -V_$006C9D00 .var "clkDelayCnt", 7, 0; -V_$006C9FA0 .var "next_bitCnt", 3, 0; -V_$006C9440 .var "next_clkDelayCnt", 7, 0; -V_$006C9660 .var "next_rxDataOut", 7, 0; -V_$006C9938 .var "next_rxDataRdySet", 0, 0; -V_$006C99C0 .var "next_rxDataShiftReg", 7, 0; -V_$006CA118 .var "next_spiClkOut", 0, 0; -V_$006CA198 .var "next_spiDataOut", 0, 0; -V_$006C99F8 .var "next_txDataEmpty", 0, 0; -V_$006CA268 .var "next_txDataFullClr", 0, 0; -V_$006CA2F0 .var "next_txDataShiftReg", 7, 0; -V_$006CAEC0 .net "rst", 0, 0, V_$006DCA00[0]; -V_$006C90B8 .var "rxDataOut", 7, 0; -V_$006CA688 .var "rxDataRdySet", 0, 0; -V_$006CA718 .var "rxDataShiftReg", 7, 0; -V_$006CAA28 .var "spiClkOut", 0, 0; -V_$006CAA80 .net "spiDataIn", 0, 0, V_$00644A08[0]; -V_$006CAAD8 .var "spiDataOut", 0, 0; -V_$006CAB30 .var "txDataEmpty", 0, 0; -V_$006CAB90 .net "txDataFull", 0, 0, V_$006CC7A8[0]; -V_$006CAC78 .var "txDataFullClr", 0, 0; -V_$006CAD08 .net "txDataIn", 7, 0, V_$006CC858[0], V_$006CC858[1], V_$006CC858[2], V_$006CC858[3], V_$006CC858[4], V_$006CC858[5], V_$006CC858[6], V_$006CC858[7]; -V_$006CB278 .var "txDataShiftReg", 7, 0; -E_006C8530/0 .event edge, V_$006C9298[0], V_$006C9298[1], V_$006C90B8[0], V_$006C90B8[1]; -E_006C8530/1 .event edge, V_$006C90B8[2], V_$006C90B8[3], V_$006C90B8[4], V_$006C90B8[5]; -E_006C8530/2 .event edge, V_$006C90B8[6], V_$006C90B8[7], V_$006CAAD8[0], V_$006CAA28[0]; -E_006C8530/3 .event edge, V_$006CAC78[0], V_$006CAB30[0], V_$006CA688[0], V_$00644A08[0]; -E_006C8530/4 .event edge, V_$006CA718[0], V_$006CA718[1], V_$006CA718[2], V_$006CA718[3]; -E_006C8530/5 .event edge, V_$006CA718[4], V_$006CA718[5], V_$006CA718[6], V_$006CA718[7]; -E_006C8530/6 .event edge, V_$006C9BE0[0], V_$006C9BE0[1], V_$006C9BE0[2], V_$006C9BE0[3]; -E_006C8530/7 .event edge, V_$006CB278[0], V_$006CB278[1], V_$006CB278[2], V_$006CB278[3]; -E_006C8530/8 .event edge, V_$006CB278[4], V_$006CB278[5], V_$006CB278[6], V_$006CB278[7]; -E_006C8530/9 .event edge, V_$006DB188[0], V_$006DB188[1], V_$006DB188[2], V_$006DB188[3]; -E_006C8530/10 .event edge, V_$006DB188[4], V_$006DB188[5], V_$006DB188[6], V_$006DB188[7]; -E_006C8530/11 .event edge, V_$006C9D00[0], V_$006C9D00[1], V_$006C9D00[2], V_$006C9D00[3]; -E_006C8530/12 .event edge, V_$006C9D00[4], V_$006C9D00[5], V_$006C9D00[6], V_$006C9D00[7]; -E_006C8530/13 .event edge, V_$006CC858[0], V_$006CC858[1], V_$006CC858[2], V_$006CC858[3]; -E_006C8530/14 .event edge, V_$006CC858[4], V_$006CC858[5], V_$006CC858[6], V_$006CC858[7]; -E_006C8530/15 .event edge, V_$006CC7A8[0]; -E_006C8530 .event/or E_006C8530/0, E_006C8530/1, E_006C8530/2, E_006C8530/3, E_006C8530/4, E_006C8530/5, E_006C8530/6, E_006C8530/7, E_006C8530/8, E_006C8530/9, E_006C8530/10, E_006C8530/11, E_006C8530/12, E_006C8530/13, E_006C8530/14, E_006C8530/15; -S_006C4F78 .scope module, "u_txFifo" "TxFifo", S_006C1500; - .timescale -9; -V_$006C86B0 .net "busAddress", 2, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2]; -V_$006C5188 .net "busClk", 0, 0, V_$006DF4B8[0]; -V_$006C5150 .net "busDataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006C5118 .net "busDataOut", 7, 0, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>; -V_$006C8968 .net "busFifoSelect", 0, 0, V_$006DEA20[0]; -V_$006C89E0 .net "busStrobe_i", 0, 0, V_$006607B0[0]; -V_$006C59A8 .net "busWriteEn", 0, 0, V_$006A5C98[0]; -V_$006C5A40 .net "fifoDataOut", 7, 0, V_$006C7CF0[0], V_$006C7CF0[1], V_$006C7CF0[2], V_$006C7CF0[3], V_$006C7CF0[4], V_$006C7CF0[5], V_$006C7CF0[6], V_$006C7CF0[7]; -V_$006C8B48 .net "fifoEmpty", 0, 0, V_$006C7FF8[0]; -V_$006C8BA0 .net "fifoFull", 0, 0, V_$006C8098[0]; -V_$006C8BF8 .net "fifoREn", 0, 0, V_$006D7488[0]; -V_$006C8C68 .net "fifoWEn", 0, 0, V_$006C54B0[0]; -V_$006C8CD8 .net "forceEmptySyncToBusClk", 0, 0, V_$006C5548[0]; -V_$006C8C30 .net "forceEmptySyncToSpiClk", 0, 0, V_$006C55B8[0]; -V_$006C8D10 .net "numElementsInFifo", 15, 0, V_$006C82B8[0], V_$006C82B8[1], V_$006C82B8[2], V_$006C82B8[3], V_$006C82B8[4], V_$006C82B8[5], V_$006C82B8[6], V_$006C82B8[7], V_$006C82B8[8], V_$006C82B8[9], V_$006C82B8[10], V_$006C82B8[11], V_$006C82B8[12], V_$006C82B8[13], V_$006C82B8[14], V_$006C82B8[15]; -V_$006C9048 .net "rstSyncToBusClk", 0, 0, V_$006DC940[0]; -V_$006C9080 .net "rstSyncToSpiClk", 0, 0, V_$006DCA00[0]; -V_$006C90F0 .net "spiSysClk", 0, 0, V_$006E3508[0]; -S_006C5A78 .scope module, "u_fifo" "fifoRTL", S_006C4F78; - .timescale -9; -V_$006C52C8 .var "bufferCnt", 9, 0; -V_$006C5290 .var "bufferInIndex", 9, 0; -V_$006C5258 .var "bufferInIndexSyncToRdClk", 9, 0; -V_$006C7270 .var "bufferInIndexToMem", 8, 0; -V_$006C73C8 .var "bufferOutIndex", 9, 0; -V_$006C7F50 .var "bufferOutIndexSyncToWrClk", 9, 0; -V_$006C77D8 .var "bufferOutIndexToMem", 8, 0; -V_$006C7978 .net "dataFromMem", 7, 0, V_$006C53E0[0], V_$006C53E0[1], V_$006C53E0[2], V_$006C53E0[3], V_$006C53E0[4], V_$006C53E0[5], V_$006C53E0[6], V_$006C53E0[7]; -V_$006C7AD8 .net "dataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006C7CF0 .var "dataOut", 7, 0; -V_$006C7FF8 .var "fifoEmpty", 0, 0; -V_$006C8098 .var "fifoFull", 0, 0; -V_$006C8118 .net "fifoREn", 0, 0, V_$006D7488[0]; -V_$006C8030 .var "fifoREnDelayed", 0, 0; -V_$006C81A0 .net "fifoWEn", 0, 0, V_$006C54B0[0]; -V_$006C81D8 .net "forceEmptySyncToRdClk", 0, 0, V_$006C55B8[0]; -V_$006C8210 .net "forceEmptySyncToWrClk", 0, 0, V_$006C5548[0]; -V_$006C82B8 .var "numElementsInFifo", 15, 0; -V_$006C8550 .net "rdClk", 0, 0, V_$006E3508[0]; -V_$006C85E0 .net "rstSyncToRdClk", 0, 0, V_$006DCA00[0]; -V_$006C8618 .net "rstSyncToWrClk", 0, 0, V_$006DC940[0]; -V_$006C5628 .net "wrClk", 0, 0, V_$006DF4B8[0]; -E_005F17F0/0 .event edge, V_$006C73C8[0], V_$006C73C8[1], V_$006C73C8[2], V_$006C73C8[3]; -E_005F17F0/1 .event edge, V_$006C73C8[4], V_$006C73C8[5], V_$006C73C8[6], V_$006C73C8[7]; -E_005F17F0/2 .event edge, V_$006C73C8[8], V_$006C73C8[9], V_$006C5290[0], V_$006C5290[1]; -E_005F17F0/3 .event edge, V_$006C5290[2], V_$006C5290[3], V_$006C5290[4], V_$006C5290[5]; -E_005F17F0/4 .event edge, V_$006C5290[6], V_$006C5290[7], V_$006C5290[8], V_$006C5290[9]; -E_005F17F0 .event/or E_005F17F0/0, E_005F17F0/1, E_005F17F0/2, E_005F17F0/3, E_005F17F0/4; -E_003DDD60/0 .event edge, V_$006C73C8[0], V_$006C73C8[1], V_$006C73C8[2], V_$006C73C8[3]; -E_003DDD60/1 .event edge, V_$006C73C8[4], V_$006C73C8[5], V_$006C73C8[6], V_$006C73C8[7]; -E_003DDD60/2 .event edge, V_$006C73C8[8], V_$006C73C8[9], V_$006C5258[0], V_$006C5258[1]; -E_003DDD60/3 .event edge, V_$006C5258[2], V_$006C5258[3], V_$006C5258[4], V_$006C5258[5]; -E_003DDD60/4 .event edge, V_$006C5258[6], V_$006C5258[7], V_$006C5258[8], V_$006C5258[9]; -E_003DDD60 .event/or E_003DDD60/0, E_003DDD60/1, E_003DDD60/2, E_003DDD60/3, E_003DDD60/4; -S_006C5C68 .scope module, "u_dpMem_dc" "dpMem_dc", S_006C5A78; - .timescale -9; -V_$006C5B38 .net "addrIn", 8, 0, V_$006C7270[0], V_$006C7270[1], V_$006C7270[2], V_$006C7270[3], V_$006C7270[4], V_$006C7270[5], V_$006C7270[6], V_$006C7270[7], V_$006C7270[8]; -V_$006C6048 .net "addrOut", 8, 0, V_$006C77D8[0], V_$006C77D8[1], V_$006C77D8[2], V_$006C77D8[3], V_$006C77D8[4], V_$006C77D8[5], V_$006C77D8[6], V_$006C77D8[7], V_$006C77D8[8]; -V_$006C6340 .net "dataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006C53E0 .var "dataOut", 7, 0; -V_$006C53A8 .net "rdClk", 0, 0, V_$006E3508[0]; -V_$006C5370 .net "readEn", 0, 0, V_$006D7488[0]; -V_$006C5338 .net "wrClk", 0, 0, V_$006DF4B8[0]; -V_$006C5300 .net "writeEn", 0, 0, V_$006C54B0[0]; -M_$006C68E0 .mem "buffer", 7,0, 0,511; -S_006C5098 .scope module, "u_TxfifoBI" "TxfifoBI", S_006C4F78; - .timescale -9; -V_$006C5060 .net "address", 2, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2]; -V_$006C51C0 .net "busClk", 0, 0, V_$006DF4B8[0]; -V_$006C51F8 .net "busDataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006C5418 .net "busDataOut", 7, 0, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>, C<0>; -V_$006C5478 .net "fifoSelect", 0, 0, V_$006DEA20[0]; -V_$006C54B0 .var "fifoWEn", 0, 0; -V_$006C54E8 .var "forceEmpty", 0, 0; -V_$006C5548 .var "forceEmptyShift", 5, 0; -V_$006C5580 .net "forceEmptySyncToBusClk", 0, 0, V_$006C5548[0]; -V_$006C55B8 .var "forceEmptySyncToSpiClk", 0, 0; -V_$006C55F0 .var "forceEmptySyncToSpiClkFirst", 0, 0; -V_$006C5660 .net "numElementsInFifo", 15, 0, V_$006C82B8[0], V_$006C82B8[1], V_$006C82B8[2], V_$006C82B8[3], V_$006C82B8[4], V_$006C82B8[5], V_$006C82B8[6], V_$006C82B8[7], V_$006C82B8[8], V_$006C82B8[9], V_$006C82B8[10], V_$006C82B8[11], V_$006C82B8[12], V_$006C82B8[13], V_$006C82B8[14], V_$006C82B8[15]; -V_$006C58F0 .net "rstSyncToBusClk", 0, 0, V_$006DC940[0]; -V_$006C5928 .net "spiSysClk", 0, 0, V_$006E3508[0]; -V_$006C4F40 .net "strobe_i", 0, 0, V_$006607B0[0]; -V_$006C5A08 .net "writeEn", 0, 0, V_$006A5C98[0]; -E_006C45B0/0 .event edge, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3]; -E_006C45B0/1 .event edge, V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -E_006C45B0/2 .event edge, V_$006DEA20[0], V_$006607B0[0], V_$006A5C98[0], V_$0068AE60[0]; -E_006C45B0/3 .event edge, V_$0068AE60[1], V_$0068AE60[2]; -E_006C45B0 .event/or E_006C45B0/0, E_006C45B0/1, E_006C45B0/2, E_006C45B0/3; -S_006C1570 .scope module, "u_rxFifo" "RxFifo", S_006C1500; - .timescale -9; -V_$006C4760 .net "busAddress", 2, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2]; -V_$006C4798 .net "busClk", 0, 0, V_$006DF4B8[0]; -V_$006C4660 .net "busDataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006C4840 .net "busDataOut", 7, 0, V_$006A5290[0], V_$006A5290[1], V_$006A5290[2], V_$006A5290[3], V_$006A5290[4], V_$006A5290[5], V_$006A5290[6], V_$006A5290[7]; -V_$006C48A0 .net "busFifoSelect", 0, 0, V_$006DE9B8[0]; -V_$006C48D8 .net "busStrobe_i", 0, 0, V_$006607B0[0]; -V_$006C4910 .net "busWriteEn", 0, 0, V_$006A5C98[0]; -V_$006C4970 .net "dataFromFifoToBus", 7, 0, V_$006C4090[0], V_$006C4090[1], V_$006C4090[2], V_$006C4090[3], V_$006C4090[4], V_$006C4090[5], V_$006C4090[6], V_$006C4090[7]; -V_$006C49D0 .net "fifoDataIn", 7, 0, V_$006D6958[0], V_$006D6958[1], V_$006D6958[2], V_$006D6958[3], V_$006D6958[4], V_$006D6958[5], V_$006D6958[6], V_$006D6958[7]; -V_$006C4A08 .net "fifoEmpty", 0, 0, V_$006C41F0[0]; -V_$006C4A40 .net "fifoFull", 0, 0, V_$006C4260[0]; -V_$006C4AB0 .net "fifoREn", 0, 0, V_$006A76F0[0]; -V_$006C4B20 .net "fifoWEn", 0, 0, V_$006D6B90[0]; -V_$006C4A78 .net "forceEmptySyncToBusClk", 0, 0, V_$00666B38[0]; -V_$006C4B58 .net "forceEmptySyncToSpiClk", 0, 0, V_$006A9EA0[0]; -V_$006C4BD8 .net "numElementsInFifo", 15, 0, V_$006C4398[0], V_$006C4398[1], V_$006C4398[2], V_$006C4398[3], V_$006C4398[4], V_$006C4398[5], V_$006C4398[6], V_$006C4398[7], V_$006C4398[8], V_$006C4398[9], V_$006C4398[10], V_$006C4398[11], V_$006C4398[12], V_$006C4398[13], V_$006C4398[14], V_$006C4398[15]; -V_$006C4E68 .net "rstSyncToBusClk", 0, 0, V_$006DC940[0]; -V_$006C4ED0 .net "rstSyncToSpiClk", 0, 0, V_$006DCA00[0]; -V_$006C4F08 .net "spiSysClk", 0, 0, V_$006E3508[0]; -S_006C2110 .scope module, "u_fifo" "fifoRTL", S_006C1570; - .timescale -9; -V_$006C2810 .var "bufferCnt", 9, 0; -V_$006C2B10 .var "bufferInIndex", 9, 0; -V_$006C3170 .var "bufferInIndexSyncToRdClk", 9, 0; -V_$006C3508 .var "bufferInIndexToMem", 8, 0; -V_$006C3600 .var "bufferOutIndex", 9, 0; -V_$006C3D38 .var "bufferOutIndexSyncToWrClk", 9, 0; -V_$006C3740 .var "bufferOutIndexToMem", 8, 0; -V_$006C3898 .net "dataFromMem", 7, 0, V_$00639738[0], V_$00639738[1], V_$00639738[2], V_$00639738[3], V_$00639738[4], V_$00639738[5], V_$00639738[6], V_$00639738[7]; -V_$006C39F8 .net "dataIn", 7, 0, V_$006D6958[0], V_$006D6958[1], V_$006D6958[2], V_$006D6958[3], V_$006D6958[4], V_$006D6958[5], V_$006D6958[6], V_$006D6958[7]; -V_$006C4090 .var "dataOut", 7, 0; -V_$006C41F0 .var "fifoEmpty", 0, 0; -V_$006C4260 .var "fifoFull", 0, 0; -V_$006C4298 .net "fifoREn", 0, 0, V_$006A76F0[0]; -V_$006C4228 .var "fifoREnDelayed", 0, 0; -V_$006C42D0 .net "fifoWEn", 0, 0, V_$006D6B90[0]; -V_$006C4308 .net "forceEmptySyncToRdClk", 0, 0, V_$00666B38[0]; -V_$006C4360 .net "forceEmptySyncToWrClk", 0, 0, V_$006A9EA0[0]; -V_$006C4398 .var "numElementsInFifo", 15, 0; -V_$006C45D0 .net "rdClk", 0, 0, V_$006DF4B8[0]; -V_$006C4698 .net "rstSyncToRdClk", 0, 0, V_$006DC940[0]; -V_$006C46F0 .net "rstSyncToWrClk", 0, 0, V_$006DCA00[0]; -V_$006C4728 .net "wrClk", 0, 0, V_$006E3508[0]; -E_005EEF18/0 .event edge, V_$006C3600[0], V_$006C3600[1], V_$006C3600[2], V_$006C3600[3]; -E_005EEF18/1 .event edge, V_$006C3600[4], V_$006C3600[5], V_$006C3600[6], V_$006C3600[7]; -E_005EEF18/2 .event edge, V_$006C3600[8], V_$006C3600[9], V_$006C2B10[0], V_$006C2B10[1]; -E_005EEF18/3 .event edge, V_$006C2B10[2], V_$006C2B10[3], V_$006C2B10[4], V_$006C2B10[5]; -E_005EEF18/4 .event edge, V_$006C2B10[6], V_$006C2B10[7], V_$006C2B10[8], V_$006C2B10[9]; -E_005EEF18 .event/or E_005EEF18/0, E_005EEF18/1, E_005EEF18/2, E_005EEF18/3, E_005EEF18/4; -E_005EE048/0 .event edge, V_$006C3600[0], V_$006C3600[1], V_$006C3600[2], V_$006C3600[3]; -E_005EE048/1 .event edge, V_$006C3600[4], V_$006C3600[5], V_$006C3600[6], V_$006C3600[7]; -E_005EE048/2 .event edge, V_$006C3600[8], V_$006C3600[9], V_$006C3170[0], V_$006C3170[1]; -E_005EE048/3 .event edge, V_$006C3170[2], V_$006C3170[3], V_$006C3170[4], V_$006C3170[5]; -E_005EE048/4 .event edge, V_$006C3170[6], V_$006C3170[7], V_$006C3170[8], V_$006C3170[9]; -E_005EE048 .event/or E_005EE048/0, E_005EE048/1, E_005EE048/2, E_005EE048/3, E_005EE048/4; -S_006C2228 .scope module, "u_dpMem_dc" "dpMem_dc", S_006C2110; - .timescale -9; -V_$006AC480 .net "addrIn", 8, 0, V_$006C3508[0], V_$006C3508[1], V_$006C3508[2], V_$006C3508[3], V_$006C3508[4], V_$006C3508[5], V_$006C3508[6], V_$006C3508[7], V_$006C3508[8]; -V_$006AC4E0 .net "addrOut", 8, 0, V_$006C3740[0], V_$006C3740[1], V_$006C3740[2], V_$006C3740[3], V_$006C3740[4], V_$006C3740[5], V_$006C3740[6], V_$006C3740[7], V_$006C3740[8]; -V_$006AD2C8 .net "dataIn", 7, 0, V_$006D6958[0], V_$006D6958[1], V_$006D6958[2], V_$006D6958[3], V_$006D6958[4], V_$006D6958[5], V_$006D6958[6], V_$006D6958[7]; -V_$00639738 .var "dataOut", 7, 0; -V_$00615800 .net "rdClk", 0, 0, V_$006DF4B8[0]; -V_$005E3868 .net "readEn", 0, 0, V_$006A76F0[0]; -V_$006C2778 .net "wrClk", 0, 0, V_$006E3508[0]; -V_$006C27D8 .net "writeEn", 0, 0, V_$006D6B90[0]; -M_$005D1E00 .mem "buffer", 7,0, 0,511; -S_006C1658 .scope module, "u_RxfifoBI" "RxfifoBI", S_006C1570; - .timescale -9; -V_$006A4EE8 .net "address", 2, 0, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2]; -V_$006A6E08 .net "busClk", 0, 0, V_$006DF4B8[0]; -V_$0065A890 .net "busDataIn", 7, 0, V_$0069AA18[0], V_$0069AA18[1], V_$0069AA18[2], V_$0069AA18[3], V_$0069AA18[4], V_$0069AA18[5], V_$0069AA18[6], V_$0069AA18[7]; -V_$006A5290 .var "busDataOut", 7, 0; -V_$00660078 .net "fifoDataIn", 7, 0, V_$006C4090[0], V_$006C4090[1], V_$006C4090[2], V_$006C4090[3], V_$006C4090[4], V_$006C4090[5], V_$006C4090[6], V_$006C4090[7]; -V_$006A76F0 .var "fifoREn", 0, 0; -V_$006A7BA8 .net "fifoSelect", 0, 0, V_$006DE9B8[0]; -V_$006A7DD8 .var "forceEmpty", 0, 0; -V_$00666B38 .var "forceEmptyShift", 5, 0; -V_$006A8D90 .net "forceEmptySyncToBusClk", 0, 0, V_$00666B38[0]; -V_$006A9EA0 .var "forceEmptySyncToSpiClk", 0, 0; -V_$006A8850 .var "forceEmptySyncToUsbClkFirst", 0, 0; -V_$00666678 .net "numElementsInFifo", 15, 0, V_$006C4398[0], V_$006C4398[1], V_$006C4398[2], V_$006C4398[3], V_$006C4398[4], V_$006C4398[5], V_$006C4398[6], V_$006C4398[7], V_$006C4398[8], V_$006C4398[9], V_$006C4398[10], V_$006C4398[11], V_$006C4398[12], V_$006C4398[13], V_$006C4398[14], V_$006C4398[15]; -V_$0065D6E8 .net "rstSyncToBusClk", 0, 0, V_$006DC940[0]; -V_$006AACA0 .net "spiSysClk", 0, 0, V_$006E3508[0]; -V_$006AA8A8 .net "strobe_i", 0, 0, V_$006607B0[0]; -V_$006685B0 .net "writeEn", 0, 0, V_$006A5C98[0]; -E_003DDB00/0 .event edge, V_$006DE9B8[0], V_$006607B0[0], V_$006A5C98[0], V_$0068AE60[0]; -E_003DDB00/1 .event edge, V_$0068AE60[1], V_$0068AE60[2]; -E_003DDB00 .event/or E_003DDB00/0, E_003DDB00/1; -E_003DDC30/0 .event edge, V_$006C4398[0], V_$006C4398[1], V_$006C4398[2], V_$006C4398[3]; -E_003DDC30/1 .event edge, V_$006C4398[4], V_$006C4398[5], V_$006C4398[6], V_$006C4398[7]; -E_003DDC30/2 .event edge, V_$006C4398[8], V_$006C4398[9], V_$006C4398[10], V_$006C4398[11]; -E_003DDC30/3 .event edge, V_$006C4398[12], V_$006C4398[13], V_$006C4398[14], V_$006C4398[15]; -E_003DDC30/4 .event edge, V_$006C4090[0], V_$006C4090[1], V_$006C4090[2], V_$006C4090[3]; -E_003DDC30/5 .event edge, V_$006C4090[4], V_$006C4090[5], V_$006C4090[6], V_$006C4090[7]; -E_003DDC30/6 .event edge, V_$0068AE60[0], V_$0068AE60[1], V_$0068AE60[2]; -E_003DDC30 .event/or E_003DDC30/0, E_003DDC30/1, E_003DDC30/2, E_003DDC30/3, E_003DDC30/4, E_003DDC30/5, E_003DDC30/6; -E_003DE478 .event posedge, V_$006E3508[0]; -S_00624D88 .scope module, "u_wb_master_model" "wb_master_model", S_006338F0; - .timescale -9; -V_$00689E98 .net "ack", 0, 0, V_$006DE038[0]; -V_$0068AE60 .var "adr", 7, 0; -V_$00698EA8 .net "clk", 0, 0, V_$006DF4B8[0]; -V_$0069A858 .var "cyc", 0, 0; -V_$00657510 .net "din", 7, 0, V_$006DE8E8[0], V_$006DE8E8[1], V_$006DE8E8[2], V_$006DE8E8[3], V_$006DE8E8[4], V_$006DE8E8[5], V_$006DE8E8[6], V_$006DE8E8[7]; -V_$0069AA18 .var "dout", 7, 0; -V_$0069FC50 .net "err", 0, 0, C<0>; -V_$006A05F8 .var "q", 7, 0; -V_$006A0F58 .net "rst", 0, 0, V_$006E0BD0[0]; -V_$006A10B0 .net "rty", 0, 0, C<0>; -V_$006A4238 .var "sel", 0, 0; -V_$006607B0 .var "stb", 0, 0; -V_$006A5C98 .var "we", 0, 0; -S_005FFF10 .scope task, "wb_cmp" "testHarness.u_wb_master_model.wb_cmp", S_00624D88; - .timescale -9; -V_$0067FD60 .var "a", 7, 0; -V_$00682498 .var "d_exp", 7, 0; -V_$00682CF8 .var/i "delay", 31, 0; -TD_testHarness.u_wb_master_model.wb_cmp ; - %load/v 32, V_$00682CF8[0], 32; - %set/v V_$0067ECA0[0], 32, 32; - %load/v 32, V_$0067FD60[0], 8; - %set/v V_$0067E7C8[0], 32, 8; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006A05F8[0], 32, 8; - %load/v 32, V_$00682498[0], 8; - %load/v 40, V_$006A05F8[0], 8; - %cmp/u 32, 40, 8; - %inv 6, 1; - %mov 32, 6, 1; - %jmp/0xz T_0.0, 32; - %vpi_call "$display", "Data compare error. Received %h, expected %h at time %t", V_$006A05F8, V_$00682498, $time; -T_0.0 ; - %end; -S_003D31C0 .scope task, "wb_read" "testHarness.u_wb_master_model.wb_read", S_00624D88; - .timescale -9; -V_$0067E7C8 .var "a", 7, 0; -V_$0067EE18 .var "d", 7, 0; -V_$0067ECA0 .var/i "delay", 31, 0; -TD_testHarness.u_wb_master_model.wb_read ; - %load/v 32, V_$0067ECA0[0], 32; -T_1.2 %cmp/u 0, 32, 32; - %jmp/0xz T_1.3, 5; - %add 32, 1, 32; - %wait E_003DE0F8; - %jmp T_1.2; -T_1.3 ; - %delay 1000; - %load/v 32, V_$0067E7C8[0], 8; - %set/v V_$0068AE60[0], 32, 8; - %set/v V_$0069AA18[0], 2, 8; - %set V_$0069A858[0], 1; - %set V_$006607B0[0], 1; - %set V_$006A5C98[0], 0; - %set V_$006A4238[0], 1; - %wait E_003DE0F8; -T_1.4 ; - %load 32, V_$00689E98[0]; - %inv 32, 1; - %jmp/0xz T_1.5, 32; - %wait E_003DE0F8; - %jmp T_1.4; -T_1.5 ; - %delay 1000; - %set V_$0069A858[0], 0; - %set V_$006607B0[0], 2; - %set/v V_$0068AE60[0], 2, 8; - %set/v V_$0069AA18[0], 2, 8; - %set V_$006A5C98[0], 2; - %set V_$006A4238[0], 2; - %load 32, V_$00657510[0]; - %load 33, V_$00657510[1]; - %load 34, V_$00657510[2]; - %load 35, V_$00657510[3]; - %load 36, V_$00657510[4]; - %load 37, V_$00657510[5]; - %load 38, V_$00657510[6]; - %load 39, V_$00657510[7]; - %set/v V_$0067EE18[0], 32, 8; - %end; -S_0062CD78 .scope task, "wb_write" "testHarness.u_wb_master_model.wb_write", S_00624D88; - .timescale -9; -V_$0067C5F0 .var "a", 7, 0; -V_$0067D930 .var "d", 7, 0; -V_$0067E2E8 .var/i "delay", 31, 0; -E_003DE0F8 .event posedge, V_$006DF4B8[0]; -TD_testHarness.u_wb_master_model.wb_write ; - %load/v 32, V_$0067E2E8[0], 32; -T_2.6 %cmp/u 0, 32, 32; - %jmp/0xz T_2.7, 5; - %add 32, 1, 32; - %wait E_003DE0F8; - %jmp T_2.6; -T_2.7 ; - %delay 1000; - %load/v 32, V_$0067C5F0[0], 8; - %set/v V_$0068AE60[0], 32, 8; - %load/v 32, V_$0067D930[0], 8; - %set/v V_$0069AA18[0], 32, 8; - %set V_$0069A858[0], 1; - %set V_$006607B0[0], 1; - %set V_$006A5C98[0], 1; - %set V_$006A4238[0], 1; - %wait E_003DE0F8; -T_2.8 ; - %load 32, V_$00689E98[0]; - %inv 32, 1; - %jmp/0xz T_2.9, 32; - %wait E_003DE0F8; - %jmp T_2.8; -T_2.9 ; - %delay 1000; - %set V_$0069A858[0], 0; - %set V_$006607B0[0], 2; - %set/v V_$0068AE60[0], 2, 8; - %set/v V_$0069AA18[0], 2, 8; - %set V_$006A5C98[0], 2; - %set V_$006A4238[0], 2; - %end; -S_00633880 .scope module, "u_sdModel" "sdModel", S_006338F0; - .timescale -9; -V_$006B0438 .var "cnt", 7, 0; -V_$006B0578 .var "respByte", 7, 0; -V_$006B0718 .var "rxByte", 7, 0; -V_$006B08C8 .var "smSt", 1, 0; -V_$0066EE28 .net "spiCS_n", 0, 0, L_006E3660; -V_$0063FB48 .net "spiClk", 0, 0, V_$006CAA28[0]; -V_$0067A3E8 .net "spiDataIn", 0, 0, V_$006CAAD8[0]; -V_$00644A08 .var "spiDataOut", 0, 0; -S_005C89B8 .scope task, "setRespByte" "testHarness.u_sdModel.setRespByte", S_00633880; - .timescale -9; -V_$006B0310 .var "dataByte", 7, 0; -TD_testHarness.u_sdModel.setRespByte ; - %load/v 32, V_$006B0310[0], 8; - %set/v V_$006B0578[0], 32, 8; - %end; -S_006399E8 .scope task, "txRxByte" "testHarness.u_sdModel.txRxByte", S_00633880; - .timescale -9; -V_$006AFF68 .var/i "i", 31, 0; -V_$006B00C0 .var "rxData", 7, 0; -V_$006B01E8 .var "txData", 7, 0; -E_00639FE8 .event negedge, V_$006CAA28[0]; -E_00619EB0 .event posedge, V_$006CAA28[0]; -TD_testHarness.u_sdModel.txRxByte ; - %load/v 32, V_$006B01E8[7], 1; - %assign V_$00644A08[0], 0, 32; - %set/v V_$006AFF68[0], 0, 32; -T_4.10 ; - %load/v 32, V_$006AFF68[0], 32; - %mov 64, 1, 3; - %mov 67, 0, 29; - %cmp/s 32, 64, 32; - %or 5, 4, 1; - %jmp/0xz T_4.11, 5; - %wait E_00619EB0; - %load 32, V_$0067A3E8[0]; - %assign V_$006B00C0[0], 0, 32; - %load/v 32, V_$006B00C0[0], 8; - %ix/load 0, 1; - %shiftl/i0 32, 8; - %set/v V_$006B00C0[0], 32, 8; - %wait E_00639FE8; - %load/v 32, V_$006B01E8[6], 1; - %assign V_$00644A08[0], 0, 32; - %load/v 32, V_$006B01E8[0], 8; - %ix/load 0, 1; - %shiftl/i0 32, 8; - %set/v V_$006B01E8[0], 32, 8; - %load/v 32, V_$006AFF68[0], 32; - %addi 32, 1, 32; - %set/v V_$006AFF68[0], 32, 32; - %jmp T_4.10; -T_4.11 ; - %end; - .scope S_005FC090; -T_5 ; - %vpi_call "$write", "\n\n"; - %delay 1000000; - %vpi_call "$write", "Testing register read/write\n"; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 3; - %set/v V_$0067C5F0[3], 0, 5; - %set/v V_$0067D930[0], 0, 3; - %set/v V_$0067D930[3], 1, 4; - %set V_$0067D930[7], 0; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 0, 3; - %set V_$0067C5F0[3], 1; - %set/v V_$0067C5F0[4], 0, 4; - %set V_$0067D930[0], 0; - %set/v V_$0067D930[1], 1, 2; - %set V_$0067D930[3], 0; - %set V_$0067D930[4], 1; - %set V_$0067D930[5], 0; - %set V_$0067D930[6], 1; - %set V_$0067D930[7], 0; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 1; - %set/v V_$0067C5F0[1], 0, 2; - %set V_$0067C5F0[3], 1; - %set/v V_$0067C5F0[4], 0, 4; - %set/v V_$0067D930[0], 0, 2; - %set V_$0067D930[2], 1; - %set V_$0067D930[3], 0; - %set/v V_$0067D930[4], 1, 2; - %set/v V_$0067D930[6], 0, 2; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set V_$0067C5F0[1], 1; - %set V_$0067C5F0[2], 0; - %set V_$0067C5F0[3], 1; - %set/v V_$0067C5F0[4], 0, 4; - %set V_$0067D930[0], 0; - %set V_$0067D930[1], 1; - %set/v V_$0067D930[2], 0, 2; - %set V_$0067D930[4], 1; - %set/v V_$0067D930[5], 0, 3; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$00682CF8[0], 1; - %set V_$00682CF8[1], 0; - %set/v V_$00682CF8[2], 0, 30; - %set/v V_$0067FD60[0], 1, 3; - %set/v V_$0067FD60[3], 0, 5; - %set/v V_$00682498[0], 0, 3; - %set/v V_$00682498[3], 1, 4; - %set V_$00682498[7], 0; - %fork TD_testHarness.u_wb_master_model.wb_cmp, S_005FFF10; - %join; - %set V_$00682CF8[0], 1; - %set V_$00682CF8[1], 0; - %set/v V_$00682CF8[2], 0, 30; - %set/v V_$0067FD60[0], 0, 3; - %set V_$0067FD60[3], 1; - %set/v V_$0067FD60[4], 0, 4; - %set V_$00682498[0], 0; - %set/v V_$00682498[1], 1, 2; - %set V_$00682498[3], 0; - %set V_$00682498[4], 1; - %set V_$00682498[5], 0; - %set V_$00682498[6], 1; - %set V_$00682498[7], 0; - %fork TD_testHarness.u_wb_master_model.wb_cmp, S_005FFF10; - %join; - %set V_$00682CF8[0], 1; - %set V_$00682CF8[1], 0; - %set/v V_$00682CF8[2], 0, 30; - %set V_$0067FD60[0], 1; - %set/v V_$0067FD60[1], 0, 2; - %set V_$0067FD60[3], 1; - %set/v V_$0067FD60[4], 0, 4; - %set/v V_$00682498[0], 0, 2; - %set V_$00682498[2], 1; - %set V_$00682498[3], 0; - %set/v V_$00682498[4], 1, 2; - %set/v V_$00682498[6], 0, 2; - %fork TD_testHarness.u_wb_master_model.wb_cmp, S_005FFF10; - %join; - %set V_$00682CF8[0], 1; - %set V_$00682CF8[1], 0; - %set/v V_$00682CF8[2], 0, 30; - %set V_$0067FD60[0], 0; - %set V_$0067FD60[1], 1; - %set V_$0067FD60[2], 0; - %set V_$0067FD60[3], 1; - %set/v V_$0067FD60[4], 0, 4; - %set V_$00682498[0], 0; - %set V_$00682498[1], 1; - %set/v V_$00682498[2], 0, 2; - %set V_$00682498[4], 1; - %set/v V_$00682498[5], 0, 3; - %fork TD_testHarness.u_wb_master_model.wb_cmp, S_005FFF10; - %join; - %vpi_call "$write", "Testing SPI bus direct access\n"; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set V_$0067C5F0[1], 1; - %set/v V_$0067C5F0[2], 0, 6; - %set/v V_$0067D930[0], 0, 8; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set/v V_$0067C5F0[1], 1, 2; - %set/v V_$0067C5F0[3], 0, 5; - %set/v V_$0067D930[0], 1, 5; - %set V_$0067D930[5], 0; - %set V_$0067D930[6], 1; - %set V_$0067D930[7], 0; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 2; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; -T_5.0 ; - %load/v 32, V_$006AD848[0], 1; - %jmp/0xz T_5.1, 32; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %jmp T_5.0; -T_5.1 ; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set/v V_$0067C5F0[1], 1, 2; - %set/v V_$0067C5F0[3], 0, 5; - %set V_$0067D930[0], 0; - %set V_$0067D930[1], 1; - %set V_$0067D930[2], 0; - %set V_$0067D930[3], 1; - %set V_$0067D930[4], 0; - %set V_$0067D930[5], 1; - %set V_$0067D930[6], 0; - %set V_$0067D930[7], 1; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 2; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; -T_5.2 ; - %load/v 32, V_$006AD848[0], 1; - %jmp/0xz T_5.3, 32; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %jmp T_5.2; -T_5.3 ; - %vpi_call "$write", "Testing SD init\n"; - %set V_$006B0310[0], 1; - %set/v V_$006B0310[1], 0, 7; - %fork TD_testHarness.u_sdModel.setRespByte, S_005C89B8; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set V_$0067C5F0[1], 1; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 2; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %delay 60000000; - %set/v V_$006B0310[0], 0, 8; - %fork TD_testHarness.u_sdModel.setRespByte, S_005C89B8; - %join; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; -T_5.4 ; - %load/v 32, V_$006AD848[0], 1; - %jmp/0xz T_5.5, 32; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set/v V_$0067E7C8[0], 0, 2; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %jmp T_5.4; -T_5.5 ; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set V_$0067E7C8[0], 1; - %set V_$0067E7C8[1], 0; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %load/v 32, V_$006AD848[0], 2; - %cmpi/u 32, 0, 2; - %jmp/0xz T_5.6, 4; - %vpi_call "$write", "SD init test passed\n"; - %jmp T_5.7; -T_5.6 ; - %load/v 32, V_$006AD848[0], 2; - %vpi_call "$write", "---- ERROR: SD init test failed. Error code = 0x%01x\n", T<32,2,u>; -T_5.7 ; - %vpi_call "$write", "Testing block write\n"; - %set/v V_$006AFD38[0], 0, 8; - %set/v V_$006AFE40[0], 0, 32; -T_5.8 ; - %load/v 32, V_$006AFE40[0], 32; - %mov 64, 1, 9; - %mov 73, 0, 23; - %cmp/s 32, 64, 32; - %or 5, 4, 1; - %jmp/0xz T_5.9, 5; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 0, 5; - %set V_$0067C5F0[5], 1; - %set/v V_$0067C5F0[6], 0, 2; - %load/v 32, V_$006AFD38[0], 8; - %set/v V_$0067D930[0], 32, 8; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %load/v 32, V_$006AFD38[0], 8; - %addi 32, 1, 8; - %set/v V_$006AFD38[0], 32, 8; - %load/v 32, V_$006AFE40[0], 32; - %addi 32, 1, 32; - %set/v V_$006AFE40[0], 32, 32; - %jmp T_5.8; -T_5.9 ; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set V_$0067C5F0[1], 1; - %set/v V_$0067C5F0[2], 0, 6; - %set/v V_$0067D930[0], 1, 2; - %set/v V_$0067D930[2], 0, 6; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 2; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %delay 100000000; - %set V_$006B0310[0], 1; - %set V_$006B0310[1], 0; - %set V_$006B0310[2], 1; - %set/v V_$006B0310[3], 0, 5; - %fork TD_testHarness.u_sdModel.setRespByte, S_005C89B8; - %join; - %delay 400000000; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set V_$0067E7C8[0], 1; - %set V_$0067E7C8[1], 0; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %load/v 32, V_$006AD848[4], 2; - %cmpi/u 32, 0, 2; - %jmp/0xz T_5.10, 4; - %vpi_call "$write", "SD block write passed\n"; - %jmp T_5.11; -T_5.10 ; - %load/v 32, V_$006AD848[4], 2; - %vpi_call "$write", "---- ERROR: SD block write failed. Error code = 0x%01x\n", T<32,2,u>; -T_5.11 ; - %vpi_call "$write", "Testing block read\n"; - %set/v V_$006B0310[0], 0, 8; - %fork TD_testHarness.u_sdModel.setRespByte, S_005C89B8; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set V_$0067C5F0[0], 0; - %set V_$0067C5F0[1], 1; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 0; - %set V_$0067D930[1], 1; - %set/v V_$0067D930[2], 0, 6; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 1, 2; - %set/v V_$0067C5F0[2], 0, 6; - %set V_$0067D930[0], 1; - %set/v V_$0067D930[1], 0, 7; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %delay 100000000; - %set V_$006B0310[0], 1; - %set V_$006B0310[1], 0; - %set V_$006B0310[2], 1; - %set/v V_$006B0310[3], 0, 5; - %fork TD_testHarness.u_sdModel.setRespByte, S_005C89B8; - %join; - %delay 400000000; - %set V_$0067ECA0[0], 1; - %set V_$0067ECA0[1], 0; - %set/v V_$0067ECA0[2], 0, 30; - %set V_$0067E7C8[0], 1; - %set V_$0067E7C8[1], 0; - %set V_$0067E7C8[2], 1; - %set/v V_$0067E7C8[3], 0, 5; - %fork TD_testHarness.u_wb_master_model.wb_read, S_003D31C0; - %join; - %load/v 32, V_$0067EE18[0], 8; - %set/v V_$006AD848[0], 32, 8; - %load/v 32, V_$006AD848[2], 2; - %cmpi/u 32, 0, 2; - %jmp/0xz T_5.12, 4; - %vpi_call "$write", "SD block read passed\n"; - %jmp T_5.13; -T_5.12 ; - %load/v 32, V_$006AD848[2], 2; - %vpi_call "$write", "---- ERROR: SD block read failed. Error code = 0x%01x\n", T<32,2,u>; -T_5.13 ; - %set/v V_$006AFE40[0], 0, 32; -T_5.14 ; - %load/v 32, V_$006AFE40[0], 32; - %mov 64, 1, 9; - %mov 73, 0, 23; - %cmp/s 32, 64, 32; - %or 5, 4, 1; - %jmp/0xz T_5.15, 5; - %set V_$0067E2E8[0], 1; - %set V_$0067E2E8[1], 0; - %set/v V_$0067E2E8[2], 0, 30; - %set/v V_$0067C5F0[0], 0, 5; - %set V_$0067C5F0[5], 1; - %set/v V_$0067C5F0[6], 0, 2; - %load/v 32, V_$006AFD38[0], 8; - %set/v V_$0067D930[0], 32, 8; - %fork TD_testHarness.u_wb_master_model.wb_write, S_0062CD78; - %join; - %load/v 32, V_$006AFD38[0], 8; - %addi 32, 1, 8; - %set/v V_$006AFD38[0], 32, 8; - %load/v 32, V_$006AFE40[0], 32; - %addi 32, 1, 32; - %set/v V_$006AFE40[0], 32, 32; - %jmp T_5.14; -T_5.15 ; - %vpi_call "$write", "Finished all tests\n"; - %vpi_call "$stop"; - %end; - .thread T_5; - .scope S_006DD638; -T_6 ; - %wait E_006DDE28; - %assign V_$006DE140[0], 0, 0; - %assign V_$006DE9B8[0], 0, 0; - %assign V_$006DEA20[0], 0, 0; - %load 32, V_$006DE0A8[0]; - %load 33, V_$006DE0A8[1]; - %load 34, V_$006DE0A8[2]; - %load 35, V_$006DE0A8[3]; - %load 36, V_$006DE0A8[4]; - %load 37, V_$006DE0A8[5]; - %load 38, V_$006DE0A8[6]; - %load 39, V_$006DE0A8[7]; - %mov 40, 0, 4; - %mov 44, 1, 4; - %and 32, 40, 8; - %cmpi/u 32, 0, 8; - %jmp/1 T_6.0, 6; - %cmpi/u 32, 16, 8; - %jmp/1 T_6.1, 6; - %cmpi/u 32, 32, 8; - %jmp/1 T_6.2, 6; - %ix/load 0, 8; - %assign/v0 V_$006DE8E8[0], 0, 0; - %jmp T_6.4; -T_6.0 ; - %assign V_$006DE140[0], 0, 1; - %load 32, V_$006DE178[0]; - %load 33, V_$006DE178[1]; - %load 34, V_$006DE178[2]; - %load 35, V_$006DE178[3]; - %load 36, V_$006DE178[4]; - %load 37, V_$006DE178[5]; - %load 38, V_$006DE178[6]; - %load 39, V_$006DE178[7]; - %ix/load 0, 8; - %assign/v0 V_$006DE8E8[0], 0, 32; - %jmp T_6.4; -T_6.1 ; - %assign V_$006DE9B8[0], 0, 1; - %load 32, V_$006DE280[0]; - %load 33, V_$006DE280[1]; - %load 34, V_$006DE280[2]; - %load 35, V_$006DE280[3]; - %load 36, V_$006DE280[4]; - %load 37, V_$006DE280[5]; - %load 38, V_$006DE280[6]; - %load 39, V_$006DE280[7]; - %ix/load 0, 8; - %assign/v0 V_$006DE8E8[0], 0, 32; - %jmp T_6.4; -T_6.2 ; - %assign V_$006DEA20[0], 0, 1; - %load 32, V_$006DE3A0[0]; - %load 33, V_$006DE3A0[1]; - %load 34, V_$006DE3A0[2]; - %load 35, V_$006DE3A0[3]; - %load 36, V_$006DE3A0[4]; - %load 37, V_$006DE3A0[5]; - %load 38, V_$006DE3A0[6]; - %load 39, V_$006DE3A0[7]; - %ix/load 0, 8; - %assign/v0 V_$006DE8E8[0], 0, 32; - %jmp T_6.4; -T_6.4 ; - %jmp T_6; - .thread T_6, $push; - .scope S_006DD638; -T_7 ; - %wait E_003DE0F8; - %load 32, V_$006DE920[0]; - %assign V_$006DDE60[0], 0, 32; - %jmp T_7; - .thread T_7; - .scope S_006DD638; -T_8 ; - %wait E_006DDDF8; - %load 32, V_$006DE920[0]; - %assign V_$006DDEE0[0], 0, 32; - %jmp T_8; - .thread T_8, $push; - .scope S_006DD638; -T_9 ; - %wait E_006DDDA0; - %load 32, V_$006DEA88[0]; - %cmpi/u 32, 0, 1; - %mov 32, 4, 1; - %load 33, V_$006DE0A8[0]; - %load 34, V_$006DE0A8[1]; - %load 35, V_$006DE0A8[2]; - %load 36, V_$006DE0A8[3]; - %load 37, V_$006DE0A8[4]; - %load 38, V_$006DE0A8[5]; - %load 39, V_$006DE0A8[6]; - %load 40, V_$006DE0A8[7]; - %cmpi/u 33, 16, 8; - %mov 33, 4, 1; - %load 34, V_$006DE0A8[0]; - %load 35, V_$006DE0A8[1]; - %load 36, V_$006DE0A8[2]; - %load 37, V_$006DE0A8[3]; - %load 38, V_$006DE0A8[4]; - %load 39, V_$006DE0A8[5]; - %load 40, V_$006DE0A8[6]; - %load 41, V_$006DE0A8[7]; - %cmpi/u 34, 32, 8; - %mov 34, 4, 1; - %or 33, 34, 1; - %and 32, 33, 1; - %jmp/0xz T_9.0, 32; - %load/v 32, V_$006DDE60[0], 1; - %assign V_$006DE038[0], 0, 32; - %jmp T_9.1; -T_9.0 ; - %load/v 32, V_$006DDEE0[0], 1; - %assign V_$006DE038[0], 0, 32; -T_9.1 ; - %jmp T_9; - .thread T_9, $push; - .scope S_006DBE08; -T_10 ; - %wait E_003DE0F8; - %load/v 32, V_$006DC940[0], 1; - %jmp/0xz T_10.0, 32; - %assign V_$006DDC18[0], 0, 0; - %assign V_$006DDC18[1], 0, 0; - %assign V_$006DD6A8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DD380[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DCA38[0], 0, 0; - %jmp T_10.1; -T_10.0 ; - %load 32, V_$006DDD18[0]; - %load 33, V_$006DC5B0[0]; - %and 32, 33, 1; - %load 33, V_$006DDCE0[0]; - %and 32, 33, 1; - %load 33, V_$006DCEF8[0]; - %load 34, V_$006DCEF8[1]; - %load 35, V_$006DCEF8[2]; - %load 36, V_$006DCEF8[3]; - %load 37, V_$006DCEF8[4]; - %load 38, V_$006DCEF8[5]; - %load 39, V_$006DCEF8[6]; - %load 40, V_$006DCEF8[7]; - %cmpi/u 33, 1, 8; - %mov 33, 4, 1; - %and 32, 33, 1; - %load 33, V_$006DC5E8[1]; - %and 32, 33, 1; - %jmp/0xz T_10.2, 32; - %assign V_$006DC6B8[0], 0, 1; - %jmp T_10.3; -T_10.2 ; - %assign V_$006DC6B8[0], 0, 0; -T_10.3 ; - %load 32, V_$006DDD18[0]; - %load 33, V_$006DC5B0[0]; - %and 32, 33, 1; - %load 33, V_$006DDCE0[0]; - %and 32, 33, 1; - %load 33, V_$006DCEF8[0]; - %load 34, V_$006DCEF8[1]; - %load 35, V_$006DCEF8[2]; - %load 36, V_$006DCEF8[3]; - %load 37, V_$006DCEF8[4]; - %load 38, V_$006DCEF8[5]; - %load 39, V_$006DCEF8[6]; - %load 40, V_$006DCEF8[7]; - %cmpi/u 33, 3, 8; - %mov 33, 4, 1; - %and 32, 33, 1; - %load 33, V_$006DC5E8[0]; - %and 32, 33, 1; - %jmp/0xz T_10.4, 32; - %assign V_$006DD6A8[0], 0, 1; - %jmp T_10.5; -T_10.4 ; - %assign V_$006DD6A8[0], 0, 0; -T_10.5 ; - %load 32, V_$006DDD18[0]; - %load 33, V_$006DC5B0[0]; - %and 32, 33, 1; - %load 33, V_$006DDCE0[0]; - %and 32, 33, 1; - %jmp/0xz T_10.6, 32; - %load 32, V_$006DCEF8[0]; - %load 33, V_$006DCEF8[1]; - %load 34, V_$006DCEF8[2]; - %load 35, V_$006DCEF8[3]; - %load 36, V_$006DCEF8[4]; - %load 37, V_$006DCEF8[5]; - %load 38, V_$006DCEF8[6]; - %load 39, V_$006DCEF8[7]; - %cmpi/u 32, 2, 8; - %jmp/1 T_10.8, 6; - %cmpi/u 32, 7, 8; - %jmp/1 T_10.9, 6; - %cmpi/u 32, 8, 8; - %jmp/1 T_10.10, 6; - %cmpi/u 32, 9, 8; - %jmp/1 T_10.11, 6; - %cmpi/u 32, 10, 8; - %jmp/1 T_10.12, 6; - %cmpi/u 32, 11, 8; - %jmp/1 T_10.13, 6; - %cmpi/u 32, 6, 8; - %jmp/1 T_10.14, 6; - %jmp T_10.15; -T_10.8 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %assign V_$006DDC18[0], 0, 32; - %assign V_$006DDC18[1], 0, 33; - %jmp T_10.15; -T_10.9 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DBED8[0], 0, 32; - %jmp T_10.15; -T_10.10 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DBED8[8], 0, 32; - %jmp T_10.15; -T_10.11 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DBED8[16], 0, 32; - %jmp T_10.15; -T_10.12 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DBED8[24], 0, 32; - %jmp T_10.15; -T_10.13 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DCA38[0], 0, 32; - %jmp T_10.15; -T_10.14 ; - %load 32, V_$006DC5E8[0]; - %load 33, V_$006DC5E8[1]; - %load 34, V_$006DC5E8[2]; - %load 35, V_$006DC5E8[3]; - %load 36, V_$006DC5E8[4]; - %load 37, V_$006DC5E8[5]; - %load 38, V_$006DC5E8[6]; - %load 39, V_$006DC5E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006DD380[0], 0, 32; - %jmp T_10.15; -T_10.15 ; -T_10.6 ; -T_10.1 ; - %jmp T_10; - .thread T_10; - .scope S_006DBE08; -T_11 ; - %wait E_006DBEB8; - %load 32, V_$006DCEF8[0]; - %load 33, V_$006DCEF8[1]; - %load 34, V_$006DCEF8[2]; - %load 35, V_$006DCEF8[3]; - %load 36, V_$006DCEF8[4]; - %load 37, V_$006DCEF8[5]; - %load 38, V_$006DCEF8[6]; - %load 39, V_$006DCEF8[7]; - %cmpi/u 32, 0, 8; - %jmp/1 T_11.0, 6; - %cmpi/u 32, 2, 8; - %jmp/1 T_11.1, 6; - %cmpi/u 32, 3, 8; - %jmp/1 T_11.2, 6; - %cmpi/u 32, 4, 8; - %jmp/1 T_11.3, 6; - %cmpi/u 32, 5, 8; - %jmp/1 T_11.4, 6; - %cmpi/u 32, 7, 8; - %jmp/1 T_11.5, 6; - %cmpi/u 32, 8, 8; - %jmp/1 T_11.6, 6; - %cmpi/u 32, 9, 8; - %jmp/1 T_11.7, 6; - %cmpi/u 32, 10, 8; - %jmp/1 T_11.8, 6; - %cmpi/u 32, 11, 8; - %jmp/1 T_11.9, 6; - %cmpi/u 32, 6, 8; - %jmp/1 T_11.10, 6; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 0; - %jmp T_11.12; -T_11.0 ; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 0; - %jmp T_11.12; -T_11.1 ; - %load/v 32, V_$006DDC18[0], 2; - %mov 34, 0, 6; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.2 ; - %load/v 32, V_$006DD6A8[0], 1; - %mov 33, 0, 7; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.3 ; - %load/v 32, V_$006DDAA8[0], 1; - %mov 33, 0, 7; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.4 ; - %load/v 32, V_$006DC440[0], 2; - %load/v 34, V_$006DC4D0[0], 2; - %load/v 36, V_$006DCE80[0], 2; - %mov 38, 0, 2; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.5 ; - %load/v 32, V_$006DBED8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.6 ; - %load/v 32, V_$006DBED8[8], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.7 ; - %load/v 32, V_$006DBED8[16], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.8 ; - %load/v 32, V_$006DBED8[24], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.9 ; - %load/v 32, V_$006DCA38[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.10 ; - %load/v 32, V_$006DD078[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DC658[0], 0, 32; - %jmp T_11.12; -T_11.12 ; - %jmp T_11; - .thread T_11, $push; - .scope S_006DBE08; -T_12 ; - %wait E_003DE0F8; - %load 32, V_$006DC620[0]; - %load/v 33, V_$006DC6B8[0], 1; - %or 32, 33, 1; - %jmp/0xz T_12.0, 32; - %ix/load 0, 6; - %assign/v0 V_$006DC710[0], 0, 1; - %jmp T_12.1; -T_12.0 ; - %load/v 32, V_$006DC710[1], 5; - %mov 37, 0, 1; - %ix/load 0, 6; - %assign/v0 V_$006DC710[0], 0, 32; -T_12.1 ; - %jmp T_12; - .thread T_12; - .scope S_006DBE08; -T_13 ; - %wait E_006DBE78; - %load/v 32, V_$006DC710[0], 1; - %assign V_$006DC940[0], 0, 32; - %jmp T_13; - .thread T_13, $push; - .scope S_006DBE08; -T_14 ; - %wait E_003DE478; - %load/v 32, V_$006DC940[0], 1; - %assign V_$006DC978[0], 0, 32; - %load/v 32, V_$006DC978[0], 1; - %assign V_$006DCA00[0], 0, 32; - %jmp T_14; - .thread T_14; - .scope S_006DBE08; -T_15 ; - %wait E_003DE0F8; - %load/v 32, V_$006DC940[0], 1; - %jmp/0xz T_15.0, 32; - %ix/load 0, 6; - %assign/v0 V_$006DD6E0[0], 0, 0; - %jmp T_15.1; -T_15.0 ; - %load/v 32, V_$006DD6A8[0], 1; - %jmp/0xz T_15.2, 32; - %ix/load 0, 6; - %assign/v0 V_$006DD6E0[0], 0, 1; - %jmp T_15.3; -T_15.2 ; - %load/v 32, V_$006DD6E0[1], 5; - %mov 37, 0, 1; - %ix/load 0, 6; - %assign/v0 V_$006DD6E0[0], 0, 32; -T_15.3 ; -T_15.1 ; - %jmp T_15; - .thread T_15; - .scope S_006DBE08; -T_16 ; - %wait E_003DE478; - %load/v 32, V_$006DD6E0[0], 1; - %assign V_$006DDF80[0], 0, 32; - %jmp T_16; - .thread T_16; - .scope S_006DBE08; -T_17 ; - %wait E_003DE478; - %load/v 32, V_$006DCA00[0], 1; - %jmp/0xz T_17.0, 32; - %assign V_$006DDBA0[0], 0, 0; - %assign V_$006DDBA0[1], 0, 0; - %assign V_$006DDF80[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DD220[0], 0, 0; - %jmp T_17.1; -T_17.0 ; - %load/v 32, V_$006DD380[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DD220[0], 0, 32; - %load/v 32, V_$006DDC18[0], 2; - %assign V_$006DDBA0[0], 0, 32; - %assign V_$006DDBA0[1], 0, 33; - %load/v 32, V_$006DD380[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DD220[0], 0, 32; -T_17.1 ; - %jmp T_17; - .thread T_17; - .scope S_006DBE08; -T_18 ; - %wait E_003DE0F8; - %load/v 32, V_$006DC940[0], 1; - %jmp/0xz T_18.0, 32; - %assign V_$006DDAA8[0], 0, 0; - %assign V_$006DD970[0], 0, 0; - %assign V_$006DD9E0[0], 0, 0; - %jmp T_18.1; -T_18.0 ; - %load 32, V_$006DD918[0]; - %assign V_$006DD970[0], 0, 32; - %load/v 32, V_$006DD970[0], 1; - %assign V_$006DD9E0[0], 0, 32; - %load/v 32, V_$006DD6A8[0], 1; - %jmp/0xz T_18.2, 32; - %assign V_$006DDAA8[0], 0, 1; - %jmp T_18.3; -T_18.2 ; - %load/v 32, V_$006DD9E0[0], 1; - %load/v 33, V_$006DD970[0], 1; - %cmpi/u 33, 0, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_18.4, 32; - %assign V_$006DDAA8[0], 0, 0; -T_18.4 ; -T_18.3 ; -T_18.1 ; - %load 32, V_$006DCBF0[0]; - %load 33, V_$006DCBF0[1]; - %load 34, V_$006DCBF0[2]; - %load 35, V_$006DCBF0[3]; - %load 36, V_$006DCBF0[4]; - %load 37, V_$006DCBF0[5]; - %load 38, V_$006DCBF0[6]; - %load 39, V_$006DCBF0[7]; - %ix/load 0, 8; - %assign/v0 V_$006DD078[0], 0, 32; - %load 32, V_$006DCE08[0]; - %load 33, V_$006DCE08[1]; - %assign V_$006DCE80[0], 0, 32; - %assign V_$006DCE80[1], 0, 33; - %load 32, V_$006DC478[0]; - %load 33, V_$006DC478[1]; - %assign V_$006DC4D0[0], 0, 32; - %assign V_$006DC4D0[1], 0, 33; - %load 32, V_$006DC3C8[0]; - %load 33, V_$006DC3C8[1]; - %assign V_$006DC440[0], 0, 32; - %assign V_$006DC440[1], 0, 33; - %jmp T_18; - .thread T_18; - .scope S_006DA008; -T_19 ; - %wait E_006DB510; - %load/v 32, V_$006DB530[0], 3; - %ix/load 0, 3; - %assign/v0 V_$006DB5C8[0], 0, 32; - %load/v 32, V_$006DBA28[0], 2; - %assign V_$006DB760[0], 0, 32; - %assign V_$006DB760[1], 0, 33; - %load/v 32, V_$006DBDB0[0], 1; - %assign V_$006DB918[0], 0, 32; - %load/v 32, V_$006DB678[0], 1; - %assign V_$006DB728[0], 0, 32; - %load/v 32, V_$006DAC70[0], 1; - %assign V_$006DB7C0[0], 0, 32; - %load/v 32, V_$006DBC48[0], 1; - %assign V_$006DB890[0], 0, 32; - %load/v 32, V_$006DBBB8[0], 1; - %assign V_$006DB810[0], 0, 32; - %load/v 32, V_$006DB530[0], 3; - %cmpi/u 32, 0, 3; - %jmp/1 T_19.0, 6; - %cmpi/u 32, 1, 3; - %jmp/1 T_19.1, 6; - %cmpi/u 32, 2, 3; - %jmp/1 T_19.2, 6; - %cmpi/u 32, 3, 3; - %jmp/1 T_19.3, 6; - %cmpi/u 32, 4, 3; - %jmp/1 T_19.4, 6; - %cmpi/u 32, 5, 3; - %jmp/1 T_19.5, 6; - %cmpi/u 32, 6, 3; - %jmp/1 T_19.6, 6; - %cmpi/u 32, 7, 3; - %jmp/1 T_19.7, 6; - %jmp T_19.8; -T_19.0 ; - %assign V_$006DB760[0], 0, 0; - %assign V_$006DB760[1], 0, 0; - %assign V_$006DB918[0], 0, 0; - %assign V_$006DB728[0], 0, 0; - %assign V_$006DB7C0[0], 0, 0; - %assign V_$006DB890[0], 0, 0; - %assign V_$006DB810[0], 0, 1; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 0; - %jmp T_19.8; -T_19.1 ; - %assign V_$006DB7C0[0], 0, 0; - %assign V_$006DB890[0], 0, 0; - %load 32, V_$006DBC10[0]; - %load 33, V_$006DBCC8[0]; - %load 34, V_$006DBCC8[1]; - %cmpi/u 33, 1, 2; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_19.9, 32; - %assign V_$006DB5C8[0], 0, 0; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 1; - %assign V_$006DB890[0], 0, 1; - %assign V_$006DB728[0], 0, 1; - %jmp T_19.10; -T_19.9 ; - %load 32, V_$006DBC10[0]; - %load 33, V_$006DBCC8[0]; - %load 34, V_$006DBCC8[1]; - %cmpi/u 33, 3, 2; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_19.11, 32; - %assign V_$006DB5C8[0], 0, 0; - %assign V_$006DB5C8[1], 0, 1; - %assign V_$006DB5C8[2], 0, 1; - %assign V_$006DB890[0], 0, 1; - %assign V_$006DB760[0], 0, 1; - %assign V_$006DB760[1], 0, 0; - %jmp T_19.12; -T_19.11 ; - %load 32, V_$006DBC10[0]; - %load 33, V_$006DBCC8[0]; - %load 34, V_$006DBCC8[1]; - %cmpi/u 33, 2, 2; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_19.13, 32; - %assign V_$006DB5C8[0], 0, 0; - %assign V_$006DB5C8[1], 0, 1; - %assign V_$006DB5C8[2], 0, 1; - %assign V_$006DB890[0], 0, 1; - %assign V_$006DB760[0], 0, 0; - %assign V_$006DB760[1], 0, 1; - %jmp T_19.14; -T_19.13 ; - %load 32, V_$006DBC10[0]; - %load 33, V_$006DBCC8[0]; - %load 34, V_$006DBCC8[1]; - %cmpi/u 33, 0, 2; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_19.15, 32; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 1; - %assign V_$006DB5C8[2], 0, 0; - %assign V_$006DB890[0], 0, 1; - %assign V_$006DB918[0], 0, 1; - %assign V_$006DB810[0], 0, 0; -T_19.15 ; -T_19.14 ; -T_19.12 ; -T_19.10 ; - %jmp T_19.8; -T_19.2 ; - %load 32, V_$006DBB18[0]; - %jmp/0xz T_19.17, 32; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 0; - %assign V_$006DB7C0[0], 0, 1; - %assign V_$006DB810[0], 0, 1; -T_19.17 ; - %jmp T_19.8; -T_19.3 ; - %assign V_$006DB918[0], 0, 0; - %assign V_$006DB5C8[0], 0, 0; - %assign V_$006DB5C8[1], 0, 1; - %assign V_$006DB5C8[2], 0, 0; - %jmp T_19.8; -T_19.4 ; - %assign V_$006DB728[0], 0, 0; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 1; - %jmp T_19.8; -T_19.5 ; - %load 32, V_$006DB620[0]; - %jmp/0xz T_19.19, 32; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 0; -T_19.19 ; - %jmp T_19.8; -T_19.6 ; - %assign V_$006DB760[0], 0, 0; - %assign V_$006DB760[1], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006DB5C8[0], 0, 1; - %jmp T_19.8; -T_19.7 ; - %load 32, V_$006DB9D0[0]; - %jmp/0xz T_19.21, 32; - %assign V_$006DB5C8[0], 0, 1; - %assign V_$006DB5C8[1], 0, 0; - %assign V_$006DB5C8[2], 0, 0; -T_19.21 ; - %jmp T_19.8; -T_19.8 ; - %jmp T_19; - .thread T_19, $push; - .scope S_006DA008; -T_20 ; - %wait E_003DE478; - %load 32, V_$006DB950[0]; - %jmp/0xz T_20.0, 32; - %ix/load 0, 3; - %assign/v0 V_$006DB530[0], 0, 0; - %jmp T_20.1; -T_20.0 ; - %load/v 32, V_$006DB5C8[0], 3; - %ix/load 0, 3; - %assign/v0 V_$006DB530[0], 0, 32; -T_20.1 ; - %jmp T_20; - .thread T_20; - .scope S_006DA008; -T_21 ; - %wait E_003DE478; - %load 32, V_$006DB950[0]; - %jmp/0xz T_21.0, 32; - %assign V_$006DBA28[0], 0, 0; - %assign V_$006DBA28[1], 0, 0; - %assign V_$006DBDB0[0], 0, 0; - %assign V_$006DB678[0], 0, 0; - %assign V_$006DAC70[0], 0, 0; - %assign V_$006DBC48[0], 0, 0; - %assign V_$006DBBB8[0], 0, 1; - %jmp T_21.1; -T_21.0 ; - %load/v 32, V_$006DB760[0], 2; - %assign V_$006DBA28[0], 0, 32; - %assign V_$006DBA28[1], 0, 33; - %load/v 32, V_$006DB918[0], 1; - %assign V_$006DBDB0[0], 0, 32; - %load/v 32, V_$006DB728[0], 1; - %assign V_$006DB678[0], 0, 32; - %load/v 32, V_$006DB7C0[0], 1; - %assign V_$006DAC70[0], 0, 32; - %load/v 32, V_$006DB890[0], 1; - %assign V_$006DBC48[0], 0, 32; - %load/v 32, V_$006DB810[0], 1; - %assign V_$006DBBB8[0], 0, 32; -T_21.1 ; - %jmp T_21; - .thread T_21; - .scope S_006D5E10; -T_22 ; - %wait E_006C8B28; - %load/v 32, V_$006D7810[0], 4; - %ix/load 0, 4; - %assign/v0 V_$006D78C0[0], 0, 32; - %load/v 32, V_$006DB188[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DA4D0[0], 0, 32; - %load/v 32, V_$006D7E68[0], 1; - %assign V_$006D8560[0], 0, 32; - %load/v 32, V_$006DADF8[0], 1; - %assign V_$006DA450[0], 0, 32; - %load/v 32, V_$006D8260[0], 2; - %assign V_$006D9D58[0], 0, 32; - %assign V_$006D9D58[1], 0, 33; - %load/v 32, V_$006D71D0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DA638[0], 0, 32; - %load/v 32, V_$006DB4B8[0], 1; - %assign V_$006DA918[0], 0, 32; - %load/v 32, V_$006D7B08[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D8900[0], 0, 32; - %load/v 32, V_$006D7C70[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D8B78[0], 0, 32; - %load/v 32, V_$006D7DD0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D90D8[0], 0, 32; - %load/v 32, V_$006D80C8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D93B8[0], 0, 32; - %load/v 32, V_$006D8228[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D9F90[0], 0, 32; - %load/v 32, V_$006D7F80[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D85E0[0], 0, 32; - %load/v 32, V_$006DAD18[0], 1; - %assign V_$006DA3D0[0], 0, 32; - %load/v 32, V_$006D8E20[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 32; - %load/v 32, V_$006D83C0[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D9750[0], 0, 32; - %load/v 32, V_$006D83F8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D9AB8[0], 0, 32; - %load/v 32, V_$006DACA8[0], 1; - %assign V_$006DA348[0], 0, 32; - %load/v 32, V_$006D7810[0], 4; - %cmpi/u 32, 0, 4; - %jmp/1 T_22.0, 6; - %cmpi/u 32, 1, 4; - %jmp/1 T_22.1, 6; - %cmpi/u 32, 2, 4; - %jmp/1 T_22.2, 6; - %cmpi/u 32, 3, 4; - %jmp/1 T_22.3, 6; - %cmpi/u 32, 13, 4; - %jmp/1 T_22.4, 6; - %cmpi/u 32, 4, 4; - %jmp/1 T_22.5, 6; - %cmpi/u 32, 5, 4; - %jmp/1 T_22.6, 6; - %cmpi/u 32, 6, 4; - %jmp/1 T_22.7, 6; - %cmpi/u 32, 7, 4; - %jmp/1 T_22.8, 6; - %cmpi/u 32, 8, 4; - %jmp/1 T_22.9, 6; - %cmpi/u 32, 9, 4; - %jmp/1 T_22.10, 6; - %cmpi/u 32, 10, 4; - %jmp/1 T_22.11, 6; - %cmpi/u 32, 11, 4; - %jmp/1 T_22.12, 6; - %cmpi/u 32, 12, 4; - %jmp/1 T_22.13, 6; - %jmp T_22.14; -T_22.0 ; - %load 32, V_$006DAE30[0]; - %load 33, V_$006DAE30[1]; - %load 34, V_$006DAE30[2]; - %load 35, V_$006DAE30[3]; - %load 36, V_$006DAE30[4]; - %load 37, V_$006DAE30[5]; - %load 38, V_$006DAE30[6]; - %load 39, V_$006DAE30[7]; - %ix/load 0, 8; - %assign/v0 V_$006DA4D0[0], 0, 32; - %assign V_$006D8560[0], 0, 0; - %assign V_$006DA450[0], 0, 1; - %assign V_$006D9D58[0], 0, 0; - %assign V_$006D9D58[1], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DA638[0], 0, 0; - %assign V_$006DA918[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8900[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8B78[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D90D8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D93B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D9F90[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D85E0[0], 0, 0; - %assign V_$006DA3D0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D9750[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D9AB8[0], 0, 0; - %assign V_$006DA348[0], 0, 0; - %assign V_$006D78C0[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[1], 0, 0; - %jmp T_22.14; -T_22.1 ; - %assign V_$006D8560[0], 0, 1; - %load 32, V_$006DAE30[0]; - %load 33, V_$006DAE30[1]; - %load 34, V_$006DAE30[2]; - %load 35, V_$006DAE30[3]; - %load 36, V_$006DAE30[4]; - %load 37, V_$006DAE30[5]; - %load 38, V_$006DAE30[6]; - %load 39, V_$006DAE30[7]; - %ix/load 0, 8; - %assign/v0 V_$006DA4D0[0], 0, 32; - %load 32, V_$006D7F00[0]; - %jmp/0xz T_22.15, 32; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 0; - %assign V_$006D8560[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 0; - %assign V_$006DA4D0[0], 0, 1; - %assign V_$006DA4D0[1], 0, 1; - %assign V_$006DA4D0[2], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006DA4D0[3], 0, 1; - %assign V_$006DA4D0[6], 0, 0; - %assign V_$006DA4D0[7], 0, 0; - %assign V_$006D9D58[0], 0, 0; - %assign V_$006D9D58[1], 0, 0; -T_22.15 ; - %jmp T_22.14; -T_22.2 ; - %load 32, V_$006DB358[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_22.17, 4; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DA638[0], 0, 1; - %assign V_$006DA918[0], 0, 1; - %load/v 32, V_$006D8E20[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 32; -T_22.17 ; - %jmp T_22.14; -T_22.3 ; - %assign V_$006DA918[0], 0, 0; - %load/v 32, V_$006D8E20[0], 8; - %cmpi/u 32, 160, 8; - %jmp/0xz T_22.19, 4; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 1; - %jmp T_22.20; -T_22.19 ; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 0; -T_22.20 ; - %jmp T_22.14; -T_22.4 ; - %load 32, V_$006DB2E8[0]; - %jmp/0xz T_22.21, 32; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 0; -T_22.21 ; - %jmp T_22.14; -T_22.5 ; - %ix/load 0, 6; - %assign/v0 V_$006D8900[0], 0, 0; - %assign V_$006D8900[6], 0, 1; - %assign V_$006D8900[7], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8B78[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D90D8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D93B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D9F90[0], 0, 0; - %assign V_$006D85E0[0], 0, 1; - %assign V_$006D85E0[1], 0, 0; - %assign V_$006D85E0[2], 0, 1; - %assign V_$006D85E0[3], 0, 0; - %assign V_$006D85E0[4], 0, 1; - %assign V_$006D85E0[5], 0, 0; - %assign V_$006D85E0[6], 0, 0; - %assign V_$006D85E0[7], 0, 1; - %assign V_$006DA3D0[0], 0, 1; - %load/v 32, V_$006D8E20[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 32; - %assign V_$006DA450[0], 0, 0; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 0; - %jmp T_22.14; -T_22.6 ; - %assign V_$006DA3D0[0], 0, 0; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 0; - %jmp T_22.14; -T_22.7 ; - %load 32, V_$006DACE0[0]; - %jmp/0xz T_22.23, 32; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[3], 0, 0; - %assign V_$006DA450[0], 0, 1; -T_22.23 ; - %jmp T_22.14; -T_22.8 ; - %load 32, V_$006DAB98[0]; - %load 33, V_$006DA998[0]; - %load 34, V_$006DA998[1]; - %load 35, V_$006DA998[2]; - %load 36, V_$006DA998[3]; - %load 37, V_$006DA998[4]; - %load 38, V_$006DA998[5]; - %load 39, V_$006DA998[6]; - %load 40, V_$006DA998[7]; - %cmpi/u 33, 1, 8; - %inv 4, 1; - %mov 33, 4, 1; - %or 32, 33, 1; - %load/v 33, V_$006D8E20[0], 8; - %cmpi/u 33, 255, 8; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_22.25, 32; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 0; - %jmp T_22.26; -T_22.25 ; - %load 32, V_$006DAB98[0]; - %load 33, V_$006DA998[0]; - %load 34, V_$006DA998[1]; - %load 35, V_$006DA998[2]; - %load 36, V_$006DA998[3]; - %load 37, V_$006DA998[4]; - %load 38, V_$006DA998[5]; - %load 39, V_$006DA998[6]; - %load 40, V_$006DA998[7]; - %cmpi/u 33, 1, 8; - %inv 4, 1; - %mov 33, 4, 1; - %or 32, 33, 1; - %jmp/0xz T_22.27, 32; - %assign V_$006D78C0[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[1], 0, 0; - %assign V_$006D9D58[0], 0, 1; - %assign V_$006D9D58[1], 0, 0; - %jmp T_22.28; -T_22.27 ; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 1; -T_22.28 ; -T_22.26 ; - %jmp T_22.14; -T_22.9 ; - %load 32, V_$006DACE0[0]; - %jmp/0xz T_22.29, 32; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 1; - %assign V_$006DA450[0], 0, 1; -T_22.29 ; - %jmp T_22.14; -T_22.10 ; - %load 32, V_$006DAB98[0]; - %load 33, V_$006DA998[0]; - %load 34, V_$006DA998[1]; - %load 35, V_$006DA998[2]; - %load 36, V_$006DA998[3]; - %load 37, V_$006DA998[4]; - %load 38, V_$006DA998[5]; - %load 39, V_$006DA998[6]; - %load 40, V_$006DA998[7]; - %cmpi/u 33, 0, 8; - %inv 4, 1; - %mov 33, 4, 1; - %or 32, 33, 1; - %load/v 33, V_$006D8E20[0], 8; - %cmpi/u 33, 255, 8; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_22.31, 32; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 1; - %jmp T_22.32; -T_22.31 ; - %load 32, V_$006DAB98[0]; - %load 33, V_$006DA998[0]; - %load 34, V_$006DA998[1]; - %load 35, V_$006DA998[2]; - %load 36, V_$006DA998[3]; - %load 37, V_$006DA998[4]; - %load 38, V_$006DA998[5]; - %load 39, V_$006DA998[6]; - %load 40, V_$006DA998[7]; - %cmpi/u 33, 0, 8; - %inv 4, 1; - %mov 33, 4, 1; - %or 32, 33, 1; - %jmp/0xz T_22.33, 32; - %assign V_$006D78C0[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[1], 0, 0; - %assign V_$006D9D58[0], 0, 0; - %assign V_$006D9D58[1], 0, 1; - %jmp T_22.34; -T_22.33 ; - %assign V_$006D78C0[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[1], 0, 0; -T_22.34 ; -T_22.32 ; - %jmp T_22.14; -T_22.11 ; - %assign V_$006D8900[0], 0, 1; - %ix/load 0, 5; - %assign/v0 V_$006D8900[1], 0, 0; - %assign V_$006D8900[6], 0, 1; - %assign V_$006D8900[7], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8B78[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D90D8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D93B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D9F90[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D85E0[0], 0, 1; - %assign V_$006DA3D0[0], 0, 1; - %load/v 32, V_$006D8E20[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006DA0A8[0], 0, 32; - %assign V_$006DA450[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D9750[0], 0, 0; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 1; - %jmp T_22.14; -T_22.12 ; - %load/v 32, V_$006D83C0[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006D9750[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D9AB8[0], 0, 0; - %assign V_$006DA3D0[0], 0, 0; - %load/v 32, V_$006D83C0[0], 10; - %cmpi/u 32, 375, 10; - %jmp/0xz T_22.35, 4; - %ix/load 0, 3; - %assign/v0 V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[3], 0, 1; - %jmp T_22.36; -T_22.35 ; - %assign V_$006D78C0[0], 0, 0; - %assign V_$006D78C0[1], 0, 0; - %assign V_$006D78C0[2], 0, 1; - %assign V_$006D78C0[3], 0, 1; -T_22.36 ; - %jmp T_22.14; -T_22.13 ; - %load/v 32, V_$006D83F8[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006D9AB8[0], 0, 32; - %load/v 32, V_$006D83F8[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_22.37, 4; - %assign V_$006D78C0[0], 0, 1; - %assign V_$006D78C0[1], 0, 1; - %assign V_$006D78C0[2], 0, 0; - %assign V_$006D78C0[3], 0, 1; -T_22.37 ; - %jmp T_22.14; -T_22.14 ; - %jmp T_22; - .thread T_22, $push; - .scope S_006D5E10; -T_23 ; - %wait E_003DE478; - %load 32, V_$006DAC00[0]; - %jmp/0xz T_23.0, 32; - %ix/load 0, 4; - %assign/v0 V_$006D7810[0], 0, 0; - %jmp T_23.1; -T_23.0 ; - %load/v 32, V_$006D78C0[0], 4; - %ix/load 0, 4; - %assign/v0 V_$006D7810[0], 0, 32; -T_23.1 ; - %jmp T_23; - .thread T_23; - .scope S_006D5E10; -T_24 ; - %wait E_003DE478; - %load 32, V_$006DAC00[0]; - %jmp/0xz T_24.0, 32; - %load 32, V_$006DAE30[0]; - %load 33, V_$006DAE30[1]; - %load 34, V_$006DAE30[2]; - %load 35, V_$006DAE30[3]; - %load 36, V_$006DAE30[4]; - %load 37, V_$006DAE30[5]; - %load 38, V_$006DAE30[6]; - %load 39, V_$006DAE30[7]; - %ix/load 0, 8; - %assign/v0 V_$006DB188[0], 0, 32; - %assign V_$006D7E68[0], 0, 0; - %assign V_$006DADF8[0], 0, 1; - %assign V_$006D8260[0], 0, 0; - %assign V_$006D8260[1], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D71D0[0], 0, 0; - %assign V_$006DB4B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D7B08[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D7C70[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D7DD0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D80C8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8228[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D7F80[0], 0, 0; - %assign V_$006DAD18[0], 0, 0; - %assign V_$006DACA8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D8E20[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D83C0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D83F8[0], 0, 0; - %jmp T_24.1; -T_24.0 ; - %load/v 32, V_$006DA4D0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006DB188[0], 0, 32; - %load/v 32, V_$006D8560[0], 1; - %assign V_$006D7E68[0], 0, 32; - %load/v 32, V_$006DA450[0], 1; - %assign V_$006DADF8[0], 0, 32; - %load/v 32, V_$006D9D58[0], 2; - %assign V_$006D8260[0], 0, 32; - %assign V_$006D8260[1], 0, 33; - %load/v 32, V_$006DA638[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D71D0[0], 0, 32; - %load/v 32, V_$006DA918[0], 1; - %assign V_$006DB4B8[0], 0, 32; - %load/v 32, V_$006D8900[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D7B08[0], 0, 32; - %load/v 32, V_$006D8B78[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D7C70[0], 0, 32; - %load/v 32, V_$006D90D8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D7DD0[0], 0, 32; - %load/v 32, V_$006D93B8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D80C8[0], 0, 32; - %load/v 32, V_$006D9F90[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D8228[0], 0, 32; - %load/v 32, V_$006D85E0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D7F80[0], 0, 32; - %load/v 32, V_$006DA3D0[0], 1; - %assign V_$006DAD18[0], 0, 32; - %load/v 32, V_$006DA348[0], 1; - %assign V_$006DACA8[0], 0, 32; - %load/v 32, V_$006DA0A8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D8E20[0], 0, 32; - %load/v 32, V_$006D9750[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D83C0[0], 0, 32; - %load/v 32, V_$006D9AB8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D83F8[0], 0, 32; -T_24.1 ; - %jmp T_24; - .thread T_24; - .scope S_006D0E50; -T_25 ; - %wait E_006D1810; - %load/v 32, V_$006D1830[0], 6; - %ix/load 0, 6; - %assign/v0 V_$006D1C70[0], 0, 32; - %load/v 32, V_$006D6E38[0], 1; - %assign V_$006D5F20[0], 0, 32; - %load/v 32, V_$006D6C70[0], 1; - %assign V_$006D5948[0], 0, 32; - %load/v 32, V_$006D6488[0], 2; - %assign V_$006D5DD8[0], 0, 32; - %assign V_$006D5DD8[1], 0, 33; - %load/v 32, V_$006D75E8[0], 2; - %assign V_$006D63B0[0], 0, 32; - %assign V_$006D63B0[1], 0, 33; - %load/v 32, V_$006D7208[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 32; - %load/v 32, V_$006D72A8[0], 1; - %assign V_$006D62B0[0], 0, 32; - %load/v 32, V_$006D6920[0], 1; - %assign V_$006D5FB0[0], 0, 32; - %load/v 32, V_$006D2970[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3890[0], 0, 32; - %load/v 32, V_$006D2AB0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3B18[0], 0, 32; - %load/v 32, V_$006D2C18[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D40D8[0], 0, 32; - %load/v 32, V_$006D2D78[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D43B8[0], 0, 32; - %load/v 32, V_$006D3138[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D4F90[0], 0, 32; - %load/v 32, V_$006D2790[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3580[0], 0, 32; - %load/v 32, V_$006D6C38[0], 1; - %assign V_$006D5880[0], 0, 32; - %load/v 32, V_$006D32B0[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 32; - %load/v 32, V_$006D3278[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 32; - %load/v 32, V_$006D3310[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 32; - %load/v 32, V_$006D7488[0], 1; - %assign V_$006D6330[0], 0, 32; - %load/v 32, V_$006D6B90[0], 1; - %assign V_$006D5800[0], 0, 32; - %load/v 32, V_$006D6958[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D5520[0], 0, 32; - %load/v 32, V_$006D6CA8[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 32; - %load/v 32, V_$006D3370[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D4D10[0], 0, 32; - %load/v 32, V_$006D1830[0], 6; - %cmpi/u 32, 0, 6; - %jmp/1 T_25.0, 6; - %cmpi/u 32, 4, 6; - %jmp/1 T_25.1, 6; - %cmpi/u 32, 1, 6; - %jmp/1 T_25.2, 6; - %cmpi/u 32, 2, 6; - %jmp/1 T_25.3, 6; - %cmpi/u 32, 3, 6; - %jmp/1 T_25.4, 6; - %cmpi/u 32, 5, 6; - %jmp/1 T_25.5, 6; - %cmpi/u 32, 6, 6; - %jmp/1 T_25.6, 6; - %cmpi/u 32, 7, 6; - %jmp/1 T_25.7, 6; - %cmpi/u 32, 8, 6; - %jmp/1 T_25.8, 6; - %cmpi/u 32, 9, 6; - %jmp/1 T_25.9, 6; - %cmpi/u 32, 10, 6; - %jmp/1 T_25.10, 6; - %cmpi/u 32, 40, 6; - %jmp/1 T_25.11, 6; - %cmpi/u 32, 41, 6; - %jmp/1 T_25.12, 6; - %cmpi/u 32, 42, 6; - %jmp/1 T_25.13, 6; - %cmpi/u 32, 43, 6; - %jmp/1 T_25.14, 6; - %cmpi/u 32, 44, 6; - %jmp/1 T_25.15, 6; - %cmpi/u 32, 45, 6; - %jmp/1 T_25.16, 6; - %cmpi/u 32, 23, 6; - %jmp/1 T_25.17, 6; - %cmpi/u 32, 24, 6; - %jmp/1 T_25.18, 6; - %cmpi/u 32, 25, 6; - %jmp/1 T_25.19, 6; - %cmpi/u 32, 26, 6; - %jmp/1 T_25.20, 6; - %cmpi/u 32, 27, 6; - %jmp/1 T_25.21, 6; - %cmpi/u 32, 28, 6; - %jmp/1 T_25.22, 6; - %cmpi/u 32, 29, 6; - %jmp/1 T_25.23, 6; - %cmpi/u 32, 30, 6; - %jmp/1 T_25.24, 6; - %cmpi/u 32, 31, 6; - %jmp/1 T_25.25, 6; - %cmpi/u 32, 46, 6; - %jmp/1 T_25.26, 6; - %cmpi/u 32, 32, 6; - %jmp/1 T_25.27, 6; - %cmpi/u 32, 33, 6; - %jmp/1 T_25.28, 6; - %cmpi/u 32, 34, 6; - %jmp/1 T_25.29, 6; - %cmpi/u 32, 35, 6; - %jmp/1 T_25.30, 6; - %cmpi/u 32, 36, 6; - %jmp/1 T_25.31, 6; - %cmpi/u 32, 37, 6; - %jmp/1 T_25.32, 6; - %cmpi/u 32, 38, 6; - %jmp/1 T_25.33, 6; - %cmpi/u 32, 39, 6; - %jmp/1 T_25.34, 6; - %cmpi/u 32, 11, 6; - %jmp/1 T_25.35, 6; - %cmpi/u 32, 12, 6; - %jmp/1 T_25.36, 6; - %cmpi/u 32, 13, 6; - %jmp/1 T_25.37, 6; - %cmpi/u 32, 14, 6; - %jmp/1 T_25.38, 6; - %cmpi/u 32, 15, 6; - %jmp/1 T_25.39, 6; - %cmpi/u 32, 16, 6; - %jmp/1 T_25.40, 6; - %cmpi/u 32, 17, 6; - %jmp/1 T_25.41, 6; - %cmpi/u 32, 18, 6; - %jmp/1 T_25.42, 6; - %cmpi/u 32, 19, 6; - %jmp/1 T_25.43, 6; - %cmpi/u 32, 20, 6; - %jmp/1 T_25.44, 6; - %cmpi/u 32, 21, 6; - %jmp/1 T_25.45, 6; - %cmpi/u 32, 22, 6; - %jmp/1 T_25.46, 6; - %cmpi/u 32, 47, 6; - %jmp/1 T_25.47, 6; - %jmp T_25.48; -T_25.0 ; - %assign V_$006D5F20[0], 0, 0; - %assign V_$006D5948[0], 0, 1; - %assign V_$006D5DD8[0], 0, 0; - %assign V_$006D5DD8[1], 0, 0; - %assign V_$006D63B0[0], 0, 0; - %assign V_$006D63B0[1], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 0; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D5FB0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3890[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3B18[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D40D8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D43B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D4F90[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3580[0], 0, 0; - %assign V_$006D5880[0], 0, 0; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 0; - %assign V_$006D5DD8[0], 0, 0; - %assign V_$006D5DD8[1], 0, 0; - %assign V_$006D63B0[0], 0, 0; - %assign V_$006D63B0[1], 0, 0; - %assign V_$006D6330[0], 0, 0; - %assign V_$006D5800[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D5520[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D4D10[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %jmp T_25.48; -T_25.1 ; - %assign V_$006D5948[0], 0, 1; - %assign V_$006D5F20[0], 0, 1; - %load 32, V_$006D6EC0[0]; - %load 33, V_$006D6EC0[1]; - %cmpi/u 32, 2, 2; - %jmp/0xz T_25.49, 4; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %assign V_$006D5948[0], 0, 0; - %assign V_$006D5F20[0], 0, 0; - %assign V_$006D5DD8[0], 0, 0; - %assign V_$006D5DD8[1], 0, 0; - %jmp T_25.50; -T_25.49 ; - %load 32, V_$006D6EC0[0]; - %load 33, V_$006D6EC0[1]; - %cmpi/u 32, 1, 2; - %jmp/0xz T_25.51, 4; - %assign V_$006D1C70[0], 0, 1; - %ix/load 0, 5; - %assign/v0 V_$006D1C70[1], 0, 0; - %assign V_$006D5948[0], 0, 0; - %assign V_$006D5F20[0], 0, 0; - %assign V_$006D63B0[0], 0, 0; - %assign V_$006D63B0[1], 0, 0; -T_25.51 ; -T_25.50 ; - %jmp T_25.48; -T_25.2 ; - %ix/load 0, 3; - %assign/v0 V_$006D3890[0], 0, 0; - %assign V_$006D3890[3], 0, 1; - %assign V_$006D3890[4], 0, 1; - %assign V_$006D3890[5], 0, 0; - %assign V_$006D3890[6], 0, 1; - %assign V_$006D3890[7], 0, 0; - %load 32, V_$006D2078[24]; - %load 33, V_$006D2078[25]; - %load 34, V_$006D2078[26]; - %load 35, V_$006D2078[27]; - %load 36, V_$006D2078[28]; - %load 37, V_$006D2078[29]; - %load 38, V_$006D2078[30]; - %load 39, V_$006D2078[31]; - %ix/load 0, 8; - %assign/v0 V_$006D3B18[0], 0, 32; - %load 32, V_$006D2078[16]; - %load 33, V_$006D2078[17]; - %load 34, V_$006D2078[18]; - %load 35, V_$006D2078[19]; - %load 36, V_$006D2078[20]; - %load 37, V_$006D2078[21]; - %load 38, V_$006D2078[22]; - %load 39, V_$006D2078[23]; - %ix/load 0, 8; - %assign/v0 V_$006D40D8[0], 0, 32; - %load 32, V_$006D2078[8]; - %load 33, V_$006D2078[9]; - %load 34, V_$006D2078[10]; - %load 35, V_$006D2078[11]; - %load 36, V_$006D2078[12]; - %load 37, V_$006D2078[13]; - %load 38, V_$006D2078[14]; - %load 39, V_$006D2078[15]; - %ix/load 0, 8; - %assign/v0 V_$006D43B8[0], 0, 32; - %load 32, V_$006D2078[0]; - %load 33, V_$006D2078[1]; - %load 34, V_$006D2078[2]; - %load 35, V_$006D2078[3]; - %load 36, V_$006D2078[4]; - %load 37, V_$006D2078[5]; - %load 38, V_$006D2078[6]; - %load 39, V_$006D2078[7]; - %ix/load 0, 8; - %assign/v0 V_$006D4F90[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D3580[0], 0, 1; - %assign V_$006D5880[0], 0, 1; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[2], 0, 0; - %jmp T_25.48; -T_25.3 ; - %load 32, V_$006D6C00[0]; - %load 33, V_$006D6648[0]; - %load 34, V_$006D6F98[0]; - %load 35, V_$006D6F98[1]; - %load 36, V_$006D6F98[2]; - %load 37, V_$006D6F98[3]; - %load 38, V_$006D6F98[4]; - %load 39, V_$006D6F98[5]; - %load 40, V_$006D6F98[6]; - %load 41, V_$006D6F98[7]; - %cmpi/u 34, 0, 8; - %inv 4, 1; - %mov 34, 4, 1; - %or 33, 34, 1; - %and 32, 33, 1; - %jmp/0xz T_25.53, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %assign V_$006D63B0[0], 0, 1; - %assign V_$006D63B0[1], 0, 0; - %jmp T_25.54; -T_25.53 ; - %load 32, V_$006D6C00[0]; - %jmp/0xz T_25.55, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; -T_25.55 ; -T_25.54 ; - %jmp T_25.48; -T_25.4 ; - %assign V_$006D5880[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[2], 0, 0; - %jmp T_25.48; -T_25.5 ; - %assign V_$006D62B0[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.6 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.57, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.57 ; - %jmp T_25.48; -T_25.7 ; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.8 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.59, 4; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.59 ; - %jmp T_25.48; -T_25.9 ; - %assign V_$006D62B0[0], 0, 0; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.10 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.61, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %assign V_$006D6008[0], 0, 0; - %ix/load 0, 7; - %assign/v0 V_$006D6008[1], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.61 ; - %jmp T_25.48; -T_25.11 ; - %load/v 32, V_$006D3370[0], 8; - %cmpi/u 32, 0, 8; - %mov 32, 4, 1; - %load/v 33, V_$006D6CA8[0], 10; - %cmpi/u 33, 182, 10; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_25.63, 32; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %load/v 32, V_$006D6CA8[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 32; - %jmp T_25.64; -T_25.63 ; - %load/v 32, V_$006D6CA8[0], 10; - %cmpi/u 32, 182, 10; - %jmp/0xz T_25.65, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %assign V_$006D63B0[0], 0, 1; - %assign V_$006D63B0[1], 0, 1; - %jmp T_25.66; -T_25.65 ; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; -T_25.66 ; -T_25.64 ; - %jmp T_25.48; -T_25.12 ; - %load 32, V_$006D68B8[0]; - %jmp/0xz T_25.67, 32; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %load 32, V_$006D66D8[0]; - %load 33, V_$006D66D8[1]; - %load 34, V_$006D66D8[2]; - %load 35, V_$006D66D8[3]; - %load 36, V_$006D66D8[4]; - %load 37, V_$006D66D8[5]; - %load 38, V_$006D66D8[6]; - %load 39, V_$006D66D8[7]; - %ix/load 0, 8; - %assign/v0 V_$006D4D10[0], 0, 32; -T_25.67 ; - %jmp T_25.48; -T_25.13 ; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D5FB0[0], 0, 0; - %load/v 32, V_$006D3278[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 0; - %load/v 32, V_$006D3278[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_25.69, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.70; -T_25.69 ; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; -T_25.70 ; - %jmp T_25.48; -T_25.14 ; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; - %assign V_$006D5FB0[0], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.48; -T_25.15 ; - %load/v 32, V_$006D3310[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 32; - %load/v 32, V_$006D3310[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_25.71, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; -T_25.71 ; - %jmp T_25.48; -T_25.16 ; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 0; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.48; -T_25.17 ; - %assign V_$006D3890[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D3890[1], 0, 0; - %assign V_$006D3890[4], 0, 1; - %assign V_$006D3890[5], 0, 0; - %assign V_$006D3890[6], 0, 1; - %assign V_$006D3890[7], 0, 0; - %load 32, V_$006D2078[24]; - %load 33, V_$006D2078[25]; - %load 34, V_$006D2078[26]; - %load 35, V_$006D2078[27]; - %load 36, V_$006D2078[28]; - %load 37, V_$006D2078[29]; - %load 38, V_$006D2078[30]; - %load 39, V_$006D2078[31]; - %ix/load 0, 8; - %assign/v0 V_$006D3B18[0], 0, 32; - %load 32, V_$006D2078[16]; - %load 33, V_$006D2078[17]; - %load 34, V_$006D2078[18]; - %load 35, V_$006D2078[19]; - %load 36, V_$006D2078[20]; - %load 37, V_$006D2078[21]; - %load 38, V_$006D2078[22]; - %load 39, V_$006D2078[23]; - %ix/load 0, 8; - %assign/v0 V_$006D40D8[0], 0, 32; - %load 32, V_$006D2078[8]; - %load 33, V_$006D2078[9]; - %load 34, V_$006D2078[10]; - %load 35, V_$006D2078[11]; - %load 36, V_$006D2078[12]; - %load 37, V_$006D2078[13]; - %load 38, V_$006D2078[14]; - %load 39, V_$006D2078[15]; - %ix/load 0, 8; - %assign/v0 V_$006D43B8[0], 0, 32; - %load 32, V_$006D2078[0]; - %load 33, V_$006D2078[1]; - %load 34, V_$006D2078[2]; - %load 35, V_$006D2078[3]; - %load 36, V_$006D2078[4]; - %load 37, V_$006D2078[5]; - %load 38, V_$006D2078[6]; - %load 39, V_$006D2078[7]; - %ix/load 0, 8; - %assign/v0 V_$006D4F90[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D3580[0], 0, 1; - %assign V_$006D5880[0], 0, 1; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.18 ; - %load 32, V_$006D6C00[0]; - %load 33, V_$006D6648[0]; - %load 34, V_$006D6F98[0]; - %load 35, V_$006D6F98[1]; - %load 36, V_$006D6F98[2]; - %load 37, V_$006D6F98[3]; - %load 38, V_$006D6F98[4]; - %load 39, V_$006D6F98[5]; - %load 40, V_$006D6F98[6]; - %load 41, V_$006D6F98[7]; - %cmpi/u 34, 0, 8; - %inv 4, 1; - %mov 34, 4, 1; - %or 33, 34, 1; - %and 32, 33, 1; - %jmp/0xz T_25.73, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %assign V_$006D5DD8[0], 0, 1; - %assign V_$006D5DD8[1], 0, 0; - %jmp T_25.74; -T_25.73 ; - %load 32, V_$006D6C00[0]; - %jmp/0xz T_25.75, 32; - %assign V_$006D1C70[0], 0, 0; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[5], 0, 0; -T_25.75 ; -T_25.74 ; - %jmp T_25.48; -T_25.19 ; - %assign V_$006D5880[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.20 ; - %load/v 32, V_$006D3370[0], 8; - %cmpi/u 32, 254, 8; - %inv 4, 1; - %mov 32, 4, 1; - %load/v 33, V_$006D6CA8[0], 10; - %cmpi/u 33, 72, 10; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_25.77, 32; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %load/v 32, V_$006D6CA8[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 0; - %jmp T_25.78; -T_25.77 ; - %load/v 32, V_$006D6CA8[0], 10; - %cmpi/u 32, 72, 10; - %jmp/0xz T_25.79, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %assign V_$006D5DD8[0], 0, 0; - %assign V_$006D5DD8[1], 0, 1; - %jmp T_25.80; -T_25.79 ; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %assign V_$006D5FB0[0], 0, 1; -T_25.80 ; -T_25.78 ; - %jmp T_25.48; -T_25.21 ; - %load 32, V_$006D68B8[0]; - %jmp/0xz T_25.81, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %load 32, V_$006D66D8[0]; - %load 33, V_$006D66D8[1]; - %load 34, V_$006D66D8[2]; - %load 35, V_$006D66D8[3]; - %load 36, V_$006D66D8[4]; - %load 37, V_$006D66D8[5]; - %load 38, V_$006D66D8[6]; - %load 39, V_$006D66D8[7]; - %ix/load 0, 8; - %assign/v0 V_$006D4D10[0], 0, 32; -T_25.81 ; - %jmp T_25.48; -T_25.22 ; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; - %assign V_$006D5FB0[0], 0, 1; - %ix/load 0, 5; - %assign/v0 V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.23 ; - %load/v 32, V_$006D3278[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006D4750[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 0; - %load/v 32, V_$006D3278[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_25.83, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.84; -T_25.83 ; - %assign V_$006D1C70[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; -T_25.84 ; - %jmp T_25.48; -T_25.24 ; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.25 ; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D5FB0[0], 0, 0; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.26 ; - %load/v 32, V_$006D3310[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006D4A70[0], 0, 32; - %load/v 32, V_$006D3310[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_25.85, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[5], 0, 0; -T_25.85 ; - %jmp T_25.48; -T_25.27 ; - %assign V_$006D62B0[0], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %load/v 32, V_$006D32B0[0], 9; - %addi 32, 1, 9; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 32; - %assign V_$006D1C70[0], 0, 1; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.48; -T_25.28 ; - %assign V_$006D62B0[0], 0, 0; - %load 32, V_$006D68B8[0]; - %jmp/0xz T_25.87, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %assign V_$006D5800[0], 0, 1; - %assign V_$006D5FB0[0], 0, 1; - %load 32, V_$006D66D8[0]; - %load 33, V_$006D66D8[1]; - %load 34, V_$006D66D8[2]; - %load 35, V_$006D66D8[3]; - %load 36, V_$006D66D8[4]; - %load 37, V_$006D66D8[5]; - %load 38, V_$006D66D8[6]; - %load 39, V_$006D66D8[7]; - %ix/load 0, 8; - %assign/v0 V_$006D5520[0], 0, 32; -T_25.87 ; - %jmp T_25.48; -T_25.29 ; - %load/v 32, V_$006D32B0[0], 9; - %cmpi/u 32, 0, 9; - %jmp/0xz T_25.89, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %assign V_$006D5FB0[0], 0, 0; - %assign V_$006D5800[0], 0, 0; - %jmp T_25.90; -T_25.89 ; - %ix/load 0, 5; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %assign V_$006D5FB0[0], 0, 0; - %assign V_$006D5800[0], 0, 0; -T_25.90 ; - %jmp T_25.48; -T_25.30 ; - %ix/load 0, 5; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %assign V_$006D5FB0[0], 0, 0; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 0; - %jmp T_25.48; -T_25.31 ; - %assign V_$006D62B0[0], 0, 0; - %load 32, V_$006D7160[0]; - %jmp/0xz T_25.91, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; -T_25.91 ; - %jmp T_25.48; -T_25.32 ; - %assign V_$006D62B0[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.48; -T_25.33 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.93, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.93 ; - %jmp T_25.48; -T_25.34 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.95, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.95 ; - %jmp T_25.48; -T_25.35 ; - %assign V_$006D62B0[0], 0, 0; - %load/v 32, V_$006D32B0[0], 9; - %cmpi/u 32, 0, 9; - %jmp/0xz T_25.97, 4; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.98; -T_25.97 ; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; -T_25.98 ; - %jmp T_25.48; -T_25.36 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.99, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %load 32, V_$006D73E8[0]; - %load 33, V_$006D73E8[1]; - %load 34, V_$006D73E8[2]; - %load 35, V_$006D73E8[3]; - %load 36, V_$006D73E8[4]; - %load 37, V_$006D73E8[5]; - %load 38, V_$006D73E8[6]; - %load 39, V_$006D73E8[7]; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 32; - %assign V_$006D62B0[0], 0, 1; -T_25.99 ; - %jmp T_25.48; -T_25.37 ; - %assign V_$006D6330[0], 0, 1; - %load/v 32, V_$006D32B0[0], 9; - %addi 32, 1, 9; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 32; - %assign V_$006D1C70[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.38 ; - %assign V_$006D6330[0], 0, 0; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.39 ; - %ix/load 0, 9; - %assign/v0 V_$006D5200[0], 0, 0; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.40 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.101, 4; - %assign V_$006D1C70[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.101 ; - %jmp T_25.48; -T_25.41 ; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %jmp T_25.48; -T_25.42 ; - %assign V_$006D62B0[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 0; - %load 32, V_$006D7160[0]; - %jmp/0xz T_25.103, 32; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; -T_25.103 ; - %jmp T_25.48; -T_25.43 ; - %load 32, V_$006D7198[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_25.105, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 0; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; -T_25.105 ; - %jmp T_25.48; -T_25.44 ; - %load/v 32, V_$006D6CA8[0], 10; - %cmpi/u 32, 512, 10; - %jmp/0xz T_25.107, 4; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006D1C70[3], 0, 0; - %assign V_$006D63B0[0], 0, 0; - %assign V_$006D63B0[1], 0, 1; - %jmp T_25.108; -T_25.107 ; - %load/v 32, V_$006D3370[0], 5; - %cmpi/u 32, 5, 5; - %jmp/0xz T_25.109, 4; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %jmp T_25.110; -T_25.109 ; - %assign V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; -T_25.110 ; -T_25.108 ; - %jmp T_25.48; -T_25.45 ; - %ix/load 0, 4; - %assign/v0 V_$006D1C70[0], 0, 1; - %assign V_$006D1C70[4], 0, 0; - %assign V_$006D1C70[5], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D6008[0], 0, 1; - %assign V_$006D62B0[0], 0, 1; - %load/v 32, V_$006D6CA8[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006D5A20[0], 0, 32; - %assign V_$006D5FB0[0], 0, 1; - %jmp T_25.48; -T_25.46 ; - %load 32, V_$006D68B8[0]; - %jmp/0xz T_25.111, 32; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 0; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %load 32, V_$006D66D8[0]; - %load 33, V_$006D66D8[1]; - %load 34, V_$006D66D8[2]; - %load 35, V_$006D66D8[3]; - %load 36, V_$006D66D8[4]; - %load 37, V_$006D66D8[5]; - %load 38, V_$006D66D8[6]; - %load 39, V_$006D66D8[7]; - %ix/load 0, 8; - %assign/v0 V_$006D4D10[0], 0, 32; -T_25.111 ; - %jmp T_25.48; -T_25.47 ; - %assign V_$006D1C70[0], 0, 0; - %assign V_$006D1C70[1], 0, 1; - %assign V_$006D1C70[2], 0, 1; - %assign V_$006D1C70[3], 0, 0; - %assign V_$006D1C70[4], 0, 1; - %assign V_$006D1C70[5], 0, 0; - %assign V_$006D62B0[0], 0, 0; - %assign V_$006D5FB0[0], 0, 0; - %jmp T_25.48; -T_25.48 ; - %jmp T_25; - .thread T_25, $push; - .scope S_006D0E50; -T_26 ; - %wait E_003DE478; - %load 32, V_$006D66A0[0]; - %jmp/0xz T_26.0, 32; - %ix/load 0, 6; - %assign/v0 V_$006D1830[0], 0, 0; - %jmp T_26.1; -T_26.0 ; - %load/v 32, V_$006D1C70[0], 6; - %ix/load 0, 6; - %assign/v0 V_$006D1830[0], 0, 32; -T_26.1 ; - %jmp T_26; - .thread T_26; - .scope S_006D0E50; -T_27 ; - %wait E_003DE478; - %load 32, V_$006D66A0[0]; - %jmp/0xz T_27.0, 32; - %assign V_$006D6E38[0], 0, 0; - %assign V_$006D6C70[0], 0, 1; - %assign V_$006D6488[0], 0, 0; - %assign V_$006D6488[1], 0, 0; - %assign V_$006D75E8[0], 0, 0; - %assign V_$006D75E8[1], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D7208[0], 0, 0; - %assign V_$006D72A8[0], 0, 0; - %assign V_$006D6920[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D2970[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D2AB0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D2C18[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D2D78[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3138[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D2790[0], 0, 0; - %assign V_$006D6C38[0], 0, 0; - %assign V_$006D7488[0], 0, 0; - %assign V_$006D6B90[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D6958[0], 0, 0; - %ix/load 0, 9; - %assign/v0 V_$006D32B0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3278[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3310[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D6CA8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D3370[0], 0, 0; - %jmp T_27.1; -T_27.0 ; - %load/v 32, V_$006D5F20[0], 1; - %assign V_$006D6E38[0], 0, 32; - %load/v 32, V_$006D5948[0], 1; - %assign V_$006D6C70[0], 0, 32; - %load/v 32, V_$006D5DD8[0], 2; - %assign V_$006D6488[0], 0, 32; - %assign V_$006D6488[1], 0, 33; - %load/v 32, V_$006D63B0[0], 2; - %assign V_$006D75E8[0], 0, 32; - %assign V_$006D75E8[1], 0, 33; - %load/v 32, V_$006D6008[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D7208[0], 0, 32; - %load/v 32, V_$006D62B0[0], 1; - %assign V_$006D72A8[0], 0, 32; - %load/v 32, V_$006D5FB0[0], 1; - %assign V_$006D6920[0], 0, 32; - %load/v 32, V_$006D3890[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D2970[0], 0, 32; - %load/v 32, V_$006D3B18[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D2AB0[0], 0, 32; - %load/v 32, V_$006D40D8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D2C18[0], 0, 32; - %load/v 32, V_$006D43B8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D2D78[0], 0, 32; - %load/v 32, V_$006D4F90[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3138[0], 0, 32; - %load/v 32, V_$006D3580[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D2790[0], 0, 32; - %load/v 32, V_$006D5880[0], 1; - %assign V_$006D6C38[0], 0, 32; - %load/v 32, V_$006D6330[0], 1; - %assign V_$006D7488[0], 0, 32; - %load/v 32, V_$006D5800[0], 1; - %assign V_$006D6B90[0], 0, 32; - %load/v 32, V_$006D5520[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D6958[0], 0, 32; - %load/v 32, V_$006D5200[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006D32B0[0], 0, 32; - %load/v 32, V_$006D4750[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3278[0], 0, 32; - %load/v 32, V_$006D4A70[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3310[0], 0, 32; - %load/v 32, V_$006D5A20[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D6CA8[0], 0, 32; - %load/v 32, V_$006D4D10[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D3370[0], 0, 32; -T_27.1 ; - %jmp T_27; - .thread T_27; - .scope S_006CC9E8; -T_28 ; - %wait E_006CCC00; - %load 32, V_$006D13D0[0]; - %load 33, V_$006D1428[0]; - %or 32, 33, 1; - %assign V_$006D1398[0], 0, 32; - %jmp T_28; - .thread T_28, $push; - .scope S_006CC9E8; -T_29 ; - %wait E_003DE478; - %load 32, V_$006CDA58[0]; - %load 33, V_$006CDA58[1]; - %load 34, V_$006CDA58[2]; - %load 35, V_$006CDA58[3]; - %load 36, V_$006CDA58[4]; - %load 37, V_$006CDA58[5]; - %load 38, V_$006CDA58[6]; - %load 39, V_$006CDA58[7]; - %load 40, V_$006CDCF8[0]; - %load 41, V_$006CDCF8[1]; - %load 42, V_$006CDCF8[2]; - %load 43, V_$006CDCF8[3]; - %load 44, V_$006CDCF8[4]; - %load 45, V_$006CDCF8[5]; - %load 46, V_$006CDCF8[6]; - %load 47, V_$006CDCF8[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CD788[0], 0, 32; - %load 32, V_$006CE428[0]; - %load 33, V_$006CE428[1]; - %load 34, V_$006CE428[2]; - %load 35, V_$006CE428[3]; - %load 36, V_$006CE428[4]; - %load 37, V_$006CE428[5]; - %load 38, V_$006CE428[6]; - %load 39, V_$006CE428[7]; - %load 40, V_$006CE538[0]; - %load 41, V_$006CE538[1]; - %load 42, V_$006CE538[2]; - %load 43, V_$006CE538[3]; - %load 44, V_$006CE538[4]; - %load 45, V_$006CE538[5]; - %load 46, V_$006CE538[6]; - %load 47, V_$006CE538[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CE188[0], 0, 32; - %load 32, V_$006CE460[0]; - %load 33, V_$006CE460[1]; - %load 34, V_$006CE460[2]; - %load 35, V_$006CE460[3]; - %load 36, V_$006CE460[4]; - %load 37, V_$006CE460[5]; - %load 38, V_$006CE460[6]; - %load 39, V_$006CE460[7]; - %load 40, V_$006CECD8[0]; - %load 41, V_$006CECD8[1]; - %load 42, V_$006CECD8[2]; - %load 43, V_$006CECD8[3]; - %load 44, V_$006CECD8[4]; - %load 45, V_$006CECD8[5]; - %load 46, V_$006CECD8[6]; - %load 47, V_$006CECD8[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CE7B0[0], 0, 32; - %load 32, V_$006CF3F8[0]; - %load 33, V_$006CF3F8[1]; - %load 34, V_$006CF3F8[2]; - %load 35, V_$006CF3F8[3]; - %load 36, V_$006CF3F8[4]; - %load 37, V_$006CF3F8[5]; - %load 38, V_$006CF3F8[6]; - %load 39, V_$006CF3F8[7]; - %load 40, V_$006CFF80[0]; - %load 41, V_$006CFF80[1]; - %load 42, V_$006CFF80[2]; - %load 43, V_$006CFF80[3]; - %load 44, V_$006CFF80[4]; - %load 45, V_$006CFF80[5]; - %load 46, V_$006CFF80[6]; - %load 47, V_$006CFF80[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CF158[0], 0, 32; - %load 32, V_$006CFA18[0]; - %load 33, V_$006CFA18[1]; - %load 34, V_$006CFA18[2]; - %load 35, V_$006CFA18[3]; - %load 36, V_$006CFA18[4]; - %load 37, V_$006CFA18[5]; - %load 38, V_$006CFA18[6]; - %load 39, V_$006CFA18[7]; - %load 40, V_$006CFCB8[0]; - %load 41, V_$006CFCB8[1]; - %load 42, V_$006CFCB8[2]; - %load 43, V_$006CFCB8[3]; - %load 44, V_$006CFCB8[4]; - %load 45, V_$006CFCB8[5]; - %load 46, V_$006CFCB8[6]; - %load 47, V_$006CFCB8[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CF750[0], 0, 32; - %load 32, V_$006CD390[0]; - %load 33, V_$006CD390[1]; - %load 34, V_$006CD390[2]; - %load 35, V_$006CD390[3]; - %load 36, V_$006CD390[4]; - %load 37, V_$006CD390[5]; - %load 38, V_$006CD390[6]; - %load 39, V_$006CD390[7]; - %load 40, V_$006CDF58[0]; - %load 41, V_$006CDF58[1]; - %load 42, V_$006CDF58[2]; - %load 43, V_$006CDF58[3]; - %load 44, V_$006CDF58[4]; - %load 45, V_$006CDF58[5]; - %load 46, V_$006CDF58[6]; - %load 47, V_$006CDF58[7]; - %or 32, 40, 8; - %ix/load 0, 8; - %assign/v0 V_$006CD0D8[0], 0, 32; - %jmp T_29; - .thread T_29; - .scope S_006CC9E8; -T_30 ; - %wait E_006CCA58; - %load/v 32, V_$006CCC20[0], 5; - %ix/load 0, 5; - %assign/v0 V_$006CCD78[0], 0, 32; - %load/v 32, V_$006D17B8[0], 1; - %assign V_$006D0AC0[0], 0, 32; - %load/v 32, V_$006D1678[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %load/v 32, V_$006D14A8[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D0F08[0], 0, 32; - %load/v 32, V_$006D1308[0], 1; - %assign V_$006D04F0[0], 0, 32; - %load/v 32, V_$006D0B40[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D01A8[0], 0, 32; - %load/v 32, V_$006D1010[0], 1; - %assign V_$006D0488[0], 0, 32; - %load/v 32, V_$006D1360[0], 1; - %assign V_$006D0E18[0], 0, 32; - %load/v 32, V_$006CCC20[0], 5; - %cmpi/u 32, 17, 5; - %jmp/1 T_30.0, 6; - %cmpi/u 32, 18, 5; - %jmp/1 T_30.1, 6; - %cmpi/u 32, 0, 5; - %jmp/1 T_30.2, 6; - %cmpi/u 32, 1, 5; - %jmp/1 T_30.3, 6; - %cmpi/u 32, 2, 5; - %jmp/1 T_30.4, 6; - %cmpi/u 32, 3, 5; - %jmp/1 T_30.5, 6; - %cmpi/u 32, 4, 5; - %jmp/1 T_30.6, 6; - %cmpi/u 32, 5, 5; - %jmp/1 T_30.7, 6; - %cmpi/u 32, 6, 5; - %jmp/1 T_30.8, 6; - %cmpi/u 32, 7, 5; - %jmp/1 T_30.9, 6; - %cmpi/u 32, 8, 5; - %jmp/1 T_30.10, 6; - %cmpi/u 32, 9, 5; - %jmp/1 T_30.11, 6; - %cmpi/u 32, 10, 5; - %jmp/1 T_30.12, 6; - %cmpi/u 32, 11, 5; - %jmp/1 T_30.13, 6; - %cmpi/u 32, 12, 5; - %jmp/1 T_30.14, 6; - %cmpi/u 32, 13, 5; - %jmp/1 T_30.15, 6; - %cmpi/u 32, 14, 5; - %jmp/1 T_30.16, 6; - %cmpi/u 32, 15, 5; - %jmp/1 T_30.17, 6; - %cmpi/u 32, 16, 5; - %jmp/1 T_30.18, 6; - %cmpi/u 32, 19, 5; - %jmp/1 T_30.19, 6; - %jmp T_30.20; -T_30.0 ; - %assign V_$006D0E18[0], 0, 1; - %load/v 32, V_$006D1398[0], 1; - %jmp/0xz T_30.21, 32; - %ix/load 0, 4; - %assign/v0 V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %assign V_$006D0E18[0], 0, 0; - %assign V_$006D0488[0], 0, 0; -T_30.21 ; - %jmp T_30.20; -T_30.1 ; - %assign V_$006D0E18[0], 0, 0; - %assign V_$006D0AC0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 0; - %assign V_$006D04F0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D01A8[0], 0, 0; - %assign V_$006D0488[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D0F08[0], 0, 0; - %assign V_$006CCD78[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[4], 0, 1; - %jmp T_30.20; -T_30.2 ; - %assign V_$006D0AC0[0], 0, 0; - %assign V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[1], 0, 1; - %assign V_$006CCD78[2], 0, 0; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %jmp T_30.20; -T_30.3 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.23, 4; - %ix/load 0, 5; - %assign/v0 V_$006CCD78[0], 0, 0; - %load/v 32, V_$006CE7B0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.23 ; - %jmp T_30.20; -T_30.4 ; - %ix/load 0, 4; - %assign/v0 V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[4], 0, 1; - %jmp T_30.20; -T_30.5 ; - %assign V_$006D0AC0[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %jmp T_30.20; -T_30.6 ; - %assign V_$006D0AC0[0], 0, 0; - %assign V_$006CCD78[0], 0, 1; - %ix/load 0, 4; - %assign/v0 V_$006CCD78[1], 0, 0; - %jmp T_30.20; -T_30.7 ; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 1; - %assign V_$006CCD78[2], 0, 0; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 1; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 1; - %assign V_$006D0AC0[0], 0, 1; - %load/v 32, V_$006D14A8[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006D0F08[0], 0, 32; - %assign V_$006D04F0[0], 0, 1; - %jmp T_30.20; -T_30.8 ; - %load 32, V_$006D12B0[0]; - %jmp/0xz T_30.25, 32; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 0; - %load 32, V_$006D1150[0]; - %load 33, V_$006D1150[1]; - %load 34, V_$006D1150[2]; - %load 35, V_$006D1150[3]; - %load 36, V_$006D1150[4]; - %load 37, V_$006D1150[5]; - %load 38, V_$006D1150[6]; - %load 39, V_$006D1150[7]; - %ix/load 0, 8; - %assign/v0 V_$006D01A8[0], 0, 32; -T_30.25 ; - %jmp T_30.20; -T_30.9 ; - %load/v 32, V_$006D14A8[0], 10; - %cmpi/u 32, 512, 10; - %jmp/0xz T_30.27, 4; - %assign V_$006CCD78[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[4], 0, 1; - %assign V_$006D0488[0], 0, 1; - %jmp T_30.28; -T_30.27 ; - %load/v 32, V_$006D0B40[7], 1; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.29, 4; - %assign V_$006CCD78[0], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[4], 0, 1; - %jmp T_30.30; -T_30.29 ; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 0; -T_30.30 ; -T_30.28 ; - %jmp T_30.20; -T_30.10 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.31, 4; - %assign V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 0; - %load/v 32, V_$006CE188[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.31 ; - %jmp T_30.20; -T_30.11 ; - %assign V_$006D0AC0[0], 0, 0; - %assign V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %jmp T_30.20; -T_30.12 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.33, 4; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 0; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %load/v 32, V_$006CF158[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.33 ; - %jmp T_30.20; -T_30.13 ; - %assign V_$006D0AC0[0], 0, 0; - %assign V_$006CCD78[0], 0, 0; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[1], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %jmp T_30.20; -T_30.14 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.35, 4; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 1; - %assign V_$006CCD78[2], 0, 0; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %load/v 32, V_$006CF750[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.35 ; - %jmp T_30.20; -T_30.15 ; - %assign V_$006D0AC0[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D0F08[0], 0, 0; - %load 32, V_$006D15B8[0]; - %jmp/0xz T_30.37, 32; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 0; -T_30.37 ; - %jmp T_30.20; -T_30.16 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.39, 4; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 0; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 1; - %assign V_$006CCD78[4], 0, 0; - %load/v 32, V_$006CD0D8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.39 ; - %jmp T_30.20; -T_30.17 ; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.41, 4; - %assign V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[1], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[2], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 1; - %assign V_$006D0AC0[0], 0, 1; -T_30.41 ; - %jmp T_30.20; -T_30.18 ; - %assign V_$006D0AC0[0], 0, 0; - %load 32, V_$006D1610[0]; - %cmpi/u 32, 0, 1; - %jmp/0xz T_30.43, 4; - %assign V_$006CCD78[0], 0, 1; - %assign V_$006CCD78[1], 0, 1; - %ix/load 0, 3; - %assign/v0 V_$006CCD78[2], 0, 0; - %load/v 32, V_$006CD788[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D07C0[0], 0, 32; - %assign V_$006D0AC0[0], 0, 1; -T_30.43 ; - %jmp T_30.20; -T_30.19 ; - %assign V_$006CCD78[0], 0, 0; - %assign V_$006CCD78[1], 0, 1; - %assign V_$006CCD78[2], 0, 1; - %assign V_$006CCD78[3], 0, 0; - %assign V_$006CCD78[4], 0, 0; - %assign V_$006D0AC0[0], 0, 0; - %assign V_$006D04F0[0], 0, 0; - %jmp T_30.20; -T_30.20 ; - %jmp T_30; - .thread T_30, $push; - .scope S_006CC9E8; -T_31 ; - %wait E_003DE478; - %load 32, V_$006D1090[0]; - %jmp/0xz T_31.0, 32; - %assign V_$006CCC20[0], 0, 0; - %assign V_$006CCC20[1], 0, 1; - %assign V_$006CCC20[2], 0, 0; - %assign V_$006CCC20[3], 0, 0; - %assign V_$006CCC20[4], 0, 1; - %jmp T_31.1; -T_31.0 ; - %load/v 32, V_$006CCD78[0], 5; - %ix/load 0, 5; - %assign/v0 V_$006CCC20[0], 0, 32; -T_31.1 ; - %jmp T_31; - .thread T_31; - .scope S_006CC9E8; -T_32 ; - %wait E_003DE478; - %load 32, V_$006D1090[0]; - %jmp/0xz T_32.0, 32; - %assign V_$006D17B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D1678[0], 0, 0; - %assign V_$006D1308[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006D0B40[0], 0, 0; - %assign V_$006D1010[0], 0, 0; - %assign V_$006D1360[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006D14A8[0], 0, 0; - %jmp T_32.1; -T_32.0 ; - %load/v 32, V_$006D0AC0[0], 1; - %assign V_$006D17B8[0], 0, 32; - %load/v 32, V_$006D07C0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D1678[0], 0, 32; - %load/v 32, V_$006D04F0[0], 1; - %assign V_$006D1308[0], 0, 32; - %load/v 32, V_$006D01A8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006D0B40[0], 0, 32; - %load/v 32, V_$006D0488[0], 1; - %assign V_$006D1010[0], 0, 32; - %load/v 32, V_$006D0E18[0], 1; - %assign V_$006D1360[0], 0, 32; - %load/v 32, V_$006D0F08[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006D14A8[0], 0, 32; -T_32.1 ; - %jmp T_32; - .thread T_32; - .scope S_006CABC8; -T_33 ; - %wait E_003DE478; - %load 32, V_$006CBE80[0]; - %jmp/0xz T_33.0, 32; - %ix/load 0, 8; - %assign/v0 V_$006CC858[0], 0, 0; - %assign V_$006CC7A8[0], 0, 0; - %jmp T_33.1; -T_33.0 ; - %load 32, V_$006CBD38[0]; - %jmp/0xz T_33.2, 32; - %load 32, V_$006CBA78[0]; - %load 33, V_$006CBA78[1]; - %load 34, V_$006CBA78[2]; - %load 35, V_$006CBA78[3]; - %load 36, V_$006CBA78[4]; - %load 37, V_$006CBA78[5]; - %load 38, V_$006CBA78[6]; - %load 39, V_$006CBA78[7]; - %ix/load 0, 8; - %assign/v0 V_$006CC858[0], 0, 32; - %assign V_$006CC7A8[0], 0, 1; - %jmp T_33.3; -T_33.2 ; - %load 32, V_$006CBAB0[0]; - %jmp/0xz T_33.4, 32; - %load 32, V_$006CC038[0]; - %load 33, V_$006CC038[1]; - %load 34, V_$006CC038[2]; - %load 35, V_$006CC038[3]; - %load 36, V_$006CC038[4]; - %load 37, V_$006CC038[5]; - %load 38, V_$006CC038[6]; - %load 39, V_$006CC038[7]; - %ix/load 0, 8; - %assign/v0 V_$006CC858[0], 0, 32; - %assign V_$006CC7A8[0], 0, 1; - %jmp T_33.5; -T_33.4 ; - %load 32, V_$006CCE78[0]; - %jmp/0xz T_33.6, 32; - %load 32, V_$006CC2F8[0]; - %load 33, V_$006CC2F8[1]; - %load 34, V_$006CC2F8[2]; - %load 35, V_$006CC2F8[3]; - %load 36, V_$006CC2F8[4]; - %load 37, V_$006CC2F8[5]; - %load 38, V_$006CC2F8[6]; - %load 39, V_$006CC2F8[7]; - %ix/load 0, 8; - %assign/v0 V_$006CC858[0], 0, 32; - %assign V_$006CC7A8[0], 0, 1; - %jmp T_33.7; -T_33.6 ; - %load 32, V_$006CC720[0]; - %jmp/0xz T_33.8, 32; - %load 32, V_$006CCF00[0]; - %load 33, V_$006CCF00[1]; - %load 34, V_$006CCF00[2]; - %load 35, V_$006CCF00[3]; - %load 36, V_$006CCF00[4]; - %load 37, V_$006CCF00[5]; - %load 38, V_$006CCF00[6]; - %load 39, V_$006CCF00[7]; - %ix/load 0, 8; - %assign/v0 V_$006CC858[0], 0, 32; - %assign V_$006CC7A8[0], 0, 1; -T_33.8 ; -T_33.7 ; -T_33.5 ; -T_33.3 ; - %load 32, V_$006CC800[0]; - %jmp/0xz T_33.10, 32; - %assign V_$006CC7A8[0], 0, 0; -T_33.10 ; -T_33.1 ; - %jmp T_33; - .thread T_33; - .scope S_006CABC8; -T_34 ; - %wait E_003DE478; - %load 32, V_$006CBE80[0]; - %jmp/0xz T_34.0, 32; - %ix/load 0, 8; - %assign/v0 V_$006CB750[0], 0, 0; - %assign V_$006CB9B8[0], 0, 0; - %jmp T_34.1; -T_34.0 ; - %load 32, V_$006CBEB8[0]; - %load 33, V_$006CBF60[0]; - %or 32, 33, 1; - %load 33, V_$006CB4F8[0]; - %or 32, 33, 1; - %load 33, V_$006CB568[0]; - %or 32, 33, 1; - %jmp/0xz T_34.2, 32; - %assign V_$006CB9B8[0], 0, 0; -T_34.2 ; - %load 32, V_$006CBA20[0]; - %jmp/0xz T_34.4, 32; - %assign V_$006CB9B8[0], 0, 1; - %load 32, V_$006CB5F0[0]; - %load 33, V_$006CB5F0[1]; - %load 34, V_$006CB5F0[2]; - %load 35, V_$006CB5F0[3]; - %load 36, V_$006CB5F0[4]; - %load 37, V_$006CB5F0[5]; - %load 38, V_$006CB5F0[6]; - %load 39, V_$006CB5F0[7]; - %ix/load 0, 8; - %assign/v0 V_$006CB750[0], 0, 32; -T_34.4 ; -T_34.1 ; - %jmp T_34; - .thread T_34; - .scope S_006C9128; -T_35 ; - %wait E_006C8530; - %load/v 32, V_$006C9298[0], 2; - %assign V_$006C92D0[0], 0, 32; - %assign V_$006C92D0[1], 0, 33; - %load/v 32, V_$006CA688[0], 1; - %assign V_$006C9938[0], 0, 32; - %load/v 32, V_$006CAB30[0], 1; - %assign V_$006C99F8[0], 0, 32; - %load/v 32, V_$006CB278[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006CA2F0[0], 0, 32; - %load/v 32, V_$006CA718[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C99C0[0], 0, 32; - %load/v 32, V_$006C9BE0[0], 4; - %ix/load 0, 4; - %assign/v0 V_$006C9FA0[0], 0, 32; - %load/v 32, V_$006C9D00[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 32; - %load/v 32, V_$006CAC78[0], 1; - %assign V_$006CA268[0], 0, 32; - %load/v 32, V_$006CAA28[0], 1; - %assign V_$006CA118[0], 0, 32; - %load/v 32, V_$006CAAD8[0], 1; - %assign V_$006CA198[0], 0, 32; - %load/v 32, V_$006C90B8[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C9660[0], 0, 32; - %load/v 32, V_$006C9298[0], 2; - %cmpi/u 32, 0, 2; - %jmp/1 T_35.0, 6; - %cmpi/u 32, 1, 2; - %jmp/1 T_35.1, 6; - %cmpi/u 32, 2, 2; - %jmp/1 T_35.2, 6; - %cmpi/u 32, 3, 2; - %jmp/1 T_35.3, 6; - %jmp T_35.4; -T_35.0 ; - %assign V_$006C9938[0], 0, 0; - %assign V_$006C99F8[0], 0, 1; - %load 32, V_$006CAB90[0]; - %jmp/0xz T_35.5, 32; - %assign V_$006C92D0[0], 0, 1; - %assign V_$006C92D0[1], 0, 0; - %load 32, V_$006CAD08[0]; - %load 33, V_$006CAD08[1]; - %load 34, V_$006CAD08[2]; - %load 35, V_$006CAD08[3]; - %load 36, V_$006CAD08[4]; - %load 37, V_$006CAD08[5]; - %load 38, V_$006CAD08[6]; - %load 39, V_$006CAD08[7]; - %ix/load 0, 8; - %assign/v0 V_$006CA2F0[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006C99C0[0], 0, 0; - %ix/load 0, 4; - %assign/v0 V_$006C9FA0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 0; - %assign V_$006CA268[0], 0, 1; - %assign V_$006C99F8[0], 0, 0; -T_35.5 ; - %jmp T_35.4; -T_35.1 ; - %load/v 32, V_$006C9D00[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 32; - %assign V_$006CA268[0], 0, 0; - %assign V_$006C9938[0], 0, 0; - %load/v 32, V_$006C9D00[0], 8; - %load 40, V_$006C9CC8[0]; - %load 41, V_$006C9CC8[1]; - %load 42, V_$006C9CC8[2]; - %load 43, V_$006C9CC8[3]; - %load 44, V_$006C9CC8[4]; - %load 45, V_$006C9CC8[5]; - %load 46, V_$006C9CC8[6]; - %load 47, V_$006C9CC8[7]; - %cmp/u 32, 40, 8; - %mov 32, 4, 1; - %jmp/0xz T_35.7, 32; - %assign V_$006C92D0[0], 0, 0; - %assign V_$006C92D0[1], 0, 1; - %assign V_$006CA118[0], 0, 0; - %load/v 32, V_$006CB278[7], 1; - %assign V_$006CA198[0], 0, 32; - %mov 32, 0, 1; - %load/v 33, V_$006CB278[0], 7; - %ix/load 0, 8; - %assign/v0 V_$006CA2F0[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 0; -T_35.7 ; - %jmp T_35.4; -T_35.2 ; - %load/v 32, V_$006C9D00[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 32; - %load/v 32, V_$006C9BE0[0], 4; - %cmpi/u 32, 8, 4; - %mov 32, 4, 1; - %load 33, V_$006CAB90[0]; - %and 32, 33, 1; - %jmp/0xz T_35.9, 32; - %assign V_$006C92D0[0], 0, 1; - %assign V_$006C92D0[1], 0, 0; - %assign V_$006C9938[0], 0, 1; - %load/v 32, V_$006CA718[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C9660[0], 0, 32; - %load 32, V_$006CAD08[0]; - %load 33, V_$006CAD08[1]; - %load 34, V_$006CAD08[2]; - %load 35, V_$006CAD08[3]; - %load 36, V_$006CAD08[4]; - %load 37, V_$006CAD08[5]; - %load 38, V_$006CAD08[6]; - %load 39, V_$006CAD08[7]; - %ix/load 0, 8; - %assign/v0 V_$006CA2F0[0], 0, 32; - %ix/load 0, 4; - %assign/v0 V_$006C9FA0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 0; - %assign V_$006CA268[0], 0, 1; - %jmp T_35.10; -T_35.9 ; - %load/v 32, V_$006C9BE0[0], 4; - %cmpi/u 32, 8, 4; - %jmp/0xz T_35.11, 4; - %assign V_$006C92D0[0], 0, 0; - %assign V_$006C92D0[1], 0, 0; - %assign V_$006C9938[0], 0, 1; - %load/v 32, V_$006CA718[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C9660[0], 0, 32; - %jmp T_35.12; -T_35.11 ; - %load/v 32, V_$006C9D00[0], 8; - %load 40, V_$006C9CC8[0]; - %load 41, V_$006C9CC8[1]; - %load 42, V_$006C9CC8[2]; - %load 43, V_$006C9CC8[3]; - %load 44, V_$006C9CC8[4]; - %load 45, V_$006C9CC8[5]; - %load 46, V_$006C9CC8[6]; - %load 47, V_$006C9CC8[7]; - %cmp/u 32, 40, 8; - %mov 32, 4, 1; - %jmp/0xz T_35.13, 32; - %assign V_$006C92D0[0], 0, 1; - %assign V_$006C92D0[1], 0, 0; - %assign V_$006CA118[0], 0, 1; - %load/v 32, V_$006C9BE0[0], 4; - %addi 32, 1, 4; - %ix/load 0, 4; - %assign/v0 V_$006C9FA0[0], 0, 32; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 0; - %load 32, V_$006CAA80[0]; - %load/v 33, V_$006CA718[0], 7; - %ix/load 0, 8; - %assign/v0 V_$006C99C0[0], 0, 32; -T_35.13 ; -T_35.12 ; -T_35.10 ; - %jmp T_35.4; -T_35.3 ; - %ix/load 0, 4; - %assign/v0 V_$006C9FA0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C9440[0], 0, 0; - %assign V_$006CA268[0], 0, 0; - %assign V_$006C9938[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006CA2F0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C99C0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C9660[0], 0, 0; - %assign V_$006CA198[0], 0, 0; - %assign V_$006CA118[0], 0, 0; - %assign V_$006C99F8[0], 0, 0; - %assign V_$006C92D0[0], 0, 0; - %assign V_$006C92D0[1], 0, 0; - %jmp T_35.4; -T_35.4 ; - %jmp T_35; - .thread T_35, $push; - .scope S_006C9128; -T_36 ; - %wait E_003DE478; - %load 32, V_$006CAEC0[0]; - %jmp/0xz T_36.0, 32; - %assign V_$006C9298[0], 0, 1; - %assign V_$006C9298[1], 0, 1; - %jmp T_36.1; -T_36.0 ; - %load/v 32, V_$006C92D0[0], 2; - %assign V_$006C9298[0], 0, 32; - %assign V_$006C9298[1], 0, 33; -T_36.1 ; - %jmp T_36; - .thread T_36; - .scope S_006C9128; -T_37 ; - %wait E_003DE478; - %load 32, V_$006CAEC0[0]; - %jmp/0xz T_37.0, 32; - %assign V_$006CA688[0], 0, 0; - %assign V_$006CAB30[0], 0, 0; - %assign V_$006CAC78[0], 0, 0; - %assign V_$006CAA28[0], 0, 0; - %assign V_$006CAAD8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C90B8[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006CB278[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006CA718[0], 0, 0; - %ix/load 0, 4; - %assign/v0 V_$006C9BE0[0], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006C9D00[0], 0, 0; - %jmp T_37.1; -T_37.0 ; - %load/v 32, V_$006C9938[0], 1; - %assign V_$006CA688[0], 0, 32; - %load/v 32, V_$006C99F8[0], 1; - %assign V_$006CAB30[0], 0, 32; - %load/v 32, V_$006CA268[0], 1; - %assign V_$006CAC78[0], 0, 32; - %load/v 32, V_$006CA118[0], 1; - %assign V_$006CAA28[0], 0, 32; - %load/v 32, V_$006CA198[0], 1; - %assign V_$006CAAD8[0], 0, 32; - %load/v 32, V_$006C9660[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C90B8[0], 0, 32; - %load/v 32, V_$006CA2F0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006CB278[0], 0, 32; - %load/v 32, V_$006C99C0[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006CA718[0], 0, 32; - %load/v 32, V_$006C9FA0[0], 4; - %ix/load 0, 4; - %assign/v0 V_$006C9BE0[0], 0, 32; - %load/v 32, V_$006C9440[0], 8; - %ix/load 0, 8; - %assign/v0 V_$006C9D00[0], 0, 32; -T_37.1 ; - %jmp T_37; - .thread T_37; - .scope S_006C5C68; -T_38 ; - %wait E_003DE478; - %load 32, V_$006C6048[0]; - %load 33, V_$006C6048[1]; - %load 34, V_$006C6048[2]; - %load 35, V_$006C6048[3]; - %load 36, V_$006C6048[4]; - %load 37, V_$006C6048[5]; - %load 38, V_$006C6048[6]; - %load 39, V_$006C6048[7]; - %load 40, V_$006C6048[8]; - %ix/get 3, 32, 9; - %ix/mul 3, 8; - %load/m 32, M_$006C68E0; - %ix/add 3, 1; - %load/m 33, M_$006C68E0; - %ix/add 3, 1; - %load/m 34, M_$006C68E0; - %ix/add 3, 1; - %load/m 35, M_$006C68E0; - %ix/add 3, 1; - %load/m 36, M_$006C68E0; - %ix/add 3, 1; - %load/m 37, M_$006C68E0; - %ix/add 3, 1; - %load/m 38, M_$006C68E0; - %ix/add 3, 1; - %load/m 39, M_$006C68E0; - %ix/load 0, 8; - %assign/v0 V_$006C53E0[0], 0, 32; - %jmp T_38; - .thread T_38; - .scope S_006C5C68; -T_39 ; - %wait E_003DE0F8; - %load 32, V_$006C5300[0]; - %jmp/0xz T_39.0, 32; - %load 32, V_$006C6340[0]; - %load 33, V_$006C6340[1]; - %load 34, V_$006C6340[2]; - %load 35, V_$006C6340[3]; - %load 36, V_$006C6340[4]; - %load 37, V_$006C6340[5]; - %load 38, V_$006C6340[6]; - %load 39, V_$006C6340[7]; - %load 40, V_$006C5B38[0]; - %load 41, V_$006C5B38[1]; - %load 42, V_$006C5B38[2]; - %load 43, V_$006C5B38[3]; - %load 44, V_$006C5B38[4]; - %load 45, V_$006C5B38[5]; - %load 46, V_$006C5B38[6]; - %load 47, V_$006C5B38[7]; - %load 48, V_$006C5B38[8]; - %ix/get 3, 40, 9; - %ix/mul 3, 8; - %jmp/1 t_833, 4; - %assign/m M_$006C68E0, 0, 32; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 33; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 34; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 35; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 36; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 37; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 38; - %ix/add 3, 1; - %assign/m M_$006C68E0, 0, 39; -t_833 ; -T_39.0 ; - %jmp T_39; - .thread T_39; - .scope S_006C5A78; -T_40 ; - %wait E_003DE0F8; - %load/v 32, V_$006C73C8[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006C7F50[0], 0, 32; - %load 32, V_$006C8618[0]; - %load 33, V_$006C8210[0]; - %or 32, 33, 1; - %jmp/0xz T_40.0, 32; - %assign V_$006C8098[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006C5290[0], 0, 0; - %jmp T_40.1; -T_40.0 ; - %load 32, V_$006C81A0[0]; - %jmp/0xz T_40.2, 32; - %load/v 32, V_$006C5290[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006C5290[0], 0, 32; -T_40.2 ; - %load/v 32, V_$006C7F50[0], 9; - %load/v 41, V_$006C5290[0], 9; - %cmp/u 32, 41, 9; - %mov 32, 4, 1; - %load/v 33, V_$006C7F50[9], 1; - %load/v 34, V_$006C5290[9], 1; - %cmp/u 33, 34, 1; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_40.4, 32; - %assign V_$006C8098[0], 0, 1; - %jmp T_40.5; -T_40.4 ; - %assign V_$006C8098[0], 0, 0; -T_40.5 ; -T_40.1 ; - %jmp T_40; - .thread T_40; - .scope S_006C5A78; -T_41 ; - %wait E_003DDD60; - %load/v 32, V_$006C5258[0], 10; - %load/v 42, V_$006C73C8[0], 10; - %sub 32, 42, 10; - %ix/load 0, 10; - %assign/v0 V_$006C52C8[0], 0, 32; - %jmp T_41; - .thread T_41, $push; - .scope S_006C5A78; -T_42 ; - %wait E_003DE478; - %load/v 32, V_$006C52C8[0], 10; - %mov 42, 0, 8; - %ix/load 0, 16; - %assign/v0 V_$006C82B8[0], 0, 32; - %load/v 32, V_$006C5290[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006C5258[0], 0, 32; - %load 32, V_$006C85E0[0]; - %load 33, V_$006C81D8[0]; - %or 32, 33, 1; - %jmp/0xz T_42.0, 32; - %assign V_$006C7FF8[0], 0, 1; - %ix/load 0, 10; - %assign/v0 V_$006C73C8[0], 0, 0; - %assign V_$006C8030[0], 0, 0; - %jmp T_42.1; -T_42.0 ; - %load 32, V_$006C8118[0]; - %assign V_$006C8030[0], 0, 32; - %load/v 33, V_$006C8030[0], 1; - %cmpi/u 33, 0, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_42.2, 32; - %load 32, V_$006C7978[0]; - %load 33, V_$006C7978[1]; - %load 34, V_$006C7978[2]; - %load 35, V_$006C7978[3]; - %load 36, V_$006C7978[4]; - %load 37, V_$006C7978[5]; - %load 38, V_$006C7978[6]; - %load 39, V_$006C7978[7]; - %ix/load 0, 8; - %assign/v0 V_$006C7CF0[0], 0, 32; - %load/v 32, V_$006C73C8[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006C73C8[0], 0, 32; -T_42.2 ; - %load/v 32, V_$006C5258[0], 10; - %load/v 42, V_$006C73C8[0], 10; - %cmp/u 32, 42, 10; - %mov 32, 4, 1; - %jmp/0xz T_42.4, 32; - %assign V_$006C7FF8[0], 0, 1; - %jmp T_42.5; -T_42.4 ; - %assign V_$006C7FF8[0], 0, 0; -T_42.5 ; -T_42.1 ; - %jmp T_42; - .thread T_42; - .scope S_006C5A78; -T_43 ; - %wait E_005F17F0; - %load/v 32, V_$006C5290[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006C7270[0], 0, 32; - %load/v 32, V_$006C73C8[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006C77D8[0], 0, 32; - %jmp T_43; - .thread T_43, $push; - .scope S_006C5098; -T_44 ; - %wait E_003DE0F8; - %load 32, V_$006C5A08[0]; - %load 33, V_$006C5478[0]; - %and 32, 33, 1; - %load 33, V_$006C5060[0]; - %load 34, V_$006C5060[1]; - %load 35, V_$006C5060[2]; - %cmpi/u 33, 4, 3; - %mov 33, 4, 1; - %and 32, 33, 1; - %load 33, V_$006C4F40[0]; - %and 32, 33, 1; - %load 33, V_$006C51F8[0]; - %and 32, 33, 1; - %jmp/0xz T_44.0, 32; - %assign V_$006C54E8[0], 0, 1; - %jmp T_44.1; -T_44.0 ; - %assign V_$006C54E8[0], 0, 0; -T_44.1 ; - %jmp T_44; - .thread T_44; - .scope S_006C5098; -T_45 ; - %wait E_003DE0F8; - %load 32, V_$006C58F0[0]; - %jmp/0xz T_45.0, 32; - %ix/load 0, 6; - %assign/v0 V_$006C5548[0], 0, 0; - %jmp T_45.1; -T_45.0 ; - %load/v 32, V_$006C54E8[0], 1; - %jmp/0xz T_45.2, 32; - %ix/load 0, 6; - %assign/v0 V_$006C5548[0], 0, 1; - %jmp T_45.3; -T_45.2 ; - %load/v 32, V_$006C5548[1], 5; - %mov 37, 0, 1; - %ix/load 0, 6; - %assign/v0 V_$006C5548[0], 0, 32; -T_45.3 ; -T_45.1 ; - %jmp T_45; - .thread T_45; - .scope S_006C5098; -T_46 ; - %wait E_003DE478; - %load 32, V_$006C5580[0]; - %assign V_$006C55F0[0], 0, 32; - %load/v 32, V_$006C55F0[0], 1; - %assign V_$006C55B8[0], 0, 32; - %jmp T_46; - .thread T_46; - .scope S_006C5098; -T_47 ; - %wait E_006C45B0; - %load 32, V_$006C5060[0]; - %load 33, V_$006C5060[1]; - %load 34, V_$006C5060[2]; - %cmpi/u 32, 0, 3; - %mov 32, 4, 1; - %load 33, V_$006C5A08[0]; - %and 32, 33, 1; - %load 33, V_$006C4F40[0]; - %and 32, 33, 1; - %load 33, V_$006C5478[0]; - %and 32, 33, 1; - %jmp/0xz T_47.0, 32; - %assign V_$006C54B0[0], 0, 1; - %jmp T_47.1; -T_47.0 ; - %assign V_$006C54B0[0], 0, 0; -T_47.1 ; - %jmp T_47; - .thread T_47, $push; - .scope S_006C2228; -T_48 ; - %wait E_003DE0F8; - %load 32, V_$006AC4E0[0]; - %load 33, V_$006AC4E0[1]; - %load 34, V_$006AC4E0[2]; - %load 35, V_$006AC4E0[3]; - %load 36, V_$006AC4E0[4]; - %load 37, V_$006AC4E0[5]; - %load 38, V_$006AC4E0[6]; - %load 39, V_$006AC4E0[7]; - %load 40, V_$006AC4E0[8]; - %ix/get 3, 32, 9; - %ix/mul 3, 8; - %load/m 32, M_$005D1E00; - %ix/add 3, 1; - %load/m 33, M_$005D1E00; - %ix/add 3, 1; - %load/m 34, M_$005D1E00; - %ix/add 3, 1; - %load/m 35, M_$005D1E00; - %ix/add 3, 1; - %load/m 36, M_$005D1E00; - %ix/add 3, 1; - %load/m 37, M_$005D1E00; - %ix/add 3, 1; - %load/m 38, M_$005D1E00; - %ix/add 3, 1; - %load/m 39, M_$005D1E00; - %ix/load 0, 8; - %assign/v0 V_$00639738[0], 0, 32; - %jmp T_48; - .thread T_48; - .scope S_006C2228; -T_49 ; - %wait E_003DE478; - %load 32, V_$006C27D8[0]; - %jmp/0xz T_49.0, 32; - %load 32, V_$006AD2C8[0]; - %load 33, V_$006AD2C8[1]; - %load 34, V_$006AD2C8[2]; - %load 35, V_$006AD2C8[3]; - %load 36, V_$006AD2C8[4]; - %load 37, V_$006AD2C8[5]; - %load 38, V_$006AD2C8[6]; - %load 39, V_$006AD2C8[7]; - %load 40, V_$006AC480[0]; - %load 41, V_$006AC480[1]; - %load 42, V_$006AC480[2]; - %load 43, V_$006AC480[3]; - %load 44, V_$006AC480[4]; - %load 45, V_$006AC480[5]; - %load 46, V_$006AC480[6]; - %load 47, V_$006AC480[7]; - %load 48, V_$006AC480[8]; - %ix/get 3, 40, 9; - %ix/mul 3, 8; - %jmp/1 t_863, 4; - %assign/m M_$005D1E00, 0, 32; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 33; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 34; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 35; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 36; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 37; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 38; - %ix/add 3, 1; - %assign/m M_$005D1E00, 0, 39; -t_863 ; -T_49.0 ; - %jmp T_49; - .thread T_49; - .scope S_006C2110; -T_50 ; - %wait E_003DE478; - %load/v 32, V_$006C3600[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006C3D38[0], 0, 32; - %load 32, V_$006C46F0[0]; - %load 33, V_$006C4360[0]; - %or 32, 33, 1; - %jmp/0xz T_50.0, 32; - %assign V_$006C4260[0], 0, 0; - %ix/load 0, 10; - %assign/v0 V_$006C2B10[0], 0, 0; - %jmp T_50.1; -T_50.0 ; - %load 32, V_$006C42D0[0]; - %jmp/0xz T_50.2, 32; - %load/v 32, V_$006C2B10[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006C2B10[0], 0, 32; -T_50.2 ; - %load/v 32, V_$006C3D38[0], 9; - %load/v 41, V_$006C2B10[0], 9; - %cmp/u 32, 41, 9; - %mov 32, 4, 1; - %load/v 33, V_$006C3D38[9], 1; - %load/v 34, V_$006C2B10[9], 1; - %cmp/u 33, 34, 1; - %inv 4, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_50.4, 32; - %assign V_$006C4260[0], 0, 1; - %jmp T_50.5; -T_50.4 ; - %assign V_$006C4260[0], 0, 0; -T_50.5 ; -T_50.1 ; - %jmp T_50; - .thread T_50; - .scope S_006C2110; -T_51 ; - %wait E_005EE048; - %load/v 32, V_$006C3170[0], 10; - %load/v 42, V_$006C3600[0], 10; - %sub 32, 42, 10; - %ix/load 0, 10; - %assign/v0 V_$006C2810[0], 0, 32; - %jmp T_51; - .thread T_51, $push; - .scope S_006C2110; -T_52 ; - %wait E_003DE0F8; - %load/v 32, V_$006C2810[0], 10; - %mov 42, 0, 8; - %ix/load 0, 16; - %assign/v0 V_$006C4398[0], 0, 32; - %load/v 32, V_$006C2B10[0], 10; - %ix/load 0, 10; - %assign/v0 V_$006C3170[0], 0, 32; - %load 32, V_$006C4698[0]; - %load 33, V_$006C4308[0]; - %or 32, 33, 1; - %jmp/0xz T_52.0, 32; - %assign V_$006C41F0[0], 0, 1; - %ix/load 0, 10; - %assign/v0 V_$006C3600[0], 0, 0; - %assign V_$006C4228[0], 0, 0; - %jmp T_52.1; -T_52.0 ; - %load 32, V_$006C4298[0]; - %assign V_$006C4228[0], 0, 32; - %load/v 33, V_$006C4228[0], 1; - %cmpi/u 33, 0, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %jmp/0xz T_52.2, 32; - %load 32, V_$006C3898[0]; - %load 33, V_$006C3898[1]; - %load 34, V_$006C3898[2]; - %load 35, V_$006C3898[3]; - %load 36, V_$006C3898[4]; - %load 37, V_$006C3898[5]; - %load 38, V_$006C3898[6]; - %load 39, V_$006C3898[7]; - %ix/load 0, 8; - %assign/v0 V_$006C4090[0], 0, 32; - %load/v 32, V_$006C3600[0], 10; - %addi 32, 1, 10; - %ix/load 0, 10; - %assign/v0 V_$006C3600[0], 0, 32; -T_52.2 ; - %load/v 32, V_$006C3170[0], 10; - %load/v 42, V_$006C3600[0], 10; - %cmp/u 32, 42, 10; - %mov 32, 4, 1; - %jmp/0xz T_52.4, 32; - %assign V_$006C41F0[0], 0, 1; - %jmp T_52.5; -T_52.4 ; - %assign V_$006C41F0[0], 0, 0; -T_52.5 ; -T_52.1 ; - %jmp T_52; - .thread T_52; - .scope S_006C2110; -T_53 ; - %wait E_005EEF18; - %load/v 32, V_$006C2B10[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006C3508[0], 0, 32; - %load/v 32, V_$006C3600[0], 9; - %ix/load 0, 9; - %assign/v0 V_$006C3740[0], 0, 32; - %jmp T_53; - .thread T_53, $push; - .scope S_006C1658; -T_54 ; - %wait E_003DE0F8; - %load 32, V_$006685B0[0]; - %load 33, V_$006A7BA8[0]; - %and 32, 33, 1; - %load 33, V_$006A4EE8[0]; - %load 34, V_$006A4EE8[1]; - %load 35, V_$006A4EE8[2]; - %cmpi/u 33, 4, 3; - %mov 33, 4, 1; - %and 32, 33, 1; - %load 33, V_$006AA8A8[0]; - %and 32, 33, 1; - %load 33, V_$0065A890[0]; - %and 32, 33, 1; - %jmp/0xz T_54.0, 32; - %assign V_$006A7DD8[0], 0, 1; - %jmp T_54.1; -T_54.0 ; - %assign V_$006A7DD8[0], 0, 0; -T_54.1 ; - %jmp T_54; - .thread T_54; - .scope S_006C1658; -T_55 ; - %wait E_003DE0F8; - %load 32, V_$0065D6E8[0]; - %jmp/0xz T_55.0, 32; - %ix/load 0, 6; - %assign/v0 V_$00666B38[0], 0, 0; - %jmp T_55.1; -T_55.0 ; - %load/v 32, V_$006A7DD8[0], 1; - %jmp/0xz T_55.2, 32; - %ix/load 0, 6; - %assign/v0 V_$00666B38[0], 0, 1; - %jmp T_55.3; -T_55.2 ; - %load/v 32, V_$00666B38[1], 5; - %mov 37, 0, 1; - %ix/load 0, 6; - %assign/v0 V_$00666B38[0], 0, 32; -T_55.3 ; -T_55.1 ; - %jmp T_55; - .thread T_55; - .scope S_006C1658; -T_56 ; - %wait E_003DE478; - %load 32, V_$006A8D90[0]; - %assign V_$006A8850[0], 0, 32; - %load/v 32, V_$006A8850[0], 1; - %assign V_$006A9EA0[0], 0, 32; - %jmp T_56; - .thread T_56; - .scope S_006C1658; -T_57 ; - %wait E_003DDC30; - %load 32, V_$006A4EE8[0]; - %load 33, V_$006A4EE8[1]; - %load 34, V_$006A4EE8[2]; - %cmpi/u 32, 0, 3; - %jmp/1 T_57.0, 6; - %cmpi/u 32, 2, 3; - %jmp/1 T_57.1, 6; - %cmpi/u 32, 3, 3; - %jmp/1 T_57.2, 6; - %ix/load 0, 8; - %assign/v0 V_$006A5290[0], 0, 0; - %jmp T_57.4; -T_57.0 ; - %load 32, V_$00660078[0]; - %load 33, V_$00660078[1]; - %load 34, V_$00660078[2]; - %load 35, V_$00660078[3]; - %load 36, V_$00660078[4]; - %load 37, V_$00660078[5]; - %load 38, V_$00660078[6]; - %load 39, V_$00660078[7]; - %ix/load 0, 8; - %assign/v0 V_$006A5290[0], 0, 32; - %jmp T_57.4; -T_57.1 ; - %load 32, V_$00666678[8]; - %load 33, V_$00666678[9]; - %load 34, V_$00666678[10]; - %load 35, V_$00666678[11]; - %load 36, V_$00666678[12]; - %load 37, V_$00666678[13]; - %load 38, V_$00666678[14]; - %load 39, V_$00666678[15]; - %ix/load 0, 8; - %assign/v0 V_$006A5290[0], 0, 32; - %jmp T_57.4; -T_57.2 ; - %load 32, V_$00666678[0]; - %load 33, V_$00666678[1]; - %load 34, V_$00666678[2]; - %load 35, V_$00666678[3]; - %load 36, V_$00666678[4]; - %load 37, V_$00666678[5]; - %load 38, V_$00666678[6]; - %load 39, V_$00666678[7]; - %ix/load 0, 8; - %assign/v0 V_$006A5290[0], 0, 32; - %jmp T_57.4; -T_57.4 ; - %jmp T_57; - .thread T_57, $push; - .scope S_006C1658; -T_58 ; - %wait E_003DDB00; - %load 32, V_$006A4EE8[0]; - %load 33, V_$006A4EE8[1]; - %load 34, V_$006A4EE8[2]; - %cmpi/u 32, 0, 3; - %mov 32, 4, 1; - %load 33, V_$006685B0[0]; - %cmpi/u 33, 0, 1; - %mov 33, 4, 1; - %and 32, 33, 1; - %load 33, V_$006AA8A8[0]; - %and 32, 33, 1; - %load 33, V_$006A7BA8[0]; - %and 32, 33, 1; - %jmp/0xz T_58.0, 32; - %assign V_$006A76F0[0], 0, 1; - %jmp T_58.1; -T_58.0 ; - %assign V_$006A76F0[0], 0, 0; -T_58.1 ; - %jmp T_58; - .thread T_58, $push; - .scope S_00624D88; -T_59 ; - %set/v V_$0068AE60[0], 2, 8; - %set/v V_$0069AA18[0], 2, 8; - %set V_$0069A858[0], 0; - %set V_$006607B0[0], 2; - %set V_$006A5C98[0], 2; - %set V_$006A4238[0], 2; - %delay 1000; - %end; - .thread T_59; - .scope S_00633880; -T_60 ; - %set/v V_$006B08C8[0], 0, 2; - %end; - .thread T_60; - .scope S_00633880; -T_61 ; - %load/v 32, V_$006B08C8[0], 2; - %cmpi/u 32, 0, 2; - %jmp/1 T_61.0, 6; - %cmpi/u 32, 1, 2; - %jmp/1 T_61.1, 6; - %cmpi/u 32, 2, 2; - %jmp/1 T_61.2, 6; - %jmp T_61.3; -T_61.0 ; - %set/v V_$006B01E8[0], 1, 8; - %fork TD_testHarness.u_sdModel.txRxByte, S_006399E8; - %join; - %load/v 32, V_$006B00C0[0], 8; - %set/v V_$006B0718[0], 32, 8; - %load/v 32, V_$006B0718[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_61.4, 4; - %assign V_$006B08C8[0], 0, 1; - %assign V_$006B08C8[1], 0, 0; - %ix/load 0, 8; - %assign/v0 V_$006B0438[0], 0, 0; -T_61.4 ; - %jmp T_61.3; -T_61.1 ; - %set/v V_$006B01E8[0], 1, 8; - %fork TD_testHarness.u_sdModel.txRxByte, S_006399E8; - %join; - %load/v 32, V_$006B00C0[0], 8; - %set/v V_$006B0718[0], 32, 8; - %load/v 32, V_$006B0718[0], 8; - %cmpi/u 32, 255, 8; - %jmp/0xz T_61.6, 4; - %load/v 32, V_$006B0438[0], 8; - %addi 32, 1, 8; - %ix/load 0, 8; - %assign/v0 V_$006B0438[0], 0, 32; - %load/v 32, V_$006B0438[0], 8; - %cmpi/u 32, 10, 8; - %jmp/0xz T_61.8, 4; - %load/v 32, V_$006B0578[0], 8; - %set/v V_$006B01E8[0], 32, 8; - %fork TD_testHarness.u_sdModel.txRxByte, S_006399E8; - %join; - %load/v 32, V_$006B00C0[0], 8; - %set/v V_$006B0718[0], 32, 8; - %assign V_$006B08C8[0], 0, 0; - %assign V_$006B08C8[1], 0, 1; -T_61.8 ; - %jmp T_61.7; -T_61.6 ; - %assign V_$006B08C8[0], 0, 0; - %assign V_$006B08C8[1], 0, 0; -T_61.7 ; - %jmp T_61.3; -T_61.2 ; - %set/v V_$006B01E8[0], 1, 8; - %fork TD_testHarness.u_sdModel.txRxByte, S_006399E8; - %join; - %load/v 32, V_$006B00C0[0], 8; - %set/v V_$006B0718[0], 32, 8; - %load/v 32, V_$006B0718[0], 8; - %cmpi/u 32, 255, 8; - %inv 4, 1; - %jmp/0xz T_61.10, 4; - %assign V_$006B08C8[0], 0, 0; - %assign V_$006B08C8[1], 0, 0; -T_61.10 ; - %jmp T_61.3; -T_61.3 ; - %jmp T_61; - .thread T_61; - .scope S_006338F0; -T_62 ; - %vpi_call "$dumpfile", "wave.vcd"; - %vpi_call "$dumpvars", 1'sb0, S_006C1500; - %end; - .thread T_62; - .scope S_006338F0; -T_63 ; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %wait E_003DE0F8; - %assign V_$006E0BD0[0], 0, 1; - %wait E_003DE0F8; - %assign V_$006E0BD0[0], 0, 0; - %wait E_003DE0F8; - %end; - .thread T_63; - .scope S_006338F0; -T_64 ; - %delay 20000; - %assign V_$006DF4B8[0], 0, 0; - %delay 20000; - %assign V_$006DF4B8[0], 0, 1; - %jmp T_64; - .thread T_64; - .scope S_006338F0; -T_65 ; - %delay 10000; - %assign V_$006E3508[0], 0, 0; - %delay 10000; - %assign V_$006E3508[0], 0, 1; - %jmp T_65; - .thread T_65; diff --git a/usrp2/fpga/opencores/sd_interface/sim/wave.do b/usrp2/fpga/opencores/sd_interface/sim/wave.do deleted file mode 100644 index 0cc94b31..00000000 --- a/usrp2/fpga/opencores/sd_interface/sim/wave.do +++ /dev/null @@ -1,133 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate -divider ctrlStsRegBI -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/dataIn -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/address -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/writeEn -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/strobe_i -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/busClk -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiSysClk -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/dataOut -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/ctrlStsRegSel -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransType -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrl -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransStatus -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiDirectAccessTxData -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiDirectAccessRxData -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstFromWire -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstSyncToBusClkOut -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstSyncToSpiClkOut -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDWriteError -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDReadError -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDInitError -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDAddr -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiClkDelay -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/clk -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstShift -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstFromBus -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiDirectAccessTxDataSTB -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiDirectAccessRxDataSTB -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransTypeSTB -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrlSTB -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransStatusSTB -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/rstSyncToSpiClkFirst -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrlShift -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransStatusReg1 -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransStatusReg2 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDWriteErrorSTB -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDReadErrorSTB -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/SDInitErrorSTB -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrl_reg1 -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrl_reg2 -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_ctrlStsRegBI/spiTransCtrl_reg3 -add wave -noupdate -divider spiTxRxData -add wave -noupdate -divider readWriteSPIWireData -add wave -noupdate -divider spiCtrl -add wave -noupdate -divider initSD -add wave -noupdate -divider sendCmd -add wave -noupdate -divider sdModel -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_sdModel/spiClk -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_sdModel/spiDataIn -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_sdModel/spiDataOut -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_sdModel/spiCS_n -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_sdModel/rxByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_sdModel/respByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_sdModel/smSt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_sdModel/cnt -add wave -noupdate -divider txFifo -add wave -noupdate -divider txFifoBI -add wave -noupdate -divider readWriteSDBlock -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/blockAddr -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/clk -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/readWriteSDBlockReq -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/respByte -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/respTout -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rst -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rxDataIn -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rxDataRdy -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/sendCmdRdy -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txDataEmpty -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txDataFull -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txFifoData -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/checkSumByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/cmdByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/dataByte1 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/dataByte2 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/dataByte3 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/dataByte4 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/readError -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/readWriteSDBlockRdy -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rxDataRdyClr -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rxFifoData -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/rxFifoWen -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/sendCmdReq -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/spiCS_n -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txDataOut -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txDataWen -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/txFifoRen -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/writeError -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_checkSumByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_cmdByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_dataByte1 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_dataByte2 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_dataByte3 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_dataByte4 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_readError -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_readWriteSDBlockRdy -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_rxDataRdyClr -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_rxFifoData -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_rxFifoWen -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_sendCmdReq -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_spiCS_n -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_txDataOut -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_txDataWen -add wave -noupdate -format Logic -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_txFifoRen -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_writeError -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/delCnt1 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_delCnt1 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/delCnt2 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_delCnt2 -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/locRespByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_locRespByte -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/loopCnt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_loopCnt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/timeOutCnt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/next_timeOutCnt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/CurrState_rwBlkSt -add wave -noupdate -format Literal -radix hexadecimal /testHarness/u_spiMaster/u_readWriteSDBlock/NextState_rwBlkSt -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {717201000 ps} 0} {{Cursor 2} {102093853 ps} 0} -configure wave -namecolwidth 456 -configure wave -valuecolwidth 73 -configure wave -justifyvalue left -configure wave -signalnamewidth 0 -configure wave -snapdistance 10 -configure wave -datasetprefix 0 -configure wave -rowmargin 4 -configure wave -childrowmargin 2 -configure wave -gridoffset 0 -configure wave -gridperiod 1 -configure wave -griddelta 40 -configure wave -timeline 0 -update -WaveRestoreZoom {0 ps} {115986988 ps} diff --git a/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qpf b/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qpf deleted file mode 100644 index f60b6c83..00000000 --- a/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qpf +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (C) 1991-2007 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. - - - -QUARTUS_VERSION = "7.2" -DATE = "14:03:18 February 21, 2008" - - -# Revisions - -PROJECT_REVISION = "spiMaster" diff --git a/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qsf b/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qsf deleted file mode 100644 index 3a5f8880..00000000 --- a/usrp2/fpga/opencores/sd_interface/syn/spiMaster.qsf +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (C) 1991-2007 Altera Corporation -# Your use of Altera Corporation's design tools, logic functions -# and other software and tools, and its AMPP partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Altera Program License -# Subscription Agreement, Altera MegaCore Function License -# Agreement, or other applicable license agreement, including, -# without limitation, that your use is for the sole purpose of -# programming logic devices manufactured by Altera and sold by -# Altera or its authorized distributors. Please refer to the -# applicable agreement for further details. - - -# The default values for assignments are stored in the file -# spiMaster_assignment_defaults.qdf -# If this file doesn't exist, and for assignments not listed, see file -# assignment_defaults.qdf - -# Altera recommends that you do not modify this file. This -# file is updated automatically by the Quartus II software -# and any changes you make may be lost or overwritten. - - -set_global_assignment -name FAMILY "Cyclone II" -set_global_assignment -name DEVICE EP2C20Q240C8 -set_global_assignment -name TOP_LEVEL_ENTITY spiMaster -set_global_assignment -name ORIGINAL_QUARTUS_VERSION 7.2 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "14:03:18 FEBRUARY 21, 2008" -set_global_assignment -name LAST_QUARTUS_VERSION 7.2 -set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_palace -set_global_assignment -name DEVICE_FILTER_PACKAGE PQFP -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 240 -set_global_assignment -name VERILOG_FILE ../rtl/wishBoneBus_h.v -set_global_assignment -name VERILOG_FILE ../rtl/ctrlStsRegBI.v -set_global_assignment -name VERILOG_FILE ../rtl/dpMem_dc.v -set_global_assignment -name VERILOG_FILE ../rtl/fifoRTL.v -set_global_assignment -name VERILOG_FILE ../rtl/initSD.v -set_global_assignment -name VERILOG_FILE ../rtl/readWriteSDBlock.v -set_global_assignment -name VERILOG_FILE ../rtl/readWriteSPIWireData.v -set_global_assignment -name VERILOG_FILE ../rtl/RxFifo.v -set_global_assignment -name VERILOG_FILE ../rtl/RxFifoBI.v -set_global_assignment -name VERILOG_FILE ../rtl/sendCmd.v -set_global_assignment -name VERILOG_FILE ../rtl/spiCtrl.v -set_global_assignment -name VERILOG_FILE ../rtl/spiMaster.v -set_global_assignment -name VERILOG_FILE ../rtl/spiMaster_h.v -set_global_assignment -name VERILOG_FILE ../rtl/spiTxRxData.v -set_global_assignment -name VERILOG_FILE ../rtl/timescale.v -set_global_assignment -name VERILOG_FILE ../rtl/TxFifo.v -set_global_assignment -name VERILOG_FILE ../rtl/TxFifoBI.v -set_global_assignment -name VERILOG_FILE ../rtl/wishBoneBI.v -set_instance_assignment -name PARTITION_HIERARCHY no_file_for_top_partition -to | -section_id Top -set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top -set_global_assignment -name PARTITION_COLOR 2147039 -section_id Top -set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" -set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" \ No newline at end of file diff --git a/usrp2/fpga/opencores/uart16550/CVS/Entries b/usrp2/fpga/opencores/uart16550/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/CVS/Entries.Log deleted file mode 100644 index 6b9716ed..00000000 --- a/usrp2/fpga/opencores/uart16550/CVS/Entries.Log +++ /dev/null @@ -1,9 +0,0 @@ -A D/Doc//// -A D/bench//// -A D/doc//// -A D/fv//// -A D/lint//// -A D/rtl//// -A D/sim//// -A D/syn//// -A D/verilog//// diff --git a/usrp2/fpga/opencores/uart16550/CVS/Repository b/usrp2/fpga/opencores/uart16550/CVS/Repository deleted file mode 100644 index a210d158..00000000 --- a/usrp2/fpga/opencores/uart16550/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550 diff --git a/usrp2/fpga/opencores/uart16550/CVS/Root b/usrp2/fpga/opencores/uart16550/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/CVS/Template b/usrp2/fpga/opencores/uart16550/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/bench/CVS/Entries b/usrp2/fpga/opencores/uart16550/bench/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/bench/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/bench/CVS/Entries.Log deleted file mode 100644 index 7bac3d43..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/CVS/Entries.Log +++ /dev/null @@ -1,2 +0,0 @@ -A D/verilog//// -A D/vhdl//// diff --git a/usrp2/fpga/opencores/uart16550/bench/CVS/Repository b/usrp2/fpga/opencores/uart16550/bench/CVS/Repository deleted file mode 100644 index 21bbf05f..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/bench diff --git a/usrp2/fpga/opencores/uart16550/bench/CVS/Root b/usrp2/fpga/opencores/uart16550/bench/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/bench/CVS/Template b/usrp2/fpga/opencores/uart16550/bench/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries b/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries deleted file mode 100644 index 5d793ffe..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries +++ /dev/null @@ -1,14 +0,0 @@ -/readme.txt/1.1/Fri Jan 25 08:54:56 2002// -/uart_device.v/1.1/Sat Mar 27 03:55:16 2004// -/uart_device_utilities.v/1.1/Sat Mar 27 03:55:16 2004// -/uart_log.v/1.1/Sat Mar 27 03:55:16 2004// -/uart_test.v/1.6/Sat Mar 27 03:55:17 2004/-kb/ -/uart_testbench.v/1.1/Sat Mar 27 03:55:17 2004// -/uart_testbench_defines.v/1.1/Sat Mar 27 03:55:17 2004// -/uart_testbench_utilities.v/1.1/Sat Mar 27 03:55:17 2004// -/uart_wb_utilities.v/1.1/Sat Mar 27 03:55:17 2004// -/vapi.log/1.1/Fri Jan 25 08:54:56 2002// -/wb_mast.v/1.1/Mon Dec 3 21:44:23 2001// -/wb_master_model.v/1.1/Sat Mar 27 03:55:17 2004// -/wb_model_defines.v/1.1/Sat Mar 27 03:55:17 2004// -D diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries.Log deleted file mode 100644 index 39baa300..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Entries.Log +++ /dev/null @@ -1 +0,0 @@ -A D/test_cases//// diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Repository b/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Repository deleted file mode 100644 index 1d1adf3d..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/bench/verilog diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Root b/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Template b/usrp2/fpga/opencores/uart16550/bench/verilog/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/readme.txt b/usrp2/fpga/opencores/uart16550/bench/verilog/readme.txt deleted file mode 100644 index 4eff5571..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/readme.txt +++ /dev/null @@ -1,114 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// readme.txt //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Device interface for testing purposes //// -//// //// -//// Known problems (limits): //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created and updated: (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: readme.txt,v $ -// Revision 1.1 2002/01/25 08:54:56 mohor -// UART PHY added. Files are fully operational, working on HW. -// -// -// -// -// - - -Following files are making an UART16550 PHY and are used for testing: - -uart_device_if_defines.v - defines related to PHY -uart_device_if_memory.v - Module for initializing PHY (reading commands from vapi.log file) -uart_device_if.v - Uart PHY with additional feature for testing -vapi.log - File with commands (expected data, data to be send, etc.) -readme.txt - This file - - - - -OPERATION: -uart_device_if.v is a uart PHY and connects to the uart_top.v. PHY takes commands from vapi.log -file. Depending on command it can: -- set a mode (5, 6, 7, 8-bit, parity, stop bits, etc.) -- set a frequency divider (dll) -- send a character -- receive a character and compare it to the expected one -- send a glitch (after a certain period of time) -- send a break -- detect a break -- Check if fifo is empty/not empty (and generate an error if expected value differs from actual) -- delay (does nothing for certain number of characters) - -On the other side of uart some kind of host must be connected that controls the phy. - -This is the structure: - - - |||||||||||||| |||||||||||||||| |||||||||||||||| - | | | | | | - | Host | <----------> | UART | <----------> | PHY | - | | | | | | - |||||||||||||| |||||||||||||||| |||||||||||||||| - - - PHY must know how host sets th UART and work in the same mode. Besides that it must know what - host is sending or expecting to receive. Operation of the PHY must be written in the vapi.log - file. - - When I was using this testing environment, I used OpenRISC1200 as a host. Everything is fully - operational. UART was also tested in hardware (on two different boards), running uCLinux in - both, interrupt and polling mode. - - \ No newline at end of file diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Entries b/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Entries deleted file mode 100644 index cb555d8d..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/uart_int.v/1.1/Sat Mar 27 04:04:57 2004// -D diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Repository b/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Repository deleted file mode 100644 index 56b75644..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/bench/verilog/test_cases diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Root b/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Template b/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/uart_int.v b/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/uart_int.v deleted file mode 100755 index 21ff66d2..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/test_cases/uart_int.v +++ /dev/null @@ -1,279 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_int.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_int.v,v $ -// Revision 1.1 2004/03/27 04:04:57 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_defines.v" -`include "uart_testbench_defines.v" -`include "timescale.v" - -module testcase; - - -// Testcase INDEPENDENT code - common to all testcases -//##################################################### - - // Variables - // Testbench reporting events & signals - event severe_err_event; - event err_event; - event wrn_event; - event msg_event; - event val_event; - event testbench_log_written; - reg [7999: 0] tim; - reg [7999: 0] severe_err_msg; - reg [7999: 0] msg; - integer val; - // Testcase reporting events & signals - event testcase_log_written; - event test_end; - reg [1599: 0] test_name; - reg error_detected; - - // Module for writing to log files - uart_log log (); - defparam log.testcase_name = "uart_interrupts"; - - // Log - initial - fork - begin: init_log - reg ok; - // Delay allows all other blocks in this fork - join block to execute - #1; - log.start_log(ok); - if (ok !== 1'b1) - begin - `SEVERE_ERROR("Failed to open log file(s)!"); - disable init_log; - end - testcase_init; - testcase_test; - log.end_log; - # 100; - $finish; - end - begin - forever - begin - @(test_name); - error_detected = 1'b0; - log.report_test_name(test_name); - log.verbose_test_name(test_name); - -> testcase_log_written; - end - end - begin - forever - begin - @(test_end); - if (error_detected) - begin - log.tests_failed = log.tests_failed + 1'b1; - end - else - begin - log.tests_ok = log.tests_ok + 1'b1; - log.report_test_ok; - end - -> testcase_log_written; - end - end - begin - @(severe_err_event); - error_detected = 1'b1; - -> test_end; - @(testcase_log_written); - log.report_test_failed(severe_err_msg); - if (testcase.log.free == 0) - begin - wait (testcase.log.free); - severe_err_msg = "Failed to write to log file(s)!"; - end - log.verbose_severe_err(tim, severe_err_msg); - -> testbench_log_written; - # 100; $finish; - end - begin - forever - begin - @(err_event); - error_detected = 1'b1; - -> test_end; - @(testcase_log_written); - log.report_test_failed(msg); - if (testcase.log.free == 0) - begin - `SEVERE_ERROR("Failed to write to log file(s)!"); - end - log.verbose_err(tim, msg); - -> testbench_log_written; - `PROMPT; - end - end - begin - forever - begin - @(wrn_event); - if (testcase.log.free == 0) - begin - `SEVERE_ERROR("Failed to write to log file(s)!"); - end - log.verbose_wrn(tim, msg); - -> testbench_log_written; - end - end - begin - forever - begin - @(msg_event); - if (testcase.log.free == 0) - begin - `SEVERE_ERROR("Failed to write to log file(s)!"); - end - log.verbose_msg(tim, msg); - -> testbench_log_written; - end - end - begin - forever - begin - @(val_event); - if (testcase.log.free == 0) - begin - `SEVERE_ERROR("Failed to write to log file(s)!"); - end - log.verbose_val(tim, msg, val); - -> testbench_log_written; - end - end - join - - -// Testcase (DEPENDENT) code -//########################### - - // Initialization - task testcase_init; - begin:init - test_name = "Initialization of UART."; - @(testcase_log_written); - // - testbench_utilities.do_reset; - testbench_utilities.disable_clk_generators(1, 1, 1, 1); - testbench_utilities.set_device_tx_rx_clk_divisor(32'h1000); - testbench_utilities.set_wb_clock_period(100); - testbench_utilities.enable_clk_generators(1, 1, 1, 1); - #100; - testbench_utilities.release_reset; - // - uart_wb_utilities.write_dlr(16'h1000); - uart_wb_utilities.write_ier(8'h07); - uart_wb_utilities.write_fcr(8'hC0); - uart_wb_utilities.write_lcr(8'h03); - // - uart_device_utilities.set_rx_length(8); - uart_device_utilities.disable_rx_parity; - uart_device_utilities.set_rx_second_stop_bit(0); - // - uart_device_utilities.set_tx_length(8); - uart_device_utilities.disable_tx_parity; - uart_device_utilities.correct_tx_parity; - uart_device_utilities.correct_tx_frame; - uart_device_utilities.generate_tx_glitch(0); - - -> test_end; - @(testcase_log_written); - end - endtask // testcase_init - - // Testcase - task testcase_test; - begin:test - test_name = "Interrupt test."; - @(testcase_log_written); - fork - begin: test - uart_wb_utilities.write_char(8'hAA); - @(testbench.int_aserted); - `TC_MSG("INT ASSERTED!"); - uart_wb_utilities.write_char(8'hAA); - @(testbench.int_released); - `TC_MSG("INT RELEASED!"); - @(testbench.int_aserted); - `TC_MSG("INT ASSERTED!"); - uart_wb_utilities.read_iir; - @(testbench.int_released); - `TC_MSG("INT RELEASED!"); - end - begin: wait_end - @(testbench.i_uart_device.device_received_packet); - @(testbench.i_uart_device.device_received_packet); - repeat(2) @(testbench.i_uart_device.rx_clk); - disable test; - disable wait_clk; - end - begin: wait_clk - testbench_utilities.wait_for_num_of_wb_clk(32'h450000); - disable test; - disable wait_end; - end - join - repeat (4) @(posedge testbench.wb_clk); - # 100; - - -> test_end; - @(testcase_log_written); - end - endtask // testcase_test - - -endmodule - diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device.v deleted file mode 100644 index 01e971fb..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device.v +++ /dev/null @@ -1,717 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_device.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// - igorm@opencores.org (Igor Mohor) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_device.v,v $ -// Revision 1.1 2004/03/27 03:55:16 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_testbench_defines.v" -`include "timescale.v" - -module uart_device -( - // UART signals - stx_i, - srx_o, - // Modem signals - rts_i, - cts_o, - dtr_i, - dsr_o, - ri_o, - dcd_o -); - - -// IN/OUT signals -//############### - - // UART signals - input stx_i; - output srx_o; - // Modem signals - input rts_i; - output cts_o; - input dtr_i; - output dsr_o; - output ri_o; - output dcd_o; - - -// INTERNAL signals -//################# - - - // Clock generation signals - //######################### - - // Operational and transmission clock signals - reg rx_clk; // RX device clock with period T_clk_period (should be equal to wb_clk_period) - reg tx_clk; // TX device clock with period (T_clk_period + T_clk_delay) - reg tx_clk_divided; // divided TX device clock with period ((T_clk_period + T_clk_delay) * T_divisor * 16) - // Clock enable signals - reg rx_clk_en = 1'b1; - reg tx_clk_en = 1'b1; - reg tx_clk_divided_en = 1'b1; - // Clock period variables - real T_clk_period = 20; - real T_clk_delay = 0; - integer T_divisor = 5; - - - // IN/OUT assignment signals - //########################## - - // Modem signals - wire rts; - wire dtr; - - - // UART receiver signals - //###################### - - // RX packet control signals - wire rx; - reg [3:0] rx_length; - reg rx_odd_parity; - reg rx_even_parity; - reg rx_stick1_parity; - reg rx_stick0_parity; - reg rx_parity_enabled; - reg rx_stop_bit_1; - reg rx_stop_bit_1_5; - reg rx_stop_bit_2; - // RX logic signals - wire [3:0] rx_total_length; - wire [5:0] rx_break_detection_length; - reg rx_packet_end; - reg rx_packet_end_q; - reg rx_clk_cnt_en; - reg [31:0] rx_clk_cnt; - reg rx_sample_clock; - integer rx_bit_index; - integer rx_stop_bit_index; - reg [7:0] rx_data; - reg [1:0] rx_stop; - reg rx_framing_error; - reg rx_parity; - reg rx_parity_error; - reg rx_break_detected; - reg rx_break_detected_q; - reg [31:0] rx_break_cnt; - // RX events - event device_received_packet; - event device_received_last_bit; - event device_received_stop_bit; - event device_detected_rx_break; - - - // UART transmitter signals - //######################### - - // TX packet control signals - reg tx; - reg [3:0] tx_length; - reg tx_odd_parity; - reg tx_even_parity; - reg tx_stick1_parity; - reg tx_stick0_parity; - reg tx_parity_enabled; - reg tx_parity_wrong; - reg tx_framing_wrong; - // TX logic signals - reg [23:0] tx_glitch_num; - reg start_tx_glitch_cnt; - reg [31:0] tx_glitch_cnt; - reg tx_glitch; - reg tx_break_enable; - reg [15:0] tx_break_num; - reg start_tx_break_cnt; - reg [31:0] tx_break_cnt; - reg tx_break; - // TX test signals - reg [7:0] sent_data; - reg tx_accept_next_framing_err; - reg tx_framing_err; - reg tx_framing_glitch_err; - // TX events - event device_sent_packet; - event sent_packet_received; - - -// Clock generation -//################# - - // Example of TESTBENCH's task for setting UART clock period: - // ---------------- - // task set_uart_clk_period; - // input [31:0] clk_period; - // begin - // //@(posedge testbench.uart_device.clk); - // testbench.uart_device.T_clk_period = clk_period; - // end - // endtask // set_uart_clk_period - // ---------------- - // Example of TESTBENCH's task for setting UART clock rising edge - // delayed for time_delay_i after WB clock rising edge: - // ---------------- - // task uart_clk_follows_wb_clk; - // input [31:0] time_delay_i; - // integer time_delay; - // begin - // time_delay = time_delay_i; - // @(posedge testbench.uart_device.clk); - // testbench.uart_device.clk_en = 1'b0; - // @(posedge wb_clk); - // #time_delay testbench.uart_device.clk = 1'b1; - // testbench.uart_device.clk_en = 1'b1; - // end - // endtask // uart_clk_follows_wb_clk - // ---------------- - - // rx_clk rising edge - always@(posedge rx_clk) - if (rx_clk_en) - #(T_clk_period / 2) rx_clk = 1'b0; - // rx_clk falling edge - always@(negedge rx_clk) - if (rx_clk_en) - #(T_clk_period / 2) rx_clk = 1'b1; - - // tx_clk rising edge - always@(posedge tx_clk) - if (tx_clk_en) - #((T_clk_period + T_clk_delay) / 2) tx_clk = 1'b0; - // tx_clk falling edge - always@(negedge tx_clk) - if (tx_clk_en) - #((T_clk_period + T_clk_delay) / 2) tx_clk = 1'b1; - - // tx_clk_divided rising edge - always@(posedge tx_clk_divided) - if (tx_clk_divided_en) - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) tx_clk_divided = 1'b0; - // tx_clk_divided falling edge - always@(negedge tx_clk_divided) - if (tx_clk_divided_en) - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) tx_clk_divided = 1'b1; - - // Inital CLK values - initial - begin:device - rx_clk = 1'b0; - tx_clk = 1'b0; - tx_clk_divided = 1'b0; - end - - -// IN/OUT assignments -//################### - - // UART output - assign srx_o = (tx ^ tx_glitch) & ~tx_break; - // Modem output - assign cts_o = 0; - assign dsr_o = 0; - assign ri_o = 0; - assign dcd_o = 0; - // UART input - assign rx = stx_i; - // Modem input - assign rts = rts_i; - assign dtr = dtr_i; - - -// UART receiver -//############## - - // Initial values for RX - initial - begin - // Default LENGTH - rx_length = 8; - // Default PARITY - rx_odd_parity = 1'b0; - rx_even_parity = 1'b0; - rx_stick1_parity = 1'b0; - rx_stick0_parity = 1'b0; - rx_parity_enabled = 1'b0; - // Default STOP - rx_stop_bit_1 = 1'b1; - rx_stop_bit_1_5 = 1'b0; - rx_stop_bit_2 = 1'b0; - end - - // Total length of RX packet (for proper generation of the rx_packet_end signal): - // data length + parity + 1 stop bit + second stop bit (when enabled) - assign rx_total_length = rx_length + rx_parity_enabled + 1 + rx_stop_bit_2; - // +1 is used because start bit was not included in rx_total_length. - assign rx_break_detection_length = rx_total_length + 1; - - // Generating rx_clk_cnt_en signal. - always@(posedge rx_clk) - begin - if (~rx_clk_cnt_en) - begin - wait (~rx); - end - rx_clk_cnt_en = 1; - rx_packet_end = 0; - wait (rx_packet_end); - rx_clk_cnt_en = 0; - wait (rx); // Must be high to continue, because of break condition - end - - // Counter used in data reception - always@(posedge rx_clk) - begin - if (rx_clk_cnt_en) - begin - if (rx_clk_cnt == (8 * T_divisor - 1) & rx) // False start bit detection - rx_packet_end = 1; - if (rx_clk_cnt_en) // Checking is still enabled after devisor clocks - rx_clk_cnt <= #1 rx_clk_cnt + 1; - else - rx_clk_cnt <= #1 0; - end - else - rx_clk_cnt <= #1 0; - end - - // Delayed rx_packet_end signal - always@(posedge rx_clk) - rx_packet_end_q = rx_packet_end; - - // Generating sample clock and end of the frame (Received data is sampled with this clock) - always@(posedge rx_clk) - begin - if (rx_clk_cnt == 8 * T_divisor - 1) - rx_bit_index = 0; - else if (rx_clk_cnt == (8 * T_divisor + 16 * T_divisor * (rx_bit_index + 1) - 1)) - begin - rx_sample_clock = 1; - rx_bit_index = rx_bit_index + 1; - if (rx_bit_index == rx_total_length) - rx_packet_end = 1; - end - else - rx_sample_clock = 0; - end - - // Sampling data (received data) - always@(posedge rx_clk) - begin - if (rx_sample_clock) - begin - if (rx_bit_index <= rx_length) // Sampling data - begin - rx_stop_bit_index <= 0; // Stop bit index reset at the beginning of the data stage -// $display("\t\t\t\t\t\t\t(rx_bit_index = %0d) Reading data bits = %0x", rx_bit_index, rx); - rx_data[rx_bit_index - 1] = rx; - if (rx_bit_index == rx_length) - -> device_received_last_bit; - end - else - begin - if (rx_bit_index == (rx_length + 1)) - begin - if (rx_parity_enabled) - begin -// $display("\t\t\t\t\t\t\t(rx_bit_index = %0d) Reading parity bits = %0x", rx_bit_index, rx); - end - else - begin - -> device_received_stop_bit; - rx_stop[rx_stop_bit_index] = rx; - rx_stop_bit_index <= rx_stop_bit_index + 1; - end - rx_parity = rx & rx_parity_enabled; - end - if (rx_bit_index >= (rx_length + 1 + rx_parity_enabled)) - begin -// $display("\t\t\t\t\t\t\t(rx_bit_index = %0d) Reading stop bits = %0x", rx_bit_index, rx); - rx_stop[rx_stop_bit_index] = rx; - rx_stop_bit_index <= rx_stop_bit_index + 1; - end - end - end - - // Filling the rest of the data with 0 - if (rx_length == 5) - rx_data[7:5] = 0; - if (rx_length == 6) - rx_data[7:6] = 0; - if (rx_length == 7) - rx_data[7] = 0; - - // Framing error generation - // When 1 or 1.5 stop bits are used, only first stop bit is checked - rx_framing_error = (rx_stop_bit_1 | rx_stop_bit_1_5) ? ~rx_stop[0] : ~(&rx_stop[1:0]); - - // Parity error generation - if (rx_odd_parity) - rx_parity_error = ~(^{rx_data, rx_parity}); - else if (rx_even_parity) - rx_parity_error = ^{rx_data, rx_parity}; - else if (rx_stick0_parity) - rx_parity_error = rx_parity; - else if (rx_stick1_parity) - rx_parity_error = ~rx_parity; - else - rx_parity_error = 0; - end - - // Break detection - always@(posedge rx_clk) - begin - rx_break_detected_q <= rx_break_detected; - if (rx) - begin - rx_break_cnt = 0; // Reseting counter - rx_break_detected = 0; // Clearing break detected signal - end - else - rx_break_cnt = rx_break_cnt + 1; - if (rx_break_cnt == rx_break_detection_length * 16 * T_divisor) - begin -// $display("\n(%0t) Break_detected.", $time); - rx_break_detected <= 1; - -> device_detected_rx_break; - end - end - - // Writing received data - always@(posedge rx_clk) - begin - if ((rx_packet_end & ~rx_packet_end_q) | (rx_break_detected & ~rx_break_detected_q)) - begin - wait (rx | rx_break_detected); // Waiting for "end of cycle detected" or "break to be activated" - // rx_break_detected - // rx_length - // rx_parity_enabled - // rx_odd_parity | rx_even_parity | rx_stick1_parity | rx_stick0_parity - // rx_stop_bit_1 | rx_stop_bit_1_5 | rx_stop_bit_2 - -> device_received_packet; - end - end - - -// UART transmitter -//################# - - // Initial values for TX - initial - begin - // Default LENGTH - tx_length = 8; - // Default PARITY - tx_odd_parity = 1'b0; - tx_even_parity = 1'b0; - tx_stick1_parity = 1'b0; - tx_stick0_parity = 1'b0; - tx_parity_enabled = 1'b0; - // Default CORRECT PARITY - tx_parity_wrong = 1'b0; - // Default CORRECT FRAME - tx_framing_wrong = 1'b0; - tx_framing_err = 0; - tx_framing_glitch_err = 0; - // Default NO GLITCH - tx_glitch_num = 24'h0; - // Default NO BREAK - tx_break_enable = 1'b0; - tx_break_num = 16'h0; - end - - // Counter for TX glitch generation - always@(posedge tx_clk or posedge start_tx_glitch_cnt) - begin - if (start_tx_glitch_cnt) - begin - tx_glitch_cnt <= tx_glitch_cnt + 1; - if (tx_glitch_cnt == ((tx_glitch_num - 1) * T_divisor)) - tx_glitch = 1'b1; - else if (tx_glitch_cnt == (tx_glitch_num * T_divisor)) - begin - tx_glitch = 1'b0; - start_tx_glitch_cnt = 1'b0; - end - end - else - tx_glitch_cnt <= 0; - end - - // Break setting & break counter - always@(posedge tx_clk) - begin - if (tx_break_enable && (tx_break_cnt == (tx_break_num * T_divisor))) - begin - start_tx_break_cnt = 0; - end - else if (start_tx_break_cnt) - begin - tx_break_cnt = tx_break_cnt + 1; - tx_break = 1; - end - else - begin - tx_break_cnt = 0; - tx_break = 0; - end - end - - // Sending packets - task send_packet; - input tx_random_i; - input [7:0] tx_data_i; - input num_of_tx_data_i; - reg [7:0] tx_data; - reg tx_parity_xor; - integer tx_bit_index; - integer num_of_tx_data; - reg last_tx_data; - begin - // SEVERE ERROR - if (// WRONG combinations of parameters for testing - ((T_clk_delay != 0) && (tx_parity_wrong || tx_framing_wrong)) || - ((T_clk_delay != 0) && (tx_glitch_num != 0)) || - ((T_clk_delay != 0) && (tx_break_enable)) || - ((tx_parity_wrong || tx_framing_wrong) && (tx_glitch_num != 0)) || - ((tx_parity_wrong || tx_framing_wrong) && (tx_break_enable)) || - ((tx_glitch_num != 0) && (tx_break_enable)) || - (tx_glitch_num > ((tx_length + 2'h2 + tx_parity_enabled) * 16 * T_divisor)) || // with STOP bit -// (tx_glitch_num > ((tx_length + 2'h1 + tx_parity_enabled) * 16 * T_divisor)) || // without STOP bit - // WRONG input parameters - (num_of_tx_data_i == 0) || - ((num_of_tx_data_i > 1) && tx_break_enable) - ) - begin - `SEVERE_ERROR("WRONG combination of parameters for testing UART receiver"); - end - - for (num_of_tx_data = 0; - num_of_tx_data < num_of_tx_data_i; - num_of_tx_data = (num_of_tx_data + 1'b1)) - begin - - if (num_of_tx_data == (num_of_tx_data_i - 1'b1)) - last_tx_data = 1'b1; - else - last_tx_data = 0; - - // TX data - if (~tx_random_i) - tx_data = tx_data_i; - else - tx_data = {$random}%256; // 0..255 - - // Sending start bit - @(posedge tx_clk_divided); - tx = 0; - if (tx_glitch_num > 0) - start_tx_glitch_cnt = 1; // enabling tx_glitch generation - if (tx_break_enable) - start_tx_break_cnt = 1; // Start counter that counts break tx_length - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - - // Sending tx_data bits - for (tx_bit_index = 0; tx_bit_index < tx_length; tx_bit_index = tx_bit_index + 1) - begin - @(posedge tx_clk_divided); - tx = tx_data[tx_bit_index]; - end - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - - sent_data = tx_data; - - // Calculating parity - if(tx_length == 5) - begin - tx_parity_xor = ^tx_data[4:0]; - end - else if(tx_length == 6) - begin - tx_parity_xor = ^tx_data[5:0]; - end - else if(tx_length == 7) - begin - tx_parity_xor = ^tx_data[6:0]; - end - else if(tx_length == 8) - begin - tx_parity_xor = ^tx_data[7:0]; - end - else - $display("WRONG length of TX data packet"); - - // Sending parity bit - if (tx_parity_enabled) - begin - @(posedge tx_clk_divided); - if (tx_odd_parity) - tx = tx_parity_wrong ^ (~tx_parity_xor); - else if (tx_even_parity) - tx = tx_parity_wrong ^ tx_parity_xor; - else if (tx_stick1_parity) - tx = tx_parity_wrong ^ 1; - else if (tx_stick0_parity) - tx = tx_parity_wrong ^ 0; - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - end - - // Sending stop bit - if (~tx_framing_wrong || - (tx_glitch_num != ((((tx_length + 2'h2 + tx_parity_enabled) * 2) - 1'b1) * 8 * T_divisor))) - begin - @(posedge tx_clk_divided); - tx = 1; - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - -> device_sent_packet; - @(sent_packet_received); - end - else if (~tx_framing_wrong || - (tx_glitch_num == ((((tx_length + 2'h2 + tx_parity_enabled) * 2) - 1'b1) * 8 * T_divisor))) - begin - @(posedge tx_clk_divided); - tx = 1; - // Wait for 1 bit - @(posedge tx_clk_divided); // this will be like 2. stop bit - -> device_sent_packet; - @(sent_packet_received); - end - else if (tx_framing_wrong && last_tx_data) - begin - @(posedge tx_clk_divided); - // Wrong stop | start bit - tx = 0; - @(posedge tx_clk_divided); - -> device_sent_packet; - @(sent_packet_received); - tx_framing_wrong = 0; - // TX data - tx = 1; - tx_data = 8'hFF; - // Sending tx_data bits - for (tx_bit_index = 0; tx_bit_index < tx_length; tx_bit_index = tx_bit_index + 1) - begin - @(posedge tx_clk_divided); - tx = tx_data[tx_bit_index]; - end - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - - sent_data = tx_data; - - // Calculating parity - if(tx_length == 5) - begin - tx_parity_xor = ^tx_data[4:0]; - end - else if(tx_length == 6) - begin - tx_parity_xor = ^tx_data[5:0]; - end - else if(tx_length == 7) - begin - tx_parity_xor = ^tx_data[6:0]; - end - else if(tx_length == 8) - begin - tx_parity_xor = ^tx_data[7:0]; - end - else - $display("WRONG length of TX data packet"); - - // Sending parity bit - if (tx_parity_enabled) - begin - @(posedge tx_clk_divided); - if (tx_odd_parity) - tx = tx_parity_wrong ^ (~tx_parity_xor); - else if (tx_even_parity) - tx = tx_parity_wrong ^ tx_parity_xor; - else if (tx_stick1_parity) - tx = tx_parity_wrong ^ 1; - else if (tx_stick0_parity) - tx = tx_parity_wrong ^ 0; - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - end - - // Stop bit - @(posedge tx_clk_divided); - tx = 1; - // Wait for almost 1 bit - #(((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor); // wait half period - #((((T_clk_period + T_clk_delay) / 2) * 16 * T_divisor) - 2); // wait 2 less than half period - -> device_sent_packet; - @(sent_packet_received); - tx_framing_wrong = 1'b1; - end - else if (last_tx_data) - begin - @(posedge tx_clk_divided); - -> device_sent_packet; - @(sent_packet_received); - end - end - end - endtask // send_packet - - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device_utilities.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device_utilities.v deleted file mode 100644 index 813929b7..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_device_utilities.v +++ /dev/null @@ -1,323 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_device_utilities.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_device_utilities.v,v $ -// Revision 1.1 2004/03/27 03:55:16 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_defines.v" -`include "uart_testbench_defines.v" -`include "wb_model_defines.v" -`include "timescale.v" - -module uart_device_utilities; - -// UART receiver setting TASKs -//############################ - - // Set RX length - task set_rx_length; - input [3:0] len; - begin - `UTILS_MSG("SETTING RX CHAR length."); - testbench.i_uart_device.rx_length = len; - `UTILS_VAL1("Length:", len); - end - endtask // set_rx_length - - // Enable RX odd parity - task enable_rx_odd_parity; - begin - `UTILS_MSG("ENABLING RX CHAR odd parity."); - testbench.i_uart_device.rx_odd_parity = 1'b1; - testbench.i_uart_device.rx_even_parity = 1'b0; - testbench.i_uart_device.rx_stick1_parity = 1'b0; - testbench.i_uart_device.rx_stick0_parity = 1'b0; - testbench.i_uart_device.rx_parity_enabled = 1'b1; - end - endtask // enable_rx_odd_parity - - // Enable RX even parity - task enable_rx_even_parity; - begin - `UTILS_MSG("ENABLING RX CHAR even parity."); - testbench.i_uart_device.rx_odd_parity = 1'b0; - testbench.i_uart_device.rx_even_parity = 1'b1; - testbench.i_uart_device.rx_stick1_parity = 1'b0; - testbench.i_uart_device.rx_stick0_parity = 1'b0; - testbench.i_uart_device.rx_parity_enabled = 1'b1; - end - endtask // enable_rx_even_parity - - // Enable RX stick1 parity - task enable_rx_stick1_parity; - begin - `UTILS_MSG("ENABLING RX CHAR stick1 parity."); - testbench.i_uart_device.rx_odd_parity = 1'b0; - testbench.i_uart_device.rx_even_parity = 1'b0; - testbench.i_uart_device.rx_stick1_parity = 1'b1; - testbench.i_uart_device.rx_stick0_parity = 1'b0; - testbench.i_uart_device.rx_parity_enabled = 1'b1; - end - endtask // enable_rx_stick1_parity - - // Enable RX stick0 parity - task enable_rx_stick0_parity; - begin - `UTILS_MSG("ENABLING RX CHAR stick0 parity."); - testbench.i_uart_device.rx_odd_parity = 1'b0; - testbench.i_uart_device.rx_even_parity = 1'b0; - testbench.i_uart_device.rx_stick1_parity = 1'b0; - testbench.i_uart_device.rx_stick0_parity = 1'b1; - testbench.i_uart_device.rx_parity_enabled = 1'b1; - end - endtask // enable_rx_stick0_parity - - // Disable RX parity - task disable_rx_parity; - begin - `UTILS_MSG("DISABLING RX CHAR parity."); - testbench.i_uart_device.rx_odd_parity = 1'b0; - testbench.i_uart_device.rx_even_parity = 1'b0; - testbench.i_uart_device.rx_stick1_parity = 1'b0; - testbench.i_uart_device.rx_stick0_parity = 1'b0; - testbench.i_uart_device.rx_parity_enabled = 1'b0; - end - endtask // disable_rx_parity - - // Set 1 or 2 (1.5) RX stop bits - task set_rx_second_stop_bit; - input second_stop_bit; - begin - if (~second_stop_bit) - begin - `UTILS_MSG("SETTING RX CHAR 1 stop bit."); - end - else if (second_stop_bit && (testbench.i_uart_device.rx_length == 5)) - begin - `UTILS_MSG("SETTING RX CHAR 1.5 stop bit."); - end - else - begin - `UTILS_MSG("SETTING RX CHAR 2 stop bits."); - end - testbench.i_uart_device.rx_stop_bit_1 = ~second_stop_bit; - testbench.i_uart_device.rx_stop_bit_1_5 = second_stop_bit & (testbench.i_uart_device.rx_length == 5); - testbench.i_uart_device.rx_stop_bit_2 = second_stop_bit & (testbench.i_uart_device.rx_length != 5); - end - endtask // set_rx_second_stop_bit - -// UART transmitter setting TASKs -//############################### - - // Set TX length - task set_tx_length; - input [3:0] len; - begin - `UTILS_MSG("SETTING TX CHAR length."); - testbench.i_uart_device.tx_length = len; - `UTILS_VAL1("Length:", len); - end - endtask // set_tx_length - - // Enable TX odd parity - task enable_tx_odd_parity; - begin - `UTILS_MSG("ENABLING TX CHAR odd parity."); - testbench.i_uart_device.tx_odd_parity = 1'b1; - testbench.i_uart_device.tx_even_parity = 1'b0; - testbench.i_uart_device.tx_stick1_parity = 1'b0; - testbench.i_uart_device.tx_stick0_parity = 1'b0; - testbench.i_uart_device.tx_parity_enabled = 1'b1; - end - endtask // enable_tx_odd_parity - - // Enable TX even parity - task enable_tx_even_parity; - begin - `UTILS_MSG("ENABLING TX CHAR even parity."); - testbench.i_uart_device.tx_odd_parity = 1'b0; - testbench.i_uart_device.tx_even_parity = 1'b1; - testbench.i_uart_device.tx_stick1_parity = 1'b0; - testbench.i_uart_device.tx_stick0_parity = 1'b0; - testbench.i_uart_device.tx_parity_enabled = 1'b1; - end - endtask // enable_tx_even_parity - - // Enable TX stick1 parity - task enable_tx_stick1_parity; - begin - `UTILS_MSG("ENABLING TX CHAR stick1 parity."); - testbench.i_uart_device.tx_odd_parity = 1'b0; - testbench.i_uart_device.tx_even_parity = 1'b0; - testbench.i_uart_device.tx_stick1_parity = 1'b1; - testbench.i_uart_device.tx_stick0_parity = 1'b0; - testbench.i_uart_device.tx_parity_enabled = 1'b1; - end - endtask // enable_tx_stick1_parity - - // Enable TX stick0 parity - task enable_tx_stick0_parity; - begin - `UTILS_MSG("ENABLING TX CHAR stick0 parity."); - testbench.i_uart_device.tx_odd_parity = 1'b0; - testbench.i_uart_device.tx_even_parity = 1'b0; - testbench.i_uart_device.tx_stick1_parity = 1'b0; - testbench.i_uart_device.tx_stick0_parity = 1'b1; - testbench.i_uart_device.tx_parity_enabled = 1'b1; - end - endtask // enable_tx_stick0_parity - - // Disable TX parity - task disable_tx_parity; - begin - `UTILS_MSG("DISABLING TX CHAR parity."); - testbench.i_uart_device.tx_odd_parity = 1'b0; - testbench.i_uart_device.tx_even_parity = 1'b0; - testbench.i_uart_device.tx_stick1_parity = 1'b0; - testbench.i_uart_device.tx_stick0_parity = 1'b0; - testbench.i_uart_device.tx_parity_enabled = 1'b0; - end - endtask // disable_tx_parity - - // Correct TX parity - task correct_tx_parity; - begin - `UTILS_MSG("DISABLING WRONG parity generation."); - testbench.i_uart_device.tx_parity_wrong = 1'b0; - end - endtask // correct_tx_parity - - // Wrong TX parity - task wrong_tx_parity; - begin - `UTILS_MSG("ENABLING WRONG parity generation."); - testbench.i_uart_device.tx_parity_wrong = 1'b1; - end - endtask // wrong_tx_parity - - // Correct TX frame - task correct_tx_frame; - begin - `UTILS_MSG("DISABLING WRONG frame generation."); - testbench.i_uart_device.tx_framing_wrong = 1'b0; - end - endtask // correct_tx_frame - - // Wrong TX frame - task wrong_tx_frame; - begin - `UTILS_MSG("ENABLING WRONG frame generation."); - testbench.i_uart_device.tx_framing_wrong = 1'b1; - end - endtask // wrong_tx_frame - - // Generate TX glitch - task generate_tx_glitch; - input [23:0] generate_glitch_num; - begin - if (generate_glitch_num == 0) - begin - `UTILS_MSG("DISABLING 1 TIME glitch generation with CLKs delay."); - end - else - begin - `UTILS_MSG("ENABLING 1 TIME glitch generation with CLKs delay."); - end - testbench.i_uart_device.tx_glitch_num = generate_glitch_num; - `UTILS_VAL1("CLKs delay from start bit edge:", generate_glitch_num); - end - endtask // generate_tx_glitch - - // Enable TX break - task enable_tx_break; - input [15:0] break_num; - begin - `UTILS_MSG("ENABLING brake generation with each TX CHAR with brake length."); - testbench.i_uart_device.tx_break_enable = 1'b1; - testbench.i_uart_device.tx_break_num = break_num; - `UTILS_VAL1("Brake bit length:", break_num); - end - endtask // enable_tx_break - - // Disable TX break - task disable_tx_break; - begin - `UTILS_MSG("DISABLING brake generation with each TX CHAR."); - testbench.i_uart_device.tx_break_enable = 1'b0; - end - endtask // disable_tx_break - -// UART transmitter send TASKs -//############################ - - // Send character - task send_char; - input [7:0] char; - begin - testbench.i_uart_device.send_packet(1'b0, char, 1); - end - endtask // Send character - - // Send random character - task send_rnd_char; - begin - testbench.i_uart_device.send_packet(1'b1, 8'h0, 1); - end - endtask // send_rnd_char - - // Send burst random character - task send_burst_rnd_char; - input [31:0] num_of_char; - integer i; - begin - testbench.i_uart_device.send_packet(1'b1, 8'h0, num_of_char); - end - endtask // send_burst_rnd_char - - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_log.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_log.v deleted file mode 100644 index 0e87b9da..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_log.v +++ /dev/null @@ -1,209 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_log.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - Miha Dolenc, mihad@opencores.org //// -//// - Tadej Markovic, tadejm@opencores.org //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Miha Dolenc, mihad@opencores.org //// -//// Tadej Markovic, tadejm@opencores.org //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_log.v,v $ -// Revision 1.1 2004/03/27 03:55:16 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -module uart_log; - - -parameter testcase_name = ""; - -integer report_log_file_desc; -integer verbose_log_file_desc; - -reg free; -integer tests_ok; -integer tests_failed; - -initial free = 1; -initial tests_ok = 0; -initial tests_failed = 0; - -task start_log; - output ok_o; -begin - report_log_file_desc = $fopen({"../log/", testcase_name, "_report.log"}); - verbose_log_file_desc = $fopen({"../log/", testcase_name, "_verbose.log"}); - if ((report_log_file_desc == 0) || (verbose_log_file_desc == 0)) - ok_o = 1'b0; - else - ok_o = 1'b1; -end -endtask // start_log - -task end_log; -begin - report_add_delimiter; - $fdisplay(report_log_file_desc, "TEST CASE execution summary:"); - $fdisplay(report_log_file_desc, "Number of tests PASSED=%0d", tests_ok); - $fdisplay(report_log_file_desc, "Number of tests FAILED=%0d", tests_failed); - $fdisplay(report_log_file_desc, " Simulation End Time: %t", $time); - report_add_delimiter; - $fclose(report_log_file_desc); - $fclose(verbose_log_file_desc); -end -endtask // end_log - -task report_test_name; - input [1599:0] test_i; -begin - report_add_delimiter; - $fdisplay(report_log_file_desc, "%0s", test_i); -end -endtask // report_test_name - -task report_test_failed; - input [7999:0] message_i; -begin - $fdisplay(report_log_file_desc, " FAILED!"); - $fdisplay(report_log_file_desc, " Failure message: %0s.", message_i); - $fdisplay(report_log_file_desc, " Simulation Time: %t", $time); -end -endtask // report_test_failed - -task report_test_ok; -begin - $fdisplay(report_log_file_desc, " PASSED!"); - $fdisplay(report_log_file_desc, " Simulation Time: %t", $time); -end -endtask // report_test_ok - -task report_add_delimiter; -begin - $fdisplay(report_log_file_desc, ""); - $fdisplay(report_log_file_desc, "%0s", {75{"-"}}); - $fdisplay(report_log_file_desc, ""); -end -endtask // report_add_delimiter - -task report_add_text; - input [7999:0] text_i; -begin - $fdisplay(report_log_file_desc, " %0s", text_i); -end -endtask // report_add_text - -task verbose_test_name; - input [1599:0] test_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, ""); - $fdisplay(verbose_log_file_desc, "%0s", {75{"-"}}); - $fdisplay(verbose_log_file_desc, "- %0s", test_i); - $fdisplay(verbose_log_file_desc, "%0s", {75{"-"}}); - $fdisplay(verbose_log_file_desc, ""); - free = 1; -end -endtask // verbose_test_name - -task verbose_severe_err; - input [7999:0] time_i; - input [7999:0] severe_error_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, "%0s", time_i); - $fdisplay(verbose_log_file_desc, "*E, Reporting severe error:"); - $fdisplay(verbose_log_file_desc, " %0s", severe_error_i); - free = 1; -end -endtask // verbose_severe_err - -task verbose_err; - input [7999:0] time_i; - input [7999:0] error_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, "%0s", time_i); - $fdisplay(verbose_log_file_desc, "*E, %0s", error_i); - free = 1; -end -endtask // verbose_err - -task verbose_wrn; - input [7999:0] time_i; - input [7999:0] warning_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, "%0s", time_i); - $fdisplay(verbose_log_file_desc, "*W, %0s", warning_i); - free = 1; -end -endtask // verbose_wrn - -task verbose_msg; - input [7999:0] time_i; - input [7999:0] message_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, "%0s", time_i); - $fdisplay(verbose_log_file_desc, "*N, %0s", message_i); - free = 1; -end -endtask // verbose_msg - -task verbose_val; - input [7999:0] time_i; - input [7999:0] message_i; - input [31:0] value_i; -begin - free = 0; - $fdisplay(verbose_log_file_desc, "%0s", time_i); - $fdisplay(verbose_log_file_desc, "*N, %0s %0h.", message_i, value_i); - free = 1; -end -endtask // verbose_val - - -endmodule // uart_log - diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_test.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_test.v deleted file mode 100644 index 5d61949b..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_test.v +++ /dev/null @@ -1,339 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_test.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core test bench //// -//// //// -//// Known problems (limits): //// -//// A very simple test bench. Creates two UARTS and sends //// -//// data on to the other. //// -//// //// -//// To Do: //// -//// More complete testing should be done!!! //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Jacob Gorban, gorban@opencores.org //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_test.v,v $ -// Revision 1.3 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// -//`define DATA_BUS_WIDTH_8 -`include "timescale.v" -module uart_test (); - -`include "uart_defines.v" - -reg clkr; -reg wb_rst_ir; -wire [`UART_ADDR_WIDTH-1:0] wb_adr_i; -wire [31:0] wb_dat_i; -wire [31:0] wb_dat_o; -wire [3:0] wb_sel_i; -wire pad_stx_o; -reg pad_srx_ir; - -integer e; - -uart_top uart_snd( - clk, - - // Wishbone signals - wb_rst_i, wb_adr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_sel_i, - int_o, // interrupt request - - // UART signals - // serial input/output - pad_stx_o, pad_srx_i, - - // modem signals - rts_o, cts_i, dtr_o, dsr_i, ri_i, dcd_i -`ifdef UART_HAS_BAUDRATE_OUTPUT - , baud1_o -`endif - - - - ); - - -// All the signals and regs named with a 1 are receiver fifo signals - -wire [`UART_ADDR_WIDTH-1:0] wb1_adr_i; -wire [31:0] wb1_dat_i; -wire [31:0] wb1_dat_o; -wire [3:0] wb1_sel_i; -wire int1_o; -wire stx1_o; -reg srx1_ir; - -uart_top uart_rcv( - clk, - - // Wishbone signals - wb_rst_i, wb1_adr_i, wb1_dat_i, wb1_dat_o, wb1_we_i, wb1_stb_i, wb1_cyc_i, wb1_ack_o, wb1_sel_i, - int1_o, // interrupt request - - // UART signals - // serial input/output - stx1_o, srx1_i, - - // modem signals - rts1_o, cts1_i, dtr1_o, dsr1_i, ri1_i, dcd1_i -`ifdef UART_HAS_BAUDRATE_OUTPUT - , baud2_o -`endif - - ); - -assign clk = clkr; -assign wb_rst_i = wb_rst_ir; -assign pad_srx_i = pad_srx_ir; -assign cts_i = 1; //cts_ir; -assign dsr_i = 1; //dsr_ir; -assign ri_i = 1; //ri_ir; -assign dcd_i = 1; //dcd_ir; - -assign srx1_i = srx1_ir; -assign cts1_i = 1; //cts1_ir; -assign dsr1_i = 1; //dsr1_ir; -assign ri1_i = 1; //ri1_ir; -assign dcd1_i = 1; //dcd1_ir; - -reg [31:0] dat_o; -/////////// CONNECT THE UARTS -always @(pad_stx_o) -begin - srx1_ir = pad_stx_o; -end - -initial -begin - clkr = 0; - #50000 $finish; -end - -wb_mast wbm(// Outputs - .adr (wb_adr_i), - .dout (wb_dat_i), - .cyc (wb_cyc_i), - .stb (wb_stb_i), - .sel (wb_sel_i), - .we (wb_we_i), - // Inputs - .clk (clk), - .rst (wb_rst_i), - .din (wb_dat_o), - .ack (wb_ack_o), - .err (1'b0), - .rty (1'b0)); - -wb_mast wbm1(// Outputs - .adr (wb1_adr_i), - .dout (wb1_dat_i), - .cyc (wb1_cyc_i), - .stb (wb1_stb_i), - .sel (wb1_sel_i), - .we (wb1_we_i), - // Inputs - .clk (clk), - .rst (wb_rst_i), - .din (wb1_dat_o), - .ack (wb1_ack_o), - .err (1'b0), - .rty (1'b0)); - -// The test sequence -initial -begin - #1 wb_rst_ir = 1; - #10 wb_rst_ir = 0; - - //write to lcr. set bit 7 - //wb_cyc_ir = 1; - wbm.wb_wr1(`UART_REG_LC, 4'b1000, {8'b10011011, 24'b0}); - // set dl to divide by 3 - wbm.wb_wr1(`UART_REG_DL1,4'b0001, 32'd2); - @(posedge clk); - @(posedge clk); - // restore normal registers - wbm.wb_wr1(`UART_REG_LC, 4'b1000, {8'b00011011, 24'b0}); //00011011 - - fork - begin - $display("%m : %t : sending : %h", $time, 8'b10000001); - wbm.wb_wr1(0, 4'b1, 32'b10000001); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b01000010); - wbm.wb_wr1(0, 4'b1, 32'b01000010); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b11000011); - wbm.wb_wr1(0, 4'b1, 32'b11000011); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b00100100); - wbm.wb_wr1(0, 4'b1, 32'b00100100); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b10100101); - wbm.wb_wr1(0, 4'b1, 32'b10100101); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b01100110); - wbm.wb_wr1(0, 4'b1, 32'b01100110); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b11100111); - wbm.wb_wr1(0, 4'b1, 32'b11100111); - @(posedge clk); - @(posedge clk); - $display("%m : %t : sending : %h", $time, 8'b00011000); - wbm.wb_wr1(0, 4'b1, 32'b00011000); - wait (uart_snd.regs.tstate==0 && uart_snd.regs.transmitter.tf_count==0); -// disable check; - end -// begin: check -// end - join -end - -always @(int1_o) - if (int1_o) - $display("INT_O high (%g)", $time); - else - $display("INT_O low (%g)", $time); - -always @(int1_o) -begin - if (int1_o) begin - wbm1.wb_rd1(2,4'b0100, dat_o); - $display("IIR : %h", dat_o); - wbm1.wb_rd1(5,4'b0010, dat_o); - $display("LSR : %h", dat_o); - wbm1.wb_rd1(0, 4'b1, dat_o); - $display("%m : %t : Data out: %h", $time, dat_o); - end -end - -// receiver side -initial -begin - #11; - //write to lcr. set bit 7 - //wb_cyc_ir = 1; - wbm1.wb_wr1(`UART_REG_LC, 4'b1000, {8'b10011011, 24'b0}); - // set dl to divide by 3 - wbm1.wb_wr1(`UART_REG_DL1, 4'b1, 32'd2); - @(posedge clk); - @(posedge clk); - // restore normal registers - wbm1.wb_wr1(`UART_REG_LC, 4'b1000, {8'b00011011, 24'b0}); - wbm1.wb_wr1(`UART_REG_IE, 4'b0010, {16'b0, 8'b00001111, 8'b0}); - wait(uart_rcv.regs.receiver.rf_count == 2); - e = 800; - while (e > 0) - begin - @(posedge clk) - if (uart_rcv.regs.enable) e = e - 1; - end - wbm1.wb_rd1(0, 4'b1, dat_o); - $display("%m : %t : Data out: %h", $time, dat_o); - @(posedge clk); - wbm1.wb_rd1(0, 4'b1, dat_o); - $display("%m : %t : Data out: %h", $time, dat_o); - $display("%m : Finish"); - e = 800; - while (e > 0) - begin - @(posedge clk) - if (uart_rcv.regs.enable) e = e - 1; - end - e = 800; - while (e > 0) - begin - @(posedge clk) - if (uart_rcv.regs.enable) e = e - 1; - end - $finish; -end - -//always @(uart_rcv.regs.rstate) -//begin -// $display($time,": Receiver state changed to: ", uart_rcv.regs.rstate); -//end - -initial - begin - `ifdef DATA_BUS_WIDTH_8 -$display("DATA BUS IS 8"); -`else -$display("DATA BUS IS 32"); -`endif - $display("%d %d", `UART_ADDR_WIDTH, `UART_DATA_WIDTH); - - end - - -always -begin - #5 clkr = ~clk; -end - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench.v deleted file mode 100644 index e126ade5..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench.v +++ /dev/null @@ -1,1366 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_testbench.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_testbench.v,v $ -// Revision 1.1 2004/03/27 03:55:17 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_defines.v" -`include "uart_testbench_defines.v" -`include "wb_model_defines.v" -`include "timescale.v" - -module testbench; - - -parameter max_wait_cnt = 20000; - -// INTERNAL signals -//################# - - // WB slave signals - //################# - - // UART Wishbone Slave signals - wire wb_int_o; - wire [`UART_ADDR_WIDTH-1:0] wbs_adr_i; - wire [`UART_DATA_WIDTH-1:0] wbs_dat_i; - wire [`UART_DATA_WIDTH-1:0] wbs_dat_o; - wire [3:0] wbs_sel_i; - wire wbs_cyc_i; - wire wbs_stb_i; - wire [2:0] wbs_cti_i; - wire [1:0] wbs_bte_i; - wire wbs_we_i; - wire wbs_ack_o; - wire wbs_rty_o = 1'b0; - wire wbs_err_o = 1'b0; - - // UART signals - //############# - - // UART Serial Data I/O signals - wire stx_pad_o; - wire srx_pad_i; - // UART Modem I/O signals - wire rts_pad_o; - wire cts_pad_i; - wire dtr_pad_o; - wire dsr_pad_i; - wire ri_pad_i; - wire dcd_pad_i; - `ifdef UART_HAS_BAUDRATE_OUTPUT - wire baud_o; - `endif - - // System signals - //############### - - // WB clock signal - reg wb_clk; // divided device clock with period T_wb_clk_period - // WB clock enable signal - reg wb_clk_en = 1'b1; - // WB clock period variable - real T_wb_clk_period = 20; - // WB reset signal - reg wb_reset; - event reset_aserted; - event reset_released; - event int_aserted; - event int_released; - // Error detection event - event error_detected; - - // UART register monitor - //######################### - - // Line Status Register - // Reading LSR register - reg lsr_reg_read; - // Bit 0 - Data Ready - reg lsr_reg_bit0_change_allowed; - // Bit 1 - Overrun Error - reg lsr_reg_bit1_change_allowed; - // Bit 2 - Parity Error - reg lsr_reg_bit2_change_allowed; - reg [4:0] rx_fifo_par_rd_pointer; - integer i2; - // Bit 3 - Framing Error - reg lsr_reg_bit3_change_allowed; - reg [4:0] rx_fifo_frm_rd_pointer; - integer i3; - // Bit 4 - Break Interrupt - reg lsr_reg_bit4_change_allowed; - reg [4:0] rx_fifo_brk_rd_pointer; - integer i4; - // Bit 5 - Transmitter Holding Register Empty - reg lsr_reg_bit5_change_allowed; - // Bit 6 - Transmitter Empty - reg lsr_reg_bit6_change_allowed; - // Bit 7 - Error in RX FIFO - reg lsr_reg_bit7_change_allowed; - - // UART transmitter monitor - //######################### - - // TX FIFO signals - reg [7:0] tx_shift_reg; - reg tx_shift_reg_empty; - reg tx_start_bit_edge; - reg [7:0] tx_fifo [0:31]; - reg [4:0] tx_fifo_wr_pointer; - reg [4:0] tx_fifo_rd_pointer; - reg [4:0] tx_fifo_status; - - // UART receiver monitor - //###################### - - // RX FIFO signals - reg [7:0] rx_shift_reg; - reg rx_shift_reg_full; - reg rx_parity_err; - reg rx_framing_err; - reg rx_framing_glitch; - reg rx_break_int; - reg rx_overrun_err_occured; - reg [7:0] rx_fifo_data [0:31]; - reg [31:0] rx_fifo_par; - reg [31:0] rx_fifo_frm; - reg [31:0] rx_fifo_brk; - reg [4:0] rx_fifo_wr_pointer; - reg [4:0] rx_fifo_rd_pointer; - reg [4:0] rx_fifo_status; - reg rx_fifo_read; - - // UART register tracker - //###################### - - // Registers - wire [7:0] ier_reg; - wire [7:0] iir_reg; - wire [7:0] fcr_reg; - wire [7:0] lcr_reg; - wire [7:0] mcr_reg; - wire [7:0] lsr_reg; - wire [7:0] msr_reg; - wire [7:0] dll_reg; - wire [7:0] dlm_reg; - // Events - event ier_reg_changed; - event iir_reg_changed; - event fcr_reg_changed; - event lcr_reg_changed; - event mcr_reg_changed; - event lsr_reg_changed; - event msr_reg_changed; - event dll_reg_changed; - event dlm_reg_changed; - // Register access - reg [`UART_ADDR_WIDTH-1:0] reg_adr; - reg [`UART_DATA_WIDTH-1:0] reg_dat; - reg reg_dlab; - event reg_written; - event tx_reg_written; - event reg_read; - event rx_reg_read; - - - -uart_top #(`UART_DATA_WIDTH, `UART_ADDR_WIDTH) i_uart_top -( - .wb_clk_i (wb_clk), - .wb_rst_i (wb_reset), - .int_o (wb_int_o), -// WB slave signals - 2 address locations for two registers! - .wb_cyc_i (wbs_cyc_i), - .wb_stb_i (wbs_stb_i), - .wb_we_i (wbs_we_i), - .wb_sel_i (wbs_sel_i), - .wb_adr_i (wbs_adr_i), - .wb_dat_i (wbs_dat_i), - .wb_dat_o (wbs_dat_o), - .wb_ack_o (wbs_ack_o), -// UART signals - .stx_pad_o (stx_pad_o), - .srx_pad_i (srx_pad_i), -// Modem signals - .rts_pad_o (rts_pad_o), - .cts_pad_i (cts_pad_i), - .dtr_pad_o (dtr_pad_o), - .dsr_pad_i (dsr_pad_i), - .ri_pad_i (ri_pad_i), - .dcd_pad_i (dcd_pad_i) -`ifdef UART_HAS_BAUDRATE_OUTPUT - , - .baud_o (baud_o) -`endif -); - -uart_device i_uart_device -( -// UART signals - .stx_i (stx_pad_o), - .srx_o (srx_pad_i), -// Modem signals - .rts_i (rts_pad_o), - .cts_o (cts_pad_i), - .dtr_i (dtr_pad_o), - .dsr_o (dsr_pad_i), - .ri_o (ri_pad_i), - .dcd_o (dcd_pad_i) -); - -wb_master_model #(`UART_DATA_WIDTH, `UART_ADDR_WIDTH, 4) i_wb_master_model -( - .wb_rst_i (wb_reset), - .wb_clk_i (wb_clk), - .wbm_cyc_o (wbs_cyc_i), - .wbm_cti_o (), - .wbm_bte_o (), - .wbm_stb_o (wbs_stb_i), - .wbm_we_o (wbs_we_i), - .wbm_adr_o (wbs_adr_i), - .wbm_sel_o (wbs_sel_i), - .wbm_dat_o (wbs_dat_i), - .wbm_dat_i (wbs_dat_o), - .wbm_ack_i (wbs_ack_o), - .wbm_err_i (wbs_err_o), // inactive (1'b0) - .wbm_rty_i (wbs_rty_o) // inactive (1'b0) -); - - -initial -begin:system - // Initial system values - wb_reset = 1'b1; - wb_clk = 1'b0; -end - - -// WB clock generation (DEVICE clock is generated in uart_device.v) -//################################################################# - - // DEVICE's clock generation: - // ---------------- - // // rx_clk rising edge - // always@(posedge rx_clk) - // if (rx_clk_en) - // #(T_clk_period / 2) rx_clk = 1'b0; - // // rx_clk falling edge - // always@(negedge rx_clk) - // if (rx_clk_en) - // #(T_clk_period / 2) rx_clk = 1'b1; - // ---------------- - // DEVICE's transmit clocks generation: - // ---------------- - // // tx_clk rising edge - // always@(posedge tx_clk) - // if (tx_clk_en) - // #((T_clk_period / 2) * 16 * T_divisor) tx_clk = 1'b0; - // // tx_clk falling edge - // always@(negedge tx_clk) - // if (tx_clk_en) - // #((T_clk_period / 2) * 16 * T_divisor) tx_clk = 1'b1; - // ---------------- - - // WB clock - always@(posedge wb_clk) - if (wb_clk_en) - #(T_wb_clk_period / 2) wb_clk = 1'b0; - always@(negedge wb_clk) - if (wb_clk_en) - #(T_wb_clk_period / 2) wb_clk = 1'b1; - - -// SYSTEM signals tracker -//####################### - - // Reset - always@(posedge wb_reset) - -> reset_aserted; - always@(negedge wb_reset) - -> reset_released; - - // Interrupt - always@(posedge wb_int_o) - -> int_aserted; - always@(negedge wb_int_o) - -> int_released; - - -// UART register tracker -//###################### - - // UART registers: - // ---------------- - // RBR (R/ | ADR 0 | DLAB 0) - // [7:0] -RX---- "rxdata" Receiver Buffer Register - // ---------------- - // THR ( /W | ADR 0 | DLAB 0) - // [7:0] ----TX- "txdata" Transmitter Holding Register - // ---------------- - // IER (R/W | ADR 1 | DLAB 0) - // [0] -RX---- "1" Received Data Available & Receive Fifo Timeout - // [1] ----TX- "1" Transmitter Holding Register Empty - // [2] -RX---- "1" Receiver Line Status - // [3] -MODEM- "1" Modem Status - // ---------------- - // IIR (R/ | ADR 2) - // [0] ------- "0" Interrupt is Pending (decreasing priority level in following 3 bits) - // [3:1] -RX---- "011" Receiver Line Status - Overrun, Parity, Framing error or Break int. ---> READ LSR - // [3:1] -RX---- "010" Received Data Available - Fifo Trigger Level Reached ------------------> READ RBR (Fifo lower than trig.) - // [3:1] -RX---- "110" Timeout Indication - Fifo not empty & no Fifo action for 4 char times -> READ RBR - // [3:1] ----TX- "001" Transmitter Holding Register Empty - THR Empty ------------------------> READ IIR | WRITE THR - // [3:1] -MODEM- "000" Modem Status - CTS, DSR, DCD changed or RI changed from '0' to '1' ----> READ MSR - // ---------------- - // FCR ( /W | ADR 2) - // [1] -RX---- "1" Clear only Receiver Fifo (not shift register) - // [2] ----TX- "1" Clear only Transmitter Fifo (not shift register) - // [7:6] -RX---- "00" 1 BYTE Receiver Fifo Interrupt trigger level - // [7:6] -RX---- "01" 4 BYTEs Receiver Fifo Interrupt trigger level - // [7:6] -RX---- "10" 8 BYTEs Receiver Fifo Interrupt trigger level - // [7:6] -RX---- "11" 14 BYTEs Receiver Fifo Interrupt trigger level - // ---------------- - // LCR (R/W | ADR 3) - // [1:0] -RX-TX- "00" 5 bits in each character - // [1:0] -RX-TX- "01" 6 bits in each character - // [1:0] -RX-TX- "10" 7 bits in each character - // [1:0] -RX-TX- "11" 8 bits in each character - // [2] -RX-TX- "0" 1 stop bit - // [2] -RX-TX- "1" 1.5 stop bits (when 5 bits of char.) or 2 stop bits (when 6, 7 or 8 bits of char.) - // [3] -RX-TX- "1" Parity bit enabled - // [5:4] -RX-TX- "00" NO Stick Parity & ODD Parity bit - ODD num. of '1's is transmitted - // [5:4] -RX-TX- "01" NO Stick Parity & EVEN Parity bit - EVEN num. of '1's is transmitted - // [5:4] -RX-TX- "10" Stick Parity bit - Stick '1' as Parity bit - // [5:4] -RX-TX- "11" Stick Parity bit - Stick '0' as Parity bit - // [6] ----TX- "1" Break Control - Output is forced to '0' - // [7] ------- "1" DLAB - for access to DLL and DLM - // ---------------- - // MCR ( /W | ADR 4) - // [0] -MODEM- "1" Force DTR to '0' - in LoopBack connected to DSR input - // [1] -MODEM- "1" Force RTS to '0' - in LoopBack connected to CTS input - // [2] -MODEM- "1" Force N.C.1 to '0' - in LoopBack connected to RI input - // [3] -MODEM- "1" Force N.C.2 to '0' - in LoopBack connected to DCD input - // [4] -MODEM- "1" LoopBack mode - // ---------------- - // LSR (R/ | ADR 5) - // [0] -RX---- "1" Data Ready - At least 1 char. received and is in Fifo----------> READ RBR (Fifo empty) - // [1] -RX---- "1" Overrun Error - Fifo full & 1 char. received in shift reg. ----> READ LSR - // [2] -RX---- "1" Parity Error - top Fifo char. has invalid parity bit ----------> READ LSR - // [3] -RX---- "1" Framing Error - top Fifo char. has invalid stop bit -----------> READ LSR - // [4] -RX---- "1" Break Int. - top Fifo char. bits are '0' and it's ctrl. bits --> READ LSR - // [5] ----TX- "1" Transmitter Holding Register Empty - transmitter Fifo empty ---> WRITE THR - // [6] ----TX- "1" Transmitter EMpTy - transmitter Fifo empty & shift reg. empty -> WRITE THR - // [7] -RX---- "1" At least 1 Parity Error, Framing Error or Break Int. in Fifo --> READ LSR & No More Errors in Fifo - // ---------------- - // MSR (R/ | ADR 6) - // [0] -MODEM- "1" Delta CTS indicator - CTS has changed it's state --------------> READ MSR - // [1] -MODEM- "1" Delta DSR indicator - DSR has changed it's state --------------> READ MSR - // [2] -MODEM- "1" Trailing Edge of RI - RI has changed from '0' to '1' ----------> READ MSR - // [3] -MODEM- "1" Delta DCD indicator - DCD has changed it's state --------------> READ MSR - // [4] -MODEM- "x" Complement of CTS input | in LoopBack equal to RTS = MCR[1] - // [5] -MODEM- "x" Complement of DSR input | in LoopBack equal to DTR = MCR[0] - // [6] -MODEM- "x" Complement of RI input | in LoopBack equal to N.C.1 = MCR[2] - // [7] -MODEM- "x" Complement of DCD input | in LoopBack equal to N.C.2 = MCR[3] - // ---------------- - // DLL (R/W | ADR 0 | DLAB 1) - // [7:0] ------- "dl[ 7:0]" LSB of DL Reg. written 2. - dl == '0' disables outputs / dl = 1/(T_wb_clk_period*16*BaudRate) - // ---------------- - // DLM (R/W | ADR 1 | DLAB 1) - // [7:0] ------- "dl[15:8]" MSB of DL Reg. written 1. - dl == '0' disables outputs / dl = 1/(T_wb_clk_period*16*BaudRate) - // ---------------- - - // Transparent UART registers - assign ier_reg[7:0] = {4'h0, testbench.i_uart_top.regs.ier }; - assign iir_reg[7:0] = {4'hC, testbench.i_uart_top.regs.iir }; - assign fcr_reg[7:0] = { testbench.i_uart_top.regs.fcr, 6'h0}; - assign lcr_reg[7:0] = { testbench.i_uart_top.regs.lcr }; // lcr_reg[7] == DLAB !!! - assign mcr_reg[7:0] = {3'h0, testbench.i_uart_top.regs.mcr }; - assign lsr_reg[7:0] = { testbench.i_uart_top.regs.lsr }; - assign msr_reg[7:0] = { testbench.i_uart_top.regs.msr }; - assign dll_reg[7:0] = { testbench.i_uart_top.regs.dl[ 7:0] }; - assign dlm_reg[7:0] = { testbench.i_uart_top.regs.dl[15:8] }; - - // Tracking changes of registers - always@(ier_reg) - begin - -> ier_reg_changed; - end - always@(iir_reg) - begin - -> iir_reg_changed; - end - always@(fcr_reg) - begin - -> fcr_reg_changed; - end - always@(lcr_reg) - begin - -> lcr_reg_changed; - end - always@(mcr_reg) - begin - -> mcr_reg_changed; - end - always@(lsr_reg) - begin - -> lsr_reg_changed; - end - always@(msr_reg) - begin - -> msr_reg_changed; - end - always@(dll_reg) - begin - -> dll_reg_changed; - end - always@(dlm_reg) - begin - -> dlm_reg_changed; - end - - // Tracking read/write access to registers - always@(wbs_cyc_i or wbs_stb_i or wbs_we_i or wbs_sel_i or wbs_adr_i or - wbs_dat_i /*or wbs_ack_o*/ /*or posedge wb_clk*/) - begin - if (wbs_cyc_i && wbs_stb_i) - begin - if (wbs_we_i /*&& wbs_ack_o*/) // WRITE - begin - // LOG's example of detecting of register write: - // ---------------- - // case (wbs_adr_i) - // `UART_REG_TR: if (lcr_reg[7]) // lcr_reg[7] == DLAB !!! - // -> dll_reg_written; - // else - // -> thr_reg_written; - // `UART_REG_IE: if (lcr_reg[7]) // lcr_reg[7] == DLAB !!! - // -> dlm_reg_written; - // else - // -> ier_reg_written; - // `UART_REG_FC: -> fcr_reg_written; - // `UART_REG_LC: -> lcr_reg_written; - // `UART_REG_MC: -> mcr_reg_written; - // default: -> erroneous_write_location; - // endcase - // ---------------- - - reg_adr = wbs_adr_i; - reg_dat = wbs_dat_i; - reg_dlab = lcr_reg[7]; - -> reg_written; - if (~reg_dlab && (reg_adr == `UART_REG_TR)) // write to FIFO - -> tx_reg_written; - end - end - end - always@(wbs_cyc_i or wbs_stb_i or wbs_we_i or wbs_sel_i or wbs_adr_i or - wbs_dat_o or wbs_ack_o /*or posedge wb_clk*/) - begin - if (wbs_cyc_i && wbs_stb_i) - begin - if (~wbs_we_i && wbs_ack_o) // READ - begin - // LOG's example of detecting of register read: - // ---------------- - // case (wbs_adr_i) - // `UART_REG_RB: if (lcr_reg[7]) // lcr_reg[7] == DLAB !!! - // -> dll_reg_read; - // else - // -> rbr_reg_read; - // `UART_REG_IE: if (lcr_reg[7]) // lcr_reg[7] == DLAB !!! - // -> dlm_reg_read; - // else - // -> ier_reg_read; - // `UART_REG_II: -> iir_reg_read; - // `UART_REG_LC: -> lcr_reg_read; - // `UART_REG_LS: -> lsr_reg_read; - // `UART_REG_MS: -> msr_reg_read; - // default: -> erroneous_read_location; - // endcase - // ---------------- - - reg_adr = wbs_adr_i; - reg_dat = wbs_dat_o; - reg_dlab = lcr_reg[7]; - -> reg_read; - if (~reg_dlab && (reg_adr == `UART_REG_RB)) - -> rx_reg_read; - end - end - end - - -// UART register monitor -//####################### - - // Line Status Register - // Reading LSR register - initial - begin - lsr_reg_read = 0; - forever - begin - @(reg_read); - if (reg_adr == `UART_REG_LS) - begin - lsr_reg_read = 1'b1; - repeat (1) @(posedge wb_clk); - lsr_reg_read = 0; - end - end - end - // Bit 0 - Data Ready - initial - begin - lsr_reg_bit0_change_allowed = 0; - @(reset_released); - #10; - fork - begin: rx_fifo_status_changing - forever - begin - if (rx_fifo_status == 0) - begin - wait (rx_fifo_status > 0); - lsr_reg_bit0_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit0_change_allowed = 0; - if (~lsr_reg[0]) - begin - `BENCH_ERROR("Bit 0 of LSR register not '1'!"); - -> error_detected; - end - end - else - begin - wait (rx_fifo_status == 0); - lsr_reg_bit0_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit0_change_allowed = 0; - if (lsr_reg[0]) - begin - `BENCH_ERROR("Bit 0 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit0_changing - forever - begin - wait (~lsr_reg_bit0_change_allowed); - begin - @(lsr_reg[0] or lsr_reg_bit0_change_allowed); - if (~lsr_reg_bit0_change_allowed) - begin - `BENCH_ERROR("Bit 0 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 1 - Overrun Error - initial - begin - lsr_reg_bit1_change_allowed = 0; - @(reset_released); - #10; - fork - begin: rx_overrun_err_occured_changing - forever - begin - if (~rx_overrun_err_occured) - begin - wait (rx_overrun_err_occured); - lsr_reg_bit1_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit1_change_allowed = 0; - if (~lsr_reg[1]) - begin - `BENCH_ERROR("Bit 1 of LSR register not '1'!"); - -> error_detected; - end - end - else - begin - wait (lsr_reg_read); - lsr_reg_bit1_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit1_change_allowed = 0; - rx_overrun_err_occured = 0; - if (lsr_reg[1]) - begin - `BENCH_ERROR("Bit 1 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit1_changing - forever - begin - wait (~lsr_reg_bit1_change_allowed); - begin - @(lsr_reg[1] or lsr_reg_bit1_change_allowed); - if (~lsr_reg_bit1_change_allowed) - begin - `BENCH_ERROR("Bit 1 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 2 - Parity Error - initial - begin - lsr_reg_bit2_change_allowed = 0; - rx_fifo_par_rd_pointer = 0; - @(reset_released); - #10; - fork - begin: rx_parity_err_changing - forever - begin - if (~rx_fifo_par[rx_fifo_par_rd_pointer]) - begin - wait (rx_fifo_read); - lsr_reg_bit2_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit2_change_allowed = 0; - rx_fifo_par_rd_pointer = rx_fifo_par_rd_pointer + 1'b1; - // check bit - if (~lsr_reg[2] && rx_fifo_par[rx_fifo_par_rd_pointer]) - begin - `BENCH_ERROR("Bit 2 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[2] && ~rx_fifo_par[rx_fifo_par_rd_pointer]) - begin - `BENCH_ERROR("Bit 2 of LSR register not '0'!"); - -> error_detected; - end - end - else - begin - wait (lsr_reg_read); - lsr_reg_bit2_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit2_change_allowed = 0; - if (rx_fifo_par_rd_pointer < rx_fifo_rd_pointer) - begin - for (i2 = rx_fifo_par_rd_pointer; i2 <= rx_fifo_rd_pointer; i2 = i2 + 1) - rx_fifo_par[i2] = 0; - rx_fifo_par_rd_pointer = rx_fifo_rd_pointer; - end - else if (rx_fifo_par_rd_pointer > rx_fifo_rd_pointer) - begin - for (i2 = rx_fifo_par_rd_pointer; i2 <= 31; i2 = i2 + 1) - rx_fifo_par[i2] = 0; - for (i2 = 0; i2 <= rx_fifo_rd_pointer; i2 = i2 + 1) - rx_fifo_par[i2] = 0; - rx_fifo_par_rd_pointer = rx_fifo_rd_pointer; - end - else - begin - rx_fifo_par = 0; - rx_fifo_par_rd_pointer = rx_fifo_rd_pointer; - end - // check bit - if (~lsr_reg[2] && rx_fifo_par[rx_fifo_par_rd_pointer]) - begin - `BENCH_ERROR("Bit 2 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[2] && ~rx_fifo_par[rx_fifo_par_rd_pointer]) - begin - `BENCH_ERROR("Bit 2 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit2_changing - forever - begin - wait (~lsr_reg_bit2_change_allowed); - begin - @(lsr_reg[2] or lsr_reg_bit2_change_allowed); - if (~lsr_reg_bit2_change_allowed) - begin - `BENCH_ERROR("Bit 2 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 3 - Framing Error - initial - begin - lsr_reg_bit3_change_allowed = 0; - rx_fifo_frm_rd_pointer = 0; - @(reset_released); - #10; - fork - begin: rx_framing_err_changing - forever - begin - if (~rx_fifo_frm[rx_fifo_frm_rd_pointer]) - begin - wait (rx_fifo_read); - lsr_reg_bit3_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit3_change_allowed = 0; - rx_fifo_frm_rd_pointer = rx_fifo_frm_rd_pointer + 1'b1; - // check bit - if (~lsr_reg[3] && rx_fifo_frm[rx_fifo_frm_rd_pointer]) - begin - `BENCH_ERROR("Bit 3 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[3] && ~rx_fifo_frm[rx_fifo_frm_rd_pointer]) - begin - `BENCH_ERROR("Bit 3 of LSR register not '0'!"); - -> error_detected; - end - end - else - begin - wait (lsr_reg_read); - lsr_reg_bit3_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit3_change_allowed = 0; - if (rx_fifo_frm_rd_pointer < rx_fifo_rd_pointer) - begin - for (i3 = rx_fifo_frm_rd_pointer; i3 <= rx_fifo_rd_pointer; i3 = i3 + 1) - rx_fifo_frm[i3] = 0; - rx_fifo_frm_rd_pointer = rx_fifo_rd_pointer; - end - else if (rx_fifo_frm_rd_pointer > rx_fifo_rd_pointer) - begin - for (i3 = rx_fifo_frm_rd_pointer; i3 <= 31; i3 = i3 + 1) - rx_fifo_frm[i3] = 0; - for (i3 = 0; i3 <= rx_fifo_rd_pointer; i3 = i3 + 1) - rx_fifo_frm[i3] = 0; - rx_fifo_frm_rd_pointer = rx_fifo_rd_pointer; - end - else - begin - rx_fifo_frm = 0; - rx_fifo_frm_rd_pointer = rx_fifo_rd_pointer; - end - // check bit - if (~lsr_reg[3] && rx_fifo_frm[rx_fifo_frm_rd_pointer]) - begin - `BENCH_ERROR("Bit 3 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[3] && ~rx_fifo_frm[rx_fifo_frm_rd_pointer]) - begin - `BENCH_ERROR("Bit 3 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit3_changing - forever - begin - wait (~lsr_reg_bit3_change_allowed); - begin - @(lsr_reg[3] or lsr_reg_bit3_change_allowed); - if (~lsr_reg_bit3_change_allowed) - begin - `BENCH_ERROR("Bit 3 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 4 - Break Interrupt - initial - begin - lsr_reg_bit4_change_allowed = 0; - rx_fifo_brk_rd_pointer = 0; - @(reset_released); - #10; - fork - begin: rx_break_int_changing - forever - begin - if (~rx_fifo_brk[rx_fifo_brk_rd_pointer]) - begin - wait (rx_fifo_read); - lsr_reg_bit4_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit4_change_allowed = 0; - rx_fifo_brk_rd_pointer = rx_fifo_brk_rd_pointer + 1'b1; - // check bit - if (~lsr_reg[4] && rx_fifo_brk[rx_fifo_brk_rd_pointer]) - begin - `BENCH_ERROR("Bit 4 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[4] && ~rx_fifo_brk[rx_fifo_brk_rd_pointer]) - begin - `BENCH_ERROR("Bit 4 of LSR register not '0'!"); - -> error_detected; - end - end - else - begin - wait (lsr_reg_read); - lsr_reg_bit4_change_allowed = 1'b1; - repeat (1) @(posedge wb_clk); - #2; - lsr_reg_bit4_change_allowed = 0; - if (rx_fifo_brk_rd_pointer < rx_fifo_rd_pointer) - begin - for (i4 = rx_fifo_brk_rd_pointer; i4 <= rx_fifo_rd_pointer; i4 = i4 + 1) - rx_fifo_brk[i4] = 0; - rx_fifo_brk_rd_pointer = rx_fifo_rd_pointer; - end - else if (rx_fifo_brk_rd_pointer > rx_fifo_rd_pointer) - begin - for (i4 = rx_fifo_brk_rd_pointer; i4 <= 31; i4 = i4 + 1) - rx_fifo_brk[i4] = 0; - for (i4 = 0; i4 <= rx_fifo_rd_pointer; i4 = i4 + 1) - rx_fifo_brk[i4] = 0; - rx_fifo_brk_rd_pointer = rx_fifo_rd_pointer; - end - else - begin - rx_fifo_brk = 0; - rx_fifo_brk_rd_pointer = rx_fifo_rd_pointer; - end - // check bit - if (~lsr_reg[4] && rx_fifo_brk[rx_fifo_brk_rd_pointer]) - begin - `BENCH_ERROR("Bit 4 of LSR register not '1'!"); - -> error_detected; - end - else if (lsr_reg[4] && ~rx_fifo_brk[rx_fifo_brk_rd_pointer]) - begin - `BENCH_ERROR("Bit 4 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit4_changing - forever - begin - wait (~lsr_reg_bit4_change_allowed); - begin - @(lsr_reg[4] or lsr_reg_bit4_change_allowed); - if (~lsr_reg_bit4_change_allowed) - begin - `BENCH_ERROR("Bit 4 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 5 - Transmitter Holding Register Empty - initial - begin - lsr_reg_bit5_change_allowed = 0; - @(reset_released); - #10; - fork - begin: tx_fifo_status_changing - forever - begin - if (tx_fifo_status == 0) - begin -// @(tx_reg_written); - wait (tx_fifo_status > 0); - lsr_reg_bit5_change_allowed = 1'b1; - repeat (3) @(posedge wb_clk); - #2; - lsr_reg_bit5_change_allowed = 0; - if (lsr_reg[5]) - begin - `BENCH_ERROR("Bit 5 of LSR register not '0'!"); - -> error_detected; - end - end - else - begin - wait (tx_fifo_status == 0); - lsr_reg_bit5_change_allowed = 1'b1; - repeat (3) @(posedge wb_clk); - #2; - lsr_reg_bit5_change_allowed = 0; - if (~lsr_reg[5]) - begin - `BENCH_ERROR("Bit 5 of LSR register not '1'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit5_changing - forever - begin - wait (~lsr_reg_bit5_change_allowed); - begin - @(lsr_reg[5] or lsr_reg_bit5_change_allowed); - if (~lsr_reg_bit5_change_allowed) - begin - `BENCH_ERROR("Bit 5 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 6 - Transmitter Empty - initial - begin - lsr_reg_bit6_change_allowed = 0; - @(reset_released); - #10; - fork - begin: tx_fifo_status_and_shift_reg_changing - forever - begin - if ((tx_fifo_status == 0) && tx_shift_reg_empty) - begin -// @(tx_reg_written); - wait (tx_fifo_status > 0); - lsr_reg_bit6_change_allowed = 1'b1; - repeat (3) @(posedge wb_clk); - #2; - lsr_reg_bit6_change_allowed = 0; - if (lsr_reg[6]) - begin - `BENCH_ERROR("Bit 6 of LSR register not '0'!"); - -> error_detected; - end - end - else - begin - wait ((tx_fifo_status == 0) && tx_shift_reg_empty); - lsr_reg_bit6_change_allowed = 1'b1; - repeat (3) @(posedge wb_clk); - #2; - lsr_reg_bit6_change_allowed = 0; - if (~lsr_reg[6]) - begin - `BENCH_ERROR("Bit 6 of LSR register not '1'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit6_changing - forever - begin - wait (~lsr_reg_bit6_change_allowed); - begin - @(lsr_reg[6] or lsr_reg_bit6_change_allowed); - if (~lsr_reg_bit6_change_allowed) - begin - `BENCH_ERROR("Bit 6 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - // Bit 7 - Error in RX FIFO - initial - begin - lsr_reg_bit7_change_allowed = 0; - @(reset_released); - #10; - fork - begin: error_changing - forever - begin - if ((rx_fifo_par == 0) && (rx_fifo_frm == 0) && (rx_fifo_brk == 0)) - begin - wait (rx_parity_err || rx_framing_err || rx_framing_glitch || rx_break_int); - lsr_reg_bit7_change_allowed = 1'b1; - repeat (3) @(posedge wb_clk); - #2; - lsr_reg_bit7_change_allowed = 0; - // check bit - if (~lsr_reg[7]) - begin - `BENCH_ERROR("Bit 7 of LSR register not '1'!"); - -> error_detected; - end - end - else - begin - wait (lsr_reg_read && (rx_fifo_par == 0) && (rx_fifo_frm == 0) && (rx_fifo_brk == 0)); - lsr_reg_bit7_change_allowed = 1'b1; - repeat (2) @(posedge wb_clk); - #2; - lsr_reg_bit7_change_allowed = 0; - // check bit - if (lsr_reg[7]) - begin - `BENCH_ERROR("Bit 7 of LSR register not '0'!"); - -> error_detected; - end - end - end - end - begin: lsr_reg_bit7_changing - forever - begin - wait (~lsr_reg_bit7_change_allowed); - begin - @(lsr_reg[7] or lsr_reg_bit7_change_allowed); - if (~lsr_reg_bit7_change_allowed) - begin - `BENCH_ERROR("Bit 7 of LSR register should not change!"); - -> error_detected; - end - end - end - end - join - end - - -// UART transmitter monitor -//######################### - - // TX FIFO status - always@(tx_fifo_wr_pointer or tx_fifo_rd_pointer) - begin - if (tx_fifo_wr_pointer >= tx_fifo_rd_pointer) - tx_fifo_status = tx_fifo_wr_pointer - tx_fifo_rd_pointer; - else - tx_fifo_status = (5'h1F - tx_fifo_rd_pointer) + tx_fifo_wr_pointer; - end - // TX FIFO and TX data - initial - begin - tx_fifo_wr_pointer = 0; - tx_fifo_rd_pointer = 0; - tx_shift_reg_empty = 1; - tx_fifo_status = 0; - tx_start_bit_edge = 1; - fork - begin:write_tx_shift_reg_read_tx_fifo - forever - begin - wait ((tx_fifo_status !== 0) && tx_shift_reg_empty && tx_start_bit_edge && ~stx_pad_o); - tx_start_bit_edge = 0; - tx_shift_reg = tx_fifo[tx_fifo_rd_pointer]; - tx_shift_reg_empty = 0; - @(testbench.i_uart_device.device_received_last_bit); - repeat (16393) @(posedge wb_clk); - tx_fifo_rd_pointer = tx_fifo_rd_pointer + 1'b1; - @(posedge wb_clk); - if (tx_fifo_status == 0) - begin - `BENCH_MSG("TX FIFO is empty!"); - end - end - end - begin:write_tx_fifo - forever - begin - @(tx_reg_written); // write to FIFO - repeat (1) @(posedge wb_clk); // delay when writing into registers - if (tx_fifo_status <= 5'h0F) - begin - tx_fifo[tx_fifo_wr_pointer] = reg_dat; - tx_fifo_wr_pointer = tx_fifo_wr_pointer + 1'b1; - end - else // FIFO overflow - begin - `BENCH_WARNING("TX FIFO overflow!"); - end - end - end - begin:empty_tx_fifo - forever - begin - wait (fcr_reg[2]); - tx_fifo_wr_pointer = 0; - tx_fifo_rd_pointer = 0; - @(posedge wb_clk); - if (tx_fifo_status == 0) - begin - `BENCH_MSG("TX FIFO is empty!"); - end - end - end - begin:read_tx_shift_reg - forever - begin - @(testbench.i_uart_device.device_received_packet); - // Check data - if (tx_shift_reg != testbench.i_uart_device.rx_data) - begin - `BENCH_ERROR("TX data has ERROR!"); - -> error_detected; - end - else - `BENCH_MSG("TX data correct!"); - if (testbench.i_uart_device.rx_parity_error) - begin - `BENCH_ERROR("TX data has parity ERROR!"); - -> error_detected; - end - else - `BENCH_MSG("TX data parity correct!"); - if (testbench.i_uart_device.rx_framing_error) - begin - `BENCH_ERROR("TX data has framing ERROR!"); - -> error_detected; - end - else - `BENCH_MSG("TX data framing correct!"); - // Set TX FIFO read pointer - tx_start_bit_edge = 1; - repeat (7) @(wb_clk); - if (tx_shift_reg_empty == 0) - begin - tx_shift_reg_empty = 1'b1; - end - else - begin - `BENCH_ERROR("TX shift register empty while transmiting data!"); - -> error_detected; - end - end - end - join - end - - -// UART receiver monitor -//###################### - - // RX FIFO status - always@(rx_fifo_wr_pointer or rx_fifo_rd_pointer) - begin - if (rx_fifo_wr_pointer >= rx_fifo_rd_pointer) - rx_fifo_status = rx_fifo_wr_pointer - rx_fifo_rd_pointer; - else - rx_fifo_status = (5'h1F - rx_fifo_rd_pointer) + rx_fifo_wr_pointer; - end - // RX FIFO and RX data - initial - begin - rx_parity_err = 0; - rx_framing_err = 0; - rx_framing_glitch = 0; - rx_break_int = 0; - rx_overrun_err_occured = 0; - rx_fifo_par = 0; - rx_fifo_frm = 0; - rx_fifo_brk = 0; - rx_shift_reg_full = 0; - rx_fifo_wr_pointer = 0; - rx_fifo_rd_pointer = 0; - rx_fifo_status = 0; - fork - begin:write_rx_shift_reg - forever - begin - @(testbench.i_uart_device.device_sent_packet); - repeat (1) @(posedge wb_clk); - rx_shift_reg = testbench.i_uart_device.sent_data; - rx_parity_err = testbench.i_uart_device.tx_parity_enabled && - (testbench.i_uart_device.tx_parity_wrong || - ( // sample point is BIT_NUM * 2 - 1 => 3, 5, 7... - ((testbench.i_uart_device.tx_glitch_num == (3 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (5 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (7 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (9 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (11 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (13 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (15 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (17 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (19 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (21 * 8 * testbench.i_uart_device.T_divisor)) || - (testbench.i_uart_device.tx_glitch_num == (23 * 8 * testbench.i_uart_device.T_divisor))) && - (testbench.i_uart_device.tx_glitch_num[23:0] < ((testbench.i_uart_device.tx_length + 2'h1) * - 16 * testbench.i_uart_device.T_divisor)) - )); - rx_framing_err = testbench.i_uart_device.tx_framing_wrong; - rx_framing_glitch = (testbench.i_uart_device.tx_glitch_num == ((((testbench.i_uart_device.tx_length + 2'h2 + - testbench.i_uart_device.tx_parity_enabled) * - 2) - 1'b1) * 8 * testbench.i_uart_device.T_divisor)); - rx_break_int = testbench.i_uart_device.tx_break_enable && - (testbench.i_uart_device.tx_break_num[15:0] >= ((testbench.i_uart_device.tx_length + 2'h2 + - testbench.i_uart_device.tx_parity_enabled) * - 16 * testbench.i_uart_device.T_divisor)); - -> testbench.i_uart_device.sent_packet_received; - if (rx_fifo_status > 5'h0F) - rx_overrun_err_occured = 1'b1; - rx_shift_reg_full = 1'b1; - end - end - begin:write_rx_fifo_read_rx_shift_reg - forever - begin - wait (rx_shift_reg_full); - if (rx_fifo_status <= 5'h0F) - begin - rx_fifo_data[rx_fifo_wr_pointer] = testbench.i_uart_device.sent_data; - rx_fifo_par[rx_fifo_wr_pointer] = rx_parity_err; - rx_fifo_frm[rx_fifo_wr_pointer] = rx_framing_err || rx_framing_glitch; - rx_fifo_brk[rx_fifo_wr_pointer] = rx_break_int; - rx_fifo_wr_pointer = rx_fifo_wr_pointer + 1'b1; - end - else // FIFO overflow - begin - `BENCH_WARNING("RX FIFO overflow!"); - end - repeat (1) @(posedge wb_clk); - rx_shift_reg_full = 0; - end - end - begin:empty_rx_fifo - forever - begin - wait (fcr_reg[1]); - rx_fifo_wr_pointer = 0; - rx_fifo_rd_pointer = 0; -// rx_fifo_par = 0; -// rx_fifo_frm = 0; -// rx_fifo_brk = 0; - @(posedge wb_clk); - if (rx_fifo_status == 0) - begin - `BENCH_MSG("RX FIFO is empty!"); - end - end - end - begin:read_rx_fifo - rx_fifo_read = 0; - forever - begin - @(rx_reg_read); - if (rx_fifo_status > 0) - begin - rx_fifo_read = 1'b1; - // Check data - if (rx_fifo_data[rx_fifo_rd_pointer] != reg_dat) - begin - `BENCH_ERROR("RX data has ERROR!"); - -> error_detected; - end - else - begin - `BENCH_MSG("RX data correct!"); - end - // Set RX FIFO read pointer - repeat (1) @(posedge wb_clk); - rx_fifo_read = 0; - rx_fifo_rd_pointer = rx_fifo_rd_pointer + 1'b1; - end - else - begin - `BENCH_WARNING("Reading RX FIFO while RX FIFO is empty!"); - end - - - if ((~rx_fifo_frm[rx_fifo_rd_pointer] && lsr_reg[3]) || - (rx_fifo_frm[rx_fifo_rd_pointer] && ~lsr_reg[3])) - begin - `BENCH_ERROR("RX data has wrong framing ERROR!"); - -> error_detected; - end - else - `BENCH_MSG("RX data has correct framing error!"); - // Set RX FIFO read pointer - repeat (1) @(posedge wb_clk); - rx_fifo_read = 0; - if (rx_fifo_status > 0) - begin -// rx_fifo_par[rx_fifo_rd_pointer] = 1'b0; -// rx_fifo_frm[rx_fifo_rd_pointer] = 1'b0; -// rx_fifo_brk[rx_fifo_rd_pointer] = 1'b0; - rx_fifo_rd_pointer = rx_fifo_rd_pointer + 1'b1; - end - end - end - join - end - - -// UART interrupt monitor -//####################### - - - - -endmodule - - diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_defines.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_defines.v deleted file mode 100644 index 43c21692..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_defines.v +++ /dev/null @@ -1,89 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_testbench_defines.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_testbench_defines.v,v $ -// Revision 1.1 2004/03/27 03:55:17 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`ifdef VERBOSE - // Displaying messages to CRT and providing to "testcase" - `define SEVERE_ERROR(TEXT) $display("Time: %t (%m)", $time); $display("*E, Object %m reporting severe error:"); $display(" %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.severe_err_msg = TEXT; -> testcase.severe_err_event; @(testcase.testbench_log_written) - `define UTILS_WARNING(TEXT) $display("Time: %t (%m)", $time); $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define UTILS_ERROR(TEXT) $display("Time: %t (%m)", $time); $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define BENCH_WARNING(TEXT) $display("Time: %t (%m)", $time); $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define BENCH_ERROR(TEXT) $display("Time: %t (%m)", $time); $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define TC_ERROR(TEXT) $display("Time: %t (%m)", $time); $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define DEVICE_WARNING(TEXT) $display("Time: %t (%m)", $time); $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define DEVICE_ERROR(TEXT) $display("Time: %t (%m)", $time); $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - // Displaying messages to CRT - `define UTILS_MSG(TEXT) $display("Time %t (%m)", $time); $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define UTILS_VAL1(TEXT, VAL) $display("Time %t (%m)", $time); $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) - `define BENCH_MSG(TEXT) $display("Time %t (%m)", $time); $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define BENCH_VAL1(TEXT, VAL) $display("Time %t (%m)", $time); $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) - `define TC_MSG(TEXT) $display("Time %t (%m)", $time); $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define TC_VAL1(TEXT, VAL) $display("Time %t (%m)", $time); $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) -`else - // Displaying messages to CRT and providing to "testcase" - `define SEVERE_ERROR(TEXT) $display("*E, Object %m reporting severe error:"); $display(" %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.severe_err_msg = TEXT; -> testcase.severe_err_event; @(testcase.testbench_log_written) - `define UTILS_WARNING(TEXT) $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define UTILS_ERROR(TEXT) $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define BENCH_WARNING(TEXT) $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define BENCH_ERROR(TEXT) $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define TC_ERROR(TEXT) $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - `define DEVICE_WARNING(TEXT) $display("*W, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.wrn_event; @(testcase.testbench_log_written) - `define DEVICE_ERROR(TEXT) $display("*E, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.err_event; @(testcase.testbench_log_written) - // Displaying messages to CRT - `define UTILS_MSG(TEXT) $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define UTILS_VAL1(TEXT, VAL) $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) - `define BENCH_MSG(TEXT) $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define BENCH_VAL1(TEXT, VAL) $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) - `define TC_MSG(TEXT) $display("*N, %0s", TEXT); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; -> testcase.msg_event; @(testcase.testbench_log_written) - `define TC_VAL1(TEXT, VAL) $display("*N, %0s %0h.", TEXT, VAL); $sformat(testcase.tim, "Time: %t (%m)", $time); testcase.msg = TEXT; testcase.val = VAL; -> testcase.val_event; @(testcase.testbench_log_written) -`endif - -// Testcase end -`define PROMPT #1000000; log.end_log; $finish diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_utilities.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_utilities.v deleted file mode 100644 index 88eaac27..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_testbench_utilities.v +++ /dev/null @@ -1,323 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_testbench_utilities.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_testbench_utilities.v,v $ -// Revision 1.1 2004/03/27 03:55:17 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_defines.v" -`include "uart_testbench_defines.v" -`include "wb_model_defines.v" -`include "timescale.v" - -module testbench_utilities; - -// Basic system TASKs -//################### - - // DO_RESET - task do_reset; - begin - testbench.wb_reset = 1'b1; - #1; - `UTILS_MSG("RESET signal asynchronously set."); - end - endtask // do_reset - - // RELEASE_RESET - task release_reset; - begin - @(posedge testbench.wb_clk); - #1; - testbench.wb_reset = 1'b0; - `UTILS_MSG("RESET signal released synchronously to WB clk."); - end - endtask // release_reset - - // DISABLE_CLK_GENERATORS - task disable_clk_generators; - input wb_clk_disable; - input rx_clk_disable; - input tx_clk_disable; - input tx_clk_divided_disable; - begin - `UTILS_MSG("Following clocks are DISABLED:"); - if (wb_clk_disable) - begin - testbench.wb_clk_en = 1'b0; - `UTILS_MSG("- WB_clk"); - end - if (rx_clk_disable) - begin - testbench.i_uart_device.rx_clk_en = 1'b0; - `UTILS_MSG("- RX_clk"); - end - if (tx_clk_disable) - begin - testbench.i_uart_device.tx_clk_en = 1'b0; - `UTILS_MSG("- TX_clk"); - end - if (tx_clk_divided_disable) - begin - testbench.i_uart_device.tx_clk_divided_en = 1'b0; - `UTILS_MSG("- TX_clk_divided"); - end - if (~wb_clk_disable && ~rx_clk_disable && ~tx_clk_disable && ~tx_clk_divided_disable) - begin - `UTILS_MSG("- NO clocks DISABLED"); - end - end - endtask // disable_clk_generators - - // ENABLE_CLK_GENERATORS - task enable_clk_generators; - input wb_clk_enable; - input rx_clk_enable; - input tx_clk_enable; - input tx_clk_divided_enable; - begin - `UTILS_MSG("Following clocks are ENABLED:"); - if (wb_clk_enable) - begin - testbench.wb_clk_en = 1'b1; - `UTILS_MSG("- WB_clk"); - end - if (rx_clk_enable) - begin - testbench.i_uart_device.rx_clk_en = 1'b1; - `UTILS_MSG("- RX_clk"); - end - if (tx_clk_enable) - begin - testbench.i_uart_device.tx_clk_en = 1'b1; - `UTILS_MSG("- TX_clk"); - end - if (tx_clk_divided_enable) - begin - testbench.i_uart_device.tx_clk_divided_en = 1'b1; - `UTILS_MSG("- TX_clk_divided"); - end - if (~wb_clk_enable && ~rx_clk_enable && ~tx_clk_enable && ~tx_clk_divided_enable) - begin - `UTILS_MSG("- NO clocks ENABLED"); - end - end - endtask // enable_clk_generators - - // SET_DEVICE_TX_RX_CLK_PERIOD - task set_device_tx_rx_clk_period; - input [31:0] clk_period; - begin - testbench.i_uart_device.T_clk_period = clk_period; - `UTILS_VAL1("UART DEVICE TX/RX clock period:", clk_period); - end - endtask // set_device_tx_rx_clk_period - - // SET_DEVICE_TX_CLK_DELAY - task set_device_tx_clk_delay; - input [31:0] tx_clk_delay; - begin - testbench.i_uart_device.T_clk_delay = tx_clk_delay; - `UTILS_VAL1("UART DEVICE TX clock delay:", tx_clk_delay); - end - endtask // set_device_tx_clk_delay - - // SET_DEVICE_TX_RX_CLK_DIVISOR - task set_device_tx_rx_clk_divisor; - input [31:0] clk_divisor; - begin - testbench.i_uart_device.T_divisor = clk_divisor; - `UTILS_VAL1("UART DEVICE TX/RX clock divisor:", clk_divisor); - end - endtask // set_device_tx_rx_clk_divisor - - // SET_WB_CLK_PERIOD - task set_wb_clock_period; - input [31:0] clk_period; - begin - testbench.T_wb_clk_period = clk_period; - testbench.i_uart_device.T_clk_period = clk_period; - `UTILS_VAL1("WB & UART DEVICE TX/RX clock period:", clk_period); - end - endtask // set_wb_clock_period - - // WB_CLK_FOLLOWS_DEVICE_RX_CLK - task wb_clk_follows_device_rx_clk; - input [31:0] time_delay_i; - integer time_delay; - begin - time_delay = time_delay_i; - @(posedge testbench.wb_clk); - testbench.wb_clk_en = 1'b0; - @(posedge testbench.i_uart_device.rx_clk); - #time_delay testbench.wb_clk = 1'b1; - testbench.wb_clk_en = 1'b1; - `UTILS_VAL1("WB followed UART DEVICE rising edge RX clock for time delay:", time_delay); - end - endtask // wb_clk_follows_device_rx_clk - - // DEVICE_RX_CLK_FOLLOWS_WB_CLK - task device_rx_clk_follows_wb_clk; - input [31:0] time_delay_i; - integer time_delay; - begin - time_delay = time_delay_i; - @(posedge testbench.i_uart_device.rx_clk); - testbench.i_uart_device.rx_clk_en = 1'b0; - @(posedge testbench.wb_clk); - #time_delay testbench.i_uart_device.rx_clk = 1'b1; - testbench.i_uart_device.rx_clk_en = 1'b1; - `UTILS_VAL1("UART DEVICE RX followed WB rising edge clock for time delay:", time_delay); - end - endtask // device_rx_clk_follows_wb_clk - -// Utility tasks -//############## - - // WAIT_FOR_NUM_OF_WB_CLK - task wait_for_num_of_wb_clk; - input [31:0] num_of_clk; - integer count; - begin - count = 0; - `UTILS_VAL1("Waiting for following number of WB CLK periods:", num_of_clk); - while (count < num_of_clk) - begin - @(testbench.wb_clk); - count = count + 1'b1; - #1; - end - `UTILS_MSG("Waiting expired."); - end - endtask // wait_for_num_of_wb_clk - - // WAIT_RX_FIFO_FULL_REGARDLESS_INT - task wait_rx_fifo_full_regardless_int; - integer count; - begin - count = 0; - `UTILS_MSG("Waiting for RX FIFO to get full regardless of interrupt."); - fork - begin:fifo_full_loop - while (testbench.i_uart_top.regs.receiver.fifo_rx.count < - testbench.i_uart_top.regs.receiver.fifo_rx.fifo_depth) // While RX fifo not full - begin - @(testbench.wb_clk); - end - disable counter; - `UTILS_MSG("RX FIFO got full."); - end - begin:counter - while (count < testbench.max_wait_cnt) - begin - @(testbench.wb_clk); - count = count + 1'b1; - #1; - end - disable fifo_full_loop; - `UTILS_ERROR("WAIT counter exceeded max value."); - end - join - end - endtask // wait_rx_fifo_full_regardless_int - - // WAIT_RX_FIFO_FULL_UNLESS_INT - task wait_rx_fifo_full_unless_int; - integer count; - begin - count = 0; - `UTILS_MSG("Waiting for RX FIFO to get full unless interrupt occures before."); - fork - begin:fifo_full_loop - while (testbench.i_uart_top.regs.receiver.fifo_rx.count < - testbench.i_uart_top.regs.receiver.fifo_rx.fifo_depth) // While RX fifo not full - begin - @(testbench.wb_clk); - end - disable counter; - disable int_loop; - `UTILS_MSG("RX FIFO got full."); - end - begin:int_loop - if (testbench.ier_reg[3:0] == 4'h0) - begin - `UTILS_MSG("All interrupts are disabled."); - end - else - begin - `UTILS_MSG("Interrupts are enabled in IE Register."); - `UTILS_VAL1("IER:", testbench.ier_reg); - @(testbench.int_aserted); - `UTILS_MSG("Interrupt is asserted. The pending interrupt of highest priority is in II Register."); - `UTILS_VAL1("IIR:", testbench.iir_reg); - disable counter; - disable fifo_full_loop; - end - end - begin:counter - while (count < testbench.max_wait_cnt) - begin - @(testbench.wb_clk); - count = count + 1'b1; - #1; - end - disable int_loop; - disable fifo_full_loop; - `UTILS_ERROR("WAIT counter exceeded max value."); - end - join - end - endtask // wait_rx_fifo_full_unless_int - - -// UART Initialize TASKs -//###################### - - // POSSIBLE INITIALIZE TASKS - NOW FEW STEPS ARE MADE IN EACH testcase!!! - - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_wb_utilities.v b/usrp2/fpga/opencores/uart16550/bench/verilog/uart_wb_utilities.v deleted file mode 100644 index 32b6bfce..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/uart_wb_utilities.v +++ /dev/null @@ -1,362 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_wb_utilities.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - tadej@opencores.org (Tadej Markovic) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_wb_utilities.v,v $ -// Revision 1.1 2004/03/27 03:55:17 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`include "uart_defines.v" -`include "uart_testbench_defines.v" -`include "wb_model_defines.v" -`include "timescale.v" - -module uart_wb_utilities; - -// Single read/write TASKs -//######################## - - // SINGLE_READ - task single_read; - input [`UART_ADDR_WIDTH-1:0] read_adr_i; - reg [3:0] read_sel_i; - reg `WBM_MODEL_READ_IN_TYPE read_stim; - reg `WBM_MODEL_READ_OUT_TYPE read_result; - integer master_waits; - integer slave_waits; - integer num_of_reads; - reg fast_b2b; - begin - read_sel_i = 4'hF; - testbench.i_wb_master_model.next_read_adr = read_adr_i; - testbench.i_wb_master_model.next_read_sel = read_sel_i; - testbench.i_wb_master_model.next_read_cti = 3'b000; // Clasic WB - testbench.i_wb_master_model.next_read_bte = $random; // Don't care hwen Clasic WB - master_waits = {$random} % 13; - slave_waits = 4; - num_of_reads = 1; - fast_b2b = 1'b0; - read_stim`WBM_MODEL_READ_WAITS = master_waits; - read_stim`WBM_MODEL_READ_ALLOWED_SLAVE_WAITS = slave_waits; - read_stim`WBM_MODEL_READ_LAST = (num_of_reads == 1); - read_stim`WBM_MODEL_READ_FAST_B2B = fast_b2b; - // Start read - testbench.i_wb_master_model.start_read(read_stim, read_result); - // ACK response - if (read_result`WBM_MODEL_READ_SLAVE_ACK !== 1'b1) - begin - `TC_ERROR("Wishbone master model did not receive expected transfer termination from the design."); - end - // - if (read_result`WBM_MODEL_READ_STIM_ERR !== 1'b0) - begin - `TC_ERROR("No reads done since design's wishbone slave interface responded with an error."); - end - // - if (read_result`WBM_MODEL_READ_DESIGN_ERR !== 1'b0) - begin - `TC_ERROR("Wishbone master model detected a design response error during single read access."); - end - end - endtask // single_read - - // SINGLE_WRITE - task single_write; - input [`UART_ADDR_WIDTH-1:0] write_adr_i; - input [`UART_DATA_WIDTH-1:0] write_dat_i; - reg [3:0] write_sel_i; - reg `WBM_MODEL_WRITE_IN_TYPE write_stim; - reg `WBM_MODEL_WRITE_OUT_TYPE write_result; - integer master_waits; - integer slave_waits; - integer num_of_writes; - reg fast_b2b; - begin - write_sel_i = 4'hF; - testbench.i_wb_master_model.next_write_adr = write_adr_i; - testbench.i_wb_master_model.next_write_sel = write_sel_i; - testbench.i_wb_master_model.next_write_dat = write_dat_i; - testbench.i_wb_master_model.next_write_cti = 3'b000; // Clasic WB - testbench.i_wb_master_model.next_write_bte = $random; // Don't care hwen Clasic WB - master_waits = {$random} % 13; - slave_waits = 4; - num_of_writes = 1; - fast_b2b = 1'b0; - write_stim`WBM_MODEL_WRITE_WAITS = master_waits; - write_stim`WBM_MODEL_WRITE_ALLOWED_SLAVE_WAITS = slave_waits; - write_stim`WBM_MODEL_WRITE_LAST = (num_of_writes == 1); - write_stim`WBM_MODEL_WRITE_FAST_B2B = fast_b2b; - // Start write - testbench.i_wb_master_model.start_write(write_stim, write_result); - // ACK response - if (write_result`WBM_MODEL_WRITE_SLAVE_ACK !== 1'b1) - begin - `TC_ERROR("Wishbone master model did not receive expected transfer termination from the design."); - end - // - if (write_result`WBM_MODEL_WRITE_STIM_ERR !== 1'b0) - begin - `TC_ERROR("No writes done since wishbone master model reported an error."); - end - // - if (write_result`WBM_MODEL_WRITE_DESIGN_ERR !== 1'b0) - begin - `TC_ERROR("Wishbone master model detected a design response error during single write access."); - end - end - endtask // single_write - -// Char read/write TASKs -//###################### - - // READ_CHAR - task read_char; - begin - if (testbench.lcr_reg[7] === 1'b1) // dlab == 1 - begin - `UTILS_ERROR("READING of CHAR from RB Register NOT possible, since DLAB in LC Register is set."); - end - else - begin - `UTILS_MSG("READING of CHAR from UART's RB Register."); - single_read(`UART_REG_RB); - `UTILS_VAL1("Read RBR =", testbench.i_wb_master_model.read_dat); - end - end - endtask // read_char - - // WRITE_CHAR - task write_char; - input [7:0] char_i; - begin - if (testbench.lcr_reg[7] === 1'b1) // dlab == 1 - begin - `UTILS_ERROR("WRITING CHAR to TR Register NOT possible, since DLAB in LC Register is set."); - end - else - begin - `UTILS_MSG("WRITING CHAR to UART's TR Register."); - single_write(`UART_REG_TR, char_i); - `UTILS_VAL1("Write TRR =", testbench.i_wb_master_model.write_dat); - end - end - endtask // write_char - -// Register read/write TASKs -//########################## - - // READ_IER - adr 1 - task read_ier; - begin - if (testbench.lcr_reg[7] === 1'b1) // dlab == 1 - begin - `UTILS_ERROR("READING of IE Register NOT possible, since DLAB in LC Register is set."); - end - else - begin - `UTILS_MSG("READING UART's IE Register."); - single_read(`UART_REG_IE); - `UTILS_VAL1("Read IER =", testbench.i_wb_master_model.read_dat); - end - end - endtask // read_ier - - // WRITE_IER - adr 1 - task write_ier; - input [7:0] data_i; - begin - if (testbench.lcr_reg[7] === 1'b1) // dlab == 1 - begin - `UTILS_ERROR("WRITING to IE Register NOT possible, since DLAB in LC Register is set."); - end - else - begin - `UTILS_MSG("WRITING UART's IE Register."); - single_write(`UART_REG_IE, data_i); - `UTILS_VAL1("Write IER =", testbench.i_wb_master_model.write_dat); - end - end - endtask // write_ier - - // READ_IIR - adr 2 - task read_iir; - begin - `UTILS_MSG("READING UART's II Register."); - single_read(`UART_REG_II); - `UTILS_VAL1("Read IIR =", testbench.i_wb_master_model.read_dat); - end - endtask // read_iir - - // WRITE_FCR - adr 2 - task write_fcr; - input [7:0] data_i; - begin - `UTILS_MSG("WRITING UART's FC Register."); - single_write(`UART_REG_FC, data_i); - `UTILS_VAL1("Write FCR =", testbench.i_wb_master_model.write_dat); - end - endtask // write_fcr - - // READ_LCR - adr 3 - task read_lcr; - begin - `UTILS_MSG("READING UART's LC Register."); - single_read(`UART_REG_LC); - `UTILS_VAL1("Read LCR =", testbench.i_wb_master_model.read_dat); - end - endtask // read_lcr - - // WRITE_LCR - adr 3 - task write_lcr; - input [7:0] data_i; - begin - `UTILS_MSG("WRITING UART's LC Register."); - single_write(`UART_REG_LC, data_i); - `UTILS_VAL1("Write LCR =", testbench.i_wb_master_model.write_dat); - end - endtask // write_lcr - - // WRITE_MCR - adr 4 - task write_mcr; - input [7:0] data_i; - begin - `UTILS_MSG("WRITING UART's MC Register."); - single_write(`UART_REG_MC, data_i); - `UTILS_VAL1("Write MCR =", testbench.i_wb_master_model.write_dat); - end - endtask // write_mcr - - // READ_LSR - adr 5 - task read_lsr; - begin - `UTILS_MSG("READING UART's LS Register."); - single_read(`UART_REG_LS); - `UTILS_VAL1("Read LSR =", testbench.i_wb_master_model.read_dat); - end - endtask // read_lsr - - // READ_MSR - adr 6 - task read_msr; - begin - `UTILS_MSG("READING UART's MS Register."); - single_read(`UART_REG_MS); - `UTILS_VAL1("Read MSR =", testbench.i_wb_master_model.read_dat); - end - endtask // read_msr - - // READ_DLR - adr 0, 1 - task read_dlr; - begin - if (testbench.lcr_reg[7] === 1'b0) // dlab == 0 - begin - // Setting DLAB - `UTILS_MSG("DLAB in LC Register is going to be 1."); - `UTILS_VAL1("Current LCR =", testbench.lcr_reg); - write_lcr(testbench.lcr_reg | 8'h80); - // Reading DL Register - `UTILS_MSG("READING UART's DL Register [15:8]."); - single_read(`UART_REG_DL2); - `UTILS_VAL1("Read DLR [15:8] =", testbench.i_wb_master_model.read_dat); - `UTILS_MSG("READING UART's DL Register [ 7:0]."); - single_read(`UART_REG_DL1); - `UTILS_VAL1("Read DLR [ 7:0] =", testbench.i_wb_master_model.read_dat); - // Resetting DLAB - `UTILS_MSG("DLAB in LC Register is going to be 0."); - write_lcr(testbench.lcr_reg & 8'h7F); - end - else - begin - `UTILS_MSG("DLAB in LC Register is already 1."); - `UTILS_VAL1("Current LCR =", testbench.lcr_reg); - // Reading DL Register - `UTILS_MSG("READING UART's DL Register [15:8]."); - single_read(`UART_REG_DL2); - `UTILS_VAL1("Read DLR [15:8] =", testbench.i_wb_master_model.read_dat); - `UTILS_MSG("READING UART's DL Register [ 7:0]."); - single_read(`UART_REG_DL1); - `UTILS_VAL1("Read DLR [ 7:0] =", testbench.i_wb_master_model.read_dat); - end - end - endtask // read_dlr - - // WRITE_DLR - adr 0, 1 - task write_dlr; - input [15:0] data_i; - begin - if (testbench.lcr_reg[7] === 1'b0) // dlab == 0 - begin - // Setting DLAB - `UTILS_MSG("DLAB in LC Register is going to be 1."); - `UTILS_VAL1("Current LCR =", testbench.lcr_reg); - write_lcr(testbench.lcr_reg | 8'h80); - // Writing DL Register - `UTILS_MSG("WRITING UART's DL Register [15:8]."); - single_write(`UART_REG_DL2, data_i[15:8]); - `UTILS_VAL1("Write DLR [15:8] =", testbench.i_wb_master_model.write_dat); - `UTILS_MSG("WRITING UART's DL Register [ 7:0]."); - single_write(`UART_REG_DL1, data_i[ 7:0]); - `UTILS_VAL1("Write DLR [ 7:0] =", testbench.i_wb_master_model.write_dat); - // Resetting DLAB - `UTILS_MSG("DLAB in LC Register is going to be 0."); - write_lcr(testbench.lcr_reg & 8'h7F); - end - else - begin - `UTILS_MSG("DLAB in LC Register is already 1."); - `UTILS_VAL1("Current LCR =", testbench.lcr_reg); - // Writing DL Register - `UTILS_MSG("WRITING UART's DL Register [15:8]."); - single_write(`UART_REG_DL2, data_i[15:8]); - `UTILS_VAL1("Write DLR [15:8] =", testbench.i_wb_master_model.write_dat); - `UTILS_MSG("WRITING UART's DL Register [ 7:0]."); - single_write(`UART_REG_DL1, data_i[ 7:0]); - `UTILS_VAL1("Write DLR [ 7:0] =", testbench.i_wb_master_model.write_dat); - end - end - endtask // write_dlr - - -endmodule \ No newline at end of file diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/vapi.log b/usrp2/fpga/opencores/uart16550/bench/verilog/vapi.log deleted file mode 100644 index ebbfae16..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/vapi.log +++ /dev/null @@ -1,117 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// vapi.log //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Device interface for testing purposes //// -//// //// -//// Known problems (limits): //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created and updated: (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: vapi.log,v $ -// Revision 1.1 2002/01/25 08:54:56 mohor -// UART PHY added. Files are fully operational, working on HW. -// -// -// -// -// - - -001000020 // devisor 0x32 -002000300 // rx lcr 8n1 - -// Receive -10000034a // Receive J -100000361 // Receive a -100000363 // Receive c -10000030a // Receive \n - -// Send -000000371 // Transmit q - switching to interrupt mode -100000353 // Receive S -100000377 // Receive w -10000030a // Receive \n -006000020 // wait 32 tx cycles -000000331 // Transmit 1 -000000332 // Transmit 2 -000000333 // Transmit 3 -000000334 // Transmit 4 -000000335 // Transmit 5 -000000336 // Transmit 6 -000000337 // Transmit 7 -000000338 // Transmit 8 -000000339 // Transmit 9 -000000361 // Transmit a -000000362 // Transmit b -000000363 // Transmit c -000000364 // Transmit d -000000365 // Transmit e -000000366 // Transmit f -006000040 // wait 64 tx cycles -100000331 // Receive 1 -100000332 // Receive 2 -100000333 // Receive 3 -100000334 // Receive 4 -100000335 // Receive 5 -100000336 // Receive 6 -100000337 // Receive 7 -100000338 // Receive 8 -100000339 // Receive 9 -100000341 // Receive A -100000342 // Receive B -100000343 // Receive C -100000344 // Receive D -100000345 // Receive E -100000346 // Receive F - -200000000 // Exit simulation diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/wb_mast.v b/usrp2/fpga/opencores/uart16550/bench/verilog/wb_mast.v deleted file mode 100644 index df257076..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/wb_mast.v +++ /dev/null @@ -1,640 +0,0 @@ -///////////////////////////////////////////////////////////////////// -//// //// -//// WISHBONE Master Model //// -//// //// -//// //// -//// Author: Rudolf Usselmann //// -//// rudi@asics.ws //// -//// //// -///////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2001 Rudolf Usselmann //// -//// rudi@asics.ws //// -//// //// -//// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// -//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// -//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// -//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// -//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// -//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// -//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// -//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// -//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// -//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// -//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// -//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// -//// POSSIBILITY OF SUCH DAMAGE. //// -//// //// -///////////////////////////////////////////////////////////////////// - -// CVS Log -// -// $Id: wb_mast.v,v 1.1 2001/12/03 21:44:23 gorban Exp $ -// -// $Date: 2001/12/03 21:44:23 $ -// $Revision: 1.1 $ -// $Author: gorban $ -// $Locker: $ -// $State: Exp $ -// -// Change History: -// $Log: wb_mast.v,v $ -// Revision 1.1 2001/12/03 21:44:23 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// -// -// -// -// - -/* - -task mem_fill; - -- Fills local burst read (rd_buf[]) and write(wr_buf[]) buffers with random values. - - -task wb_wr1( 32 bit address, 4 bit byte select, 32 bit write data); - -- Performs a single WISHBONE write - - -task wb_wr4( 32 bit address, 4 bit byte select, integer delay, - 32 bit data 1, 32 bit data 2, 32 bit data 3, 32 bit data 4); - -- Performs 4 consecutive WISHBONE writes -- Strobe is deasserted between writes for 'delay' number of cycles - (This simulates wait state insertion ...) - - -task wb_wr_mult( 32 bit address, 4 bit byte select, integer delay, - integer count); - -- Simular to wb_wr4, except it pwrforms "count" number of write cycles. - The data is taken from the internal wr_bub[] memory. -- Strobe is deasserted between writes for 'delay' number of cycles - (This simulates wait state insertion ...) - - -task wb_rmw( 32 bit address, 4 bit byte select, integer delay, - integer rcount, integer wcount); - -- This task performs "rcount" read cycles, followed by wcount write cycles. -- read data is placed in to the internal rd_buf[] memory, write data is - taken from the internal wr_buf[] memory. -- Strobe is deasserted between writes for 'delay' number of cycles - (This simulates wait state insertion ...) - - -task wb_rd1( 32 bit address, 4 bit byte select, 32 bit read data); - -- Performs a single WISHBONE write - - -task wb_rd4( 32 bit address, 4 bit byte select, integer delay, - 32 bit data 1, 32 bit data 2, 32 bit data 3, 32 bit data 4); - -- Performs 4 consecutive WISHBONE reads -- Strobe is deasserted between reads for 'delay' number of cycles - (This simulates wait state insertion ...) - - -task wb_rd_mult( 32 bit address, 4 bit byte select, integer delay, - integer count); - -- Simular to wb_rd4, except it pwrforms "count" number of read cycles. - The data is read in to the internal rd_buf[] memory. -- Strobe is deasserted between reads for 'delay' number of cycles - (This simulates wait state insertion ...) - - -*/ - - -//`include "wb_model_defines.v" - -module wb_mast(clk, rst, adr, din, dout, cyc, stb, sel, we, ack, err, rty); - -input clk, rst; -output [31:0] adr; -input [31:0] din; -output [31:0] dout; -output cyc, stb; -output [3:0] sel; -output we; -input ack, err, rty; - -//////////////////////////////////////////////////////////////////// -// -// Local Wires -// - -parameter mem_size = 4096; - -reg [31:0] adr; -reg [31:0] dout; -reg cyc, stb; -reg [3:0] sel; -reg we; - -reg [31:0] rd_mem[mem_size:0]; -reg [31:0] wr_mem[mem_size:0]; -integer rd_cnt; -integer wr_cnt; - -//////////////////////////////////////////////////////////////////// -// -// Memory Logic -// - -initial - begin - adr = 32'hxxxx_xxxx; - dout = 32'hxxxx_xxxx; - cyc = 0; - stb = 0; - sel = 4'hx; - we = 1'hx; - rd_cnt = 0; - wr_cnt = 0; - #1; - $display("\nINFO: WISHBONE MASTER MODEL INSTANTIATED (%m)\n"); - end - - - -task mem_fill; - -integer n; -begin -rd_cnt = 0; -wr_cnt = 0; -for(n=0;n error_event ; - end - - if (wb_rst_i === `WB_MODEL_RST_ACTIVE) - begin - reset_done = 1'b0 ; - end - end -end -begin - forever - begin - @(wb_rst_i) ; - if (wb_rst_i === `WB_MODEL_RST_ACTIVE) - begin - @(posedge wb_clk_i or wb_rst_i) ; - if (wb_rst_i !== `WB_MODEL_RST_ACTIVE) - begin - error_message = "Reset de-activated prior to at least one positive clock transition" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - else - begin - reset_done = 1'b1 ; - end - end - end -end -join - -always@(wb_rst_i) -begin - if (wb_rst_i === `WB_MODEL_RST_ACTIVE) - wbm_cyc_o <= 1'b0 ; -end - -reg access_in_progress ; -initial access_in_progress = 1'b0 ; - -task start_write ; - input `WBM_MODEL_WRITE_IN_TYPE write_stim_i ; - output `WBM_MODEL_WRITE_OUT_TYPE write_res_o ; - reg [31: 0] num_of_slave_waits ; - reg end_access ; -begin:main - - write_res_o = 'h0 ; - - if (access_in_progress === 1'b1) - begin - error_message = "Task called when some other access was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - write_res_o`WBM_MODEL_WRITE_STIM_ERR = 1'b1 ; - disable main ; - end - - if (reset_done !== 1'b1) - begin - error_message = "Task called before reset was applied to the design" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - write_res_o`WBM_MODEL_WRITE_STIM_ERR = 1'b1 ; - disable main ; - end - - access_in_progress = 1'b1 ; - end_access = write_stim_i`WBM_MODEL_WRITE_LAST ; - - if (write_stim_i`WBM_MODEL_WRITE_FAST_B2B !== 1'b1) - @(posedge wb_clk_i) ; - - wbm_cyc_o <= #(Tperiod - Tsetup) 1'b1 ; - - insert_waits(write_stim_i`WBM_MODEL_WRITE_WAITS, 'h0, num_of_slave_waits) ; - - if ((num_of_slave_waits ^ num_of_slave_waits) === 'h0) - begin - error_message = "Slave responded to initial write access" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - num_of_slave_waits = 0 ; - - wbm_stb_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_we_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_adr_o <= #(Tperiod - Tsetup) next_write_adr ; - wbm_dat_o <= #(Tperiod - Tsetup) get_write_dat(next_write_dat, next_write_sel) ; - wbm_sel_o <= #(Tperiod - Tsetup) next_write_sel ; - wbm_cti_o <= #(Tperiod - Tsetup) next_write_cti ; - wbm_bte_o <= #(Tperiod - Tsetup) next_write_bte ; - - -> write_accepted ; - - @(posedge wb_clk_i) ; - - while((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0) & (num_of_slave_waits < write_stim_i`WBM_MODEL_WRITE_ALLOWED_SLAVE_WAITS)) - begin - num_of_slave_waits = num_of_slave_waits + 1'b1 ; - write_adr = wbm_adr_o ; - write_sel = wbm_sel_o ; - write_dat = wbm_dat_o ; - -> write_request ; - @(posedge wb_clk_i) ; - end - - if ((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0)) - begin - error_message = "Cycle terminated because allowed number of slave wait states constraint violation" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - write_res_o`WBM_MODEL_WRITE_DESIGN_ERR = 1'b1 ; - end - else if ((wbm_ack_i + wbm_err_i + wbm_rty_i) !== 'h1) - begin - error_message = "Cycle terminated because invalid slave response was received" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - write_res_o`WBM_MODEL_WRITE_DESIGN_ERR = 1'b1 ; - end - else - begin - write_res_o`WBM_MODEL_WRITE_SLAVE_WAITS = num_of_slave_waits ; - write_res_o`WBM_MODEL_WRITE_SLAVE_ACK = wbm_ack_i ; - write_res_o`WBM_MODEL_WRITE_SLAVE_ERR = wbm_err_i ; - write_res_o`WBM_MODEL_WRITE_SLAVE_RTY = wbm_rty_i ; - - if (wbm_ack_i === 1'b1) - begin - write_adr = wbm_adr_o ; - write_dat = wbm_dat_o ; - write_sel = wbm_sel_o ; - -> write_transfer ; - end - end - - if (end_access) - begin - wbm_cyc_o <= #(Thold) 1'b0 ; - wbm_stb_o <= #(Thold) 1'bx ; - wbm_we_o <= #(Thold) 1'bx ; - wbm_sel_o <= #(Thold) 'hx ; - wbm_adr_o <= #(Thold) 'hx ; - wbm_dat_o <= #(Thold) 'hx ; - wbm_cti_o <= #(Thold) 'hx ; - wbm_bte_o <= #(Thold) 'hx ; - access_in_progress = 1'b0 ; - end -end -endtask // start_write - -task subsequent_write ; - input `WBM_MODEL_WRITE_IN_TYPE write_stim_i ; - output `WBM_MODEL_WRITE_OUT_TYPE write_res_o ; - reg [31: 0] num_of_slave_waits ; - reg end_access ; -begin:main - - write_res_o = 'h0 ; - - if (access_in_progress !== 1'b1) - begin - error_message = "Task called when no access was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - write_res_o`WBM_MODEL_WRITE_STIM_ERR = 1'b1 ; - disable main ; - end - - end_access = write_stim_i`WBM_MODEL_WRITE_LAST ; - - insert_waits(write_stim_i`WBM_MODEL_WRITE_WAITS, 'h0, num_of_slave_waits) ; - - if ((num_of_slave_waits ^ num_of_slave_waits) !== 'h0) - begin - num_of_slave_waits = write_stim_i`WBM_MODEL_WRITE_WAITS ; - end - - wbm_stb_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_we_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_adr_o <= #(Tperiod - Tsetup) next_write_adr ; - wbm_dat_o <= #(Tperiod - Tsetup) get_write_dat(next_write_dat, next_write_sel) ; - wbm_sel_o <= #(Tperiod - Tsetup) next_write_sel ; - wbm_cti_o <= #(Tperiod - Tsetup) next_write_cti ; - wbm_bte_o <= #(Tperiod - Tsetup) next_write_bte ; - - -> write_accepted ; - - @(posedge wb_clk_i) ; - - while((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0) & (num_of_slave_waits < write_stim_i`WBM_MODEL_WRITE_ALLOWED_SLAVE_WAITS)) - begin - num_of_slave_waits = num_of_slave_waits + 1'b1 ; - write_adr = wbm_adr_o ; - write_sel = wbm_sel_o ; - write_dat = wbm_dat_o ; - -> write_request ; - @(posedge wb_clk_i) ; - end - - if ((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0)) - begin - error_message = "Cycle terminated because allowed number of slave wait states constraint violation" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - write_res_o`WBM_MODEL_WRITE_DESIGN_ERR = 1'b1 ; - end - else if ((wbm_ack_i + wbm_err_i + wbm_rty_i) !== 'h1) - begin - error_message = "Cycle terminated because invalid slave response was received" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - write_res_o`WBM_MODEL_WRITE_DESIGN_ERR = 1'b1 ; - end - else - begin - write_res_o`WBM_MODEL_WRITE_SLAVE_WAITS = num_of_slave_waits ; - write_res_o`WBM_MODEL_WRITE_SLAVE_ACK = wbm_ack_i ; - write_res_o`WBM_MODEL_WRITE_SLAVE_ERR = wbm_err_i ; - write_res_o`WBM_MODEL_WRITE_SLAVE_RTY = wbm_rty_i ; - - if (wbm_ack_i === 1'b1) - begin - write_adr = wbm_adr_o ; - write_dat = wbm_dat_o ; - write_sel = wbm_sel_o ; - -> write_transfer ; - end - end - - if (end_access) - begin - wbm_cyc_o <= #(Thold) 1'b0 ; - wbm_stb_o <= #(Thold) 1'bx ; - wbm_we_o <= #(Thold) 1'bx ; - wbm_sel_o <= #(Thold) 'hx ; - wbm_adr_o <= #(Thold) 'hx ; - wbm_dat_o <= #(Thold) 'hx ; - wbm_cti_o <= #(Thold) 'hx ; - wbm_bte_o <= #(Thold) 'hx ; - access_in_progress = 1'b0 ; - end -end -endtask // subsequent_write - -task start_read ; - input `WBM_MODEL_READ_IN_TYPE read_stim_i ; - output `WBM_MODEL_READ_OUT_TYPE read_res_o ; - reg [31: 0] num_of_slave_waits ; - reg end_access ; -begin:main - - read_res_o = 'h0 ; - - if (access_in_progress === 1'b1) - begin - error_message = "Task called when some other access was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - read_res_o`WBM_MODEL_READ_STIM_ERR = 1'b1 ; - disable main ; - end - - if (reset_done !== 1'b1) - begin - error_message = "Task called before reset was applied to the design" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - read_res_o`WBM_MODEL_READ_STIM_ERR = 1'b1 ; - disable main ; - end - - access_in_progress = 1'b1 ; - end_access = read_stim_i`WBM_MODEL_READ_LAST ; - - if (read_stim_i`WBM_MODEL_READ_FAST_B2B !== 1'b1) - @(posedge wb_clk_i) ; - - wbm_cyc_o <= #(Tperiod - Tsetup) 1'b1 ; - - insert_waits(read_stim_i`WBM_MODEL_READ_WAITS, 'h0, num_of_slave_waits) ; - - if ((num_of_slave_waits ^ num_of_slave_waits) === 'h0) - begin - error_message = "Slave responded to initial read access" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - num_of_slave_waits = 0 ; - - wbm_stb_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_we_o <= #(Tperiod - Tsetup) 1'b0 ; - wbm_adr_o <= #(Tperiod - Tsetup) next_read_adr ; - wbm_sel_o <= #(Tperiod - Tsetup) next_read_sel ; - wbm_cti_o <= #(Tperiod - Tsetup) next_read_cti ; - wbm_bte_o <= #(Tperiod - Tsetup) next_read_bte ; - - -> read_accepted ; - - @(posedge wb_clk_i) ; - - while((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0) & (num_of_slave_waits < read_stim_i`WBM_MODEL_READ_ALLOWED_SLAVE_WAITS)) - begin - num_of_slave_waits = num_of_slave_waits + 1'b1 ; - read_adr = wbm_adr_o ; - read_sel = wbm_sel_o ; - -> read_request ; - @(posedge wb_clk_i) ; - end - - if ((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0)) - begin - error_message = "Cycle terminated because allowed number of slave wait states constraint violation" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - read_res_o`WBM_MODEL_READ_DESIGN_ERR = 1'b1 ; - end - else if ((wbm_ack_i + wbm_err_i + wbm_rty_i) !== 'h1) - begin - error_message = "Cycle terminated because invalid slave response was received" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - read_res_o`WBM_MODEL_READ_DESIGN_ERR = 1'b1 ; - end - else - begin - read_res_o`WBM_MODEL_READ_SLAVE_WAITS = num_of_slave_waits ; - read_res_o`WBM_MODEL_READ_SLAVE_ACK = wbm_ack_i ; - read_res_o`WBM_MODEL_READ_SLAVE_ERR = wbm_err_i ; - read_res_o`WBM_MODEL_READ_SLAVE_RTY = wbm_rty_i ; - - if (wbm_ack_i === 1'b1) - begin - read_adr = wbm_adr_o ; - read_dat = wbm_dat_i ; - read_sel = wbm_sel_o ; - -> read_transfer ; - end - end - - if (end_access) - begin - wbm_cyc_o <= #(Thold) 1'b0 ; - wbm_stb_o <= #(Thold) 1'bx ; - wbm_we_o <= #(Thold) 1'bx ; - wbm_sel_o <= #(Thold) 'hx ; - wbm_adr_o <= #(Thold) 'hx ; - wbm_cti_o <= #(Thold) 'hx ; - wbm_bte_o <= #(Thold) 'hx ; - access_in_progress = 1'b0 ; - end -end -endtask // start_read - -task subsequent_read ; - input `WBM_MODEL_READ_IN_TYPE read_stim_i ; - output `WBM_MODEL_READ_OUT_TYPE read_res_o ; - reg [31: 0] num_of_slave_waits ; - reg end_access ; -begin:main - - read_res_o = 'h0 ; - - if (access_in_progress !== 1'b1) - begin - error_message = "Task called when no access was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - read_res_o`WBM_MODEL_READ_STIM_ERR = 1'b1 ; - disable main ; - end - - end_access = read_stim_i`WBM_MODEL_READ_LAST ; - - insert_waits(read_stim_i`WBM_MODEL_READ_WAITS, 'h1, num_of_slave_waits) ; - - if ((num_of_slave_waits ^ num_of_slave_waits) !== 'h0) - begin - num_of_slave_waits = read_stim_i`WBM_MODEL_READ_WAITS ; - end - - wbm_stb_o <= #(Tperiod - Tsetup) 1'b1 ; - wbm_we_o <= #(Tperiod - Tsetup) 1'b0 ; - wbm_adr_o <= #(Tperiod - Tsetup) next_read_adr ; - wbm_sel_o <= #(Tperiod - Tsetup) next_read_sel ; - wbm_cti_o <= #(Tperiod - Tsetup) next_read_cti ; - wbm_bte_o <= #(Tperiod - Tsetup) next_read_bte ; - - -> read_accepted ; - - @(posedge wb_clk_i) ; - - while((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0) & (num_of_slave_waits < read_stim_i`WBM_MODEL_READ_ALLOWED_SLAVE_WAITS)) - begin - num_of_slave_waits = num_of_slave_waits + 1'b1 ; - read_adr = wbm_adr_o ; - read_sel = wbm_sel_o ; - -> read_request ; - @(posedge wb_clk_i) ; - end - - if ((wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0)) - begin - error_message = "Cycle terminated because allowed number of slave wait states constraint violation" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - read_res_o`WBM_MODEL_READ_DESIGN_ERR = 1'b1 ; - end - else if ((wbm_ack_i + wbm_err_i + wbm_rty_i) !== 'h1) - begin - error_message = "Cycle terminated because invalid slave response was received" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end_access = 1'b1 ; - read_res_o`WBM_MODEL_WRITE_DESIGN_ERR = 1'b1 ; - end - else - begin - read_res_o`WBM_MODEL_READ_SLAVE_WAITS = num_of_slave_waits ; - read_res_o`WBM_MODEL_READ_SLAVE_ACK = wbm_ack_i ; - read_res_o`WBM_MODEL_READ_SLAVE_ERR = wbm_err_i ; - read_res_o`WBM_MODEL_READ_SLAVE_RTY = wbm_rty_i ; - - if (wbm_ack_i === 1'b1) - begin - read_adr = wbm_adr_o ; - read_dat = wbm_dat_i ; - read_sel = wbm_sel_o ; - -> read_transfer ; - end - end - - if (end_access) - begin - wbm_cyc_o <= #(Thold) 1'b0 ; - wbm_stb_o <= #(Thold) 1'bx ; - wbm_we_o <= #(Thold) 1'bx ; - wbm_sel_o <= #(Thold) 'hx ; - wbm_adr_o <= #(Thold) 'hx ; - wbm_cti_o <= #(Thold) 'hx ; - wbm_bte_o <= #(Thold) 'hx ; - access_in_progress = 1'b0 ; - end -end -endtask // subsequent_read - -task insert_waits ; - input [31: 0] num_of_waits_i ; - input read_req_on_wait_i ; - output [31: 0] num_of_slave_waits ; - reg [31: 0] cur_num_of_waits ; -begin - num_of_slave_waits = 'hx ; - - for (cur_num_of_waits = 0 ; cur_num_of_waits < num_of_waits_i ; cur_num_of_waits = cur_num_of_waits + 1'b1) - begin - wbm_stb_o <= #(Thold) 1'b0 ; - wbm_adr_o <= #(Thold) 'hx ; - wbm_sel_o <= #(Thold) 'hx ; - wbm_we_o <= #(Thold) 'hx ; - wbm_dat_o <= #(Thold) 'hx ; - wbm_cti_o <= #(Thold) 'hx ; - wbm_bte_o <= #(Thold) 'hx ; - - @(posedge wb_clk_i) ; - - if (read_req_on_wait_i) - begin - if ( (wbm_ack_i === 1'b0) & (wbm_err_i === 1'b0) & (wbm_rty_i === 1'b0) ) - begin - if ( (next_read_cti === 'h1) | (next_read_cti === 'h2) | (next_read_cti === 'h7) ) - begin - read_adr = next_read_adr ; - read_sel = next_read_sel ; - -> read_request ; - end - end - end - - if ((num_of_slave_waits ^ num_of_slave_waits) !== 'h0) - begin - if ((wbm_ack_i !== 1'b0) | (wbm_err_i !== 1'b0) | (wbm_rty_i !== 1'b0)) - num_of_slave_waits = cur_num_of_waits ; - end - end -end -endtask - -always@(posedge wb_clk_i) -begin:wb_monitoring_blk - reg burst_in_progress ; - reg ack_prev ; - reg rty_prev ; - reg err_prev ; - reg stb_prev ; - reg cyc_prev ; - reg [wb_dat_width - 1:0] sdat_prev ; - - ack_prev <= wbm_ack_i ; - rty_prev <= wbm_rty_i ; - err_prev <= wbm_err_i ; - stb_prev <= wbm_stb_o ; - cyc_prev <= wbm_cyc_o ; - sdat_prev <= wbm_dat_i ; - - if (wb_rst_i === `WB_MODEL_RST_ACTIVE) - begin - if (wbm_ack_i !== 1'b0) - begin - error_message = "ACK input signal was not de-asserted while reset was asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if (wbm_err_i !== 1'b0) - begin - error_message = "ERR input signal was not de-asserted while reset was asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if (wbm_rty_i !== 1'b0) - begin - error_message = "RTY input signal was not de-asserted while reset was asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - burst_in_progress <= 1'b0 ; - end - else - begin - if (wbm_cyc_o !== 1'b1) - begin - if (wbm_ack_i !== 1'b0) - begin - error_message = "ACK input signal was asserted while no cycle was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if (wbm_err_i !== 1'b0) - begin - error_message = "ERR input signal was asserted while no cycle was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if (wbm_rty_i !== 1'b0) - begin - error_message = "RTY input signal was asserted while no cycle was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - end - else - begin - if (burst_in_progress !== 1'b1) - begin - if ((wbm_ack_i !== 1'b0) & (wbm_stb_o !== 1'b1)) - begin - error_message = "ACK input signal was asserted while STB was de-asserted and no burst was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if ((wbm_err_i !== 1'b0) & (wbm_stb_o !== 1'b1)) - begin - error_message = "ERR input signal was asserted while STB was de-asserted and no burst was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if ((wbm_rty_i !== 1'b0) & (wbm_stb_o !== 1'b1)) - begin - error_message = "RTY input signal was asserted while STB was de-asserted and no burst was in progress" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - end - else - begin - if ((ack_prev !== 1'b0) & (stb_prev !== 1'b1)) - begin - if (wbm_ack_i !== 1'b1) - begin - error_message = "Slave de-asserted ACK signal during burst cycle without receiving STB asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if (wbm_we_o !== 'b1) - begin - if (sdat_prev !== wbm_dat_i) - begin - error_message = "Slave changed the value of data output bus during burst cycle without receiving STB asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - end - end - - if ((rty_prev !== 1'b0) & (stb_prev !== 1'b1) & (wbm_rty_i !== 1'b1)) - begin - error_message = "Slave de-asserted RTY signal during burst cycle without receiving STB asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - - if ((err_prev !== 1'b0) & (stb_prev !== 1'b1) & (wbm_err_i !== 1'b1)) - begin - error_message = "Slave de-asserted ERR signal during burst cycle without receiving STB asserted" ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - end - - if (wbm_stb_o === 1'b1) - begin - case (wbm_cti_o) - 3'b000:burst_in_progress <= 1'b0 ; - 3'b001:burst_in_progress <= 1'b1 ; - 3'b010:burst_in_progress <= 1'b1 ; - 3'b011:burst_in_progress <= 1'b0 ; - 3'b100:burst_in_progress <= 1'b0 ; - 3'b101:burst_in_progress <= 1'b0 ; - 3'b110:burst_in_progress <= 1'b0 ; - 3'b111:if (wbm_ack_i === 1'b1) burst_in_progress <= 1'b0 ; - default: - begin - error_message = "WISHBONE master sent invalid cycle type identifier" ; - burst_in_progress <= 1'bx ; - `WB_MODEL_ERR_MSG(error_message) ; - -> error_event ; - end - endcase - - if (wbm_err_i === 1'b1) - burst_in_progress <= 1'b0 ; - - if (wbm_rty_i === 1'b1) - burst_in_progress <= 1'b0 ; - - end - end - end -end - -function [wb_dat_width - 1:0] get_write_dat ; - input [wb_dat_width - 1:0] dat_i ; - input [wb_sel_width - 1:0] sel_i ; - - integer cur_bit ; - reg [wb_dat_width - 1:0] dat_o ; -begin - for (cur_bit = 0 ; cur_bit < wb_dat_width ; cur_bit = cur_bit + 1'b1) - begin - if (sel_i[cur_bit >> 3] === 1'b1) - dat_o[cur_bit] = dat_i[cur_bit] ; - else - dat_o[cur_bit] = 1'bx ; - end - - get_write_dat = dat_o ; -end -endfunction // get_write_dat - -endmodule - diff --git a/usrp2/fpga/opencores/uart16550/bench/verilog/wb_model_defines.v b/usrp2/fpga/opencores/uart16550/bench/verilog/wb_model_defines.v deleted file mode 100644 index 16a2ca16..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/verilog/wb_model_defines.v +++ /dev/null @@ -1,82 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// wb_model_defines.v //// -//// //// -//// This file is part of the "uart16550" project //// -//// http://www.opencores.org/projects/uart16550/ //// -//// //// -//// Author(s): //// -//// - mihad@opencores.org (Miha Dolenc) //// -//// //// -//// All additional information is avaliable in the README.txt //// -//// file. //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 - 2004 authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: wb_model_defines.v,v $ -// Revision 1.1 2004/03/27 03:55:17 tadejm -// Testbench with complete selfchecking. BUG is that THRE status is set at the end of last sent bit when TX FIFO is empty instead when only TX FIFO gets empty. This causes testcases not to finish. -// -// -// - - -`define WB_MODEL_RST_ACTIVE 1'b1 -`define WB_MODEL_ERR_MSG(TEXT) $display("Error detected at time %t!", $time) ; $display("%m reports: %0s.", TEXT) ; testcase.msg = TEXT ; -> testcase.err_event - -`define WBM_MODEL_WRITE_IN_TYPE [65: 0] -`define WBM_MODEL_WRITE_WAITS [31: 0] -`define WBM_MODEL_WRITE_ALLOWED_SLAVE_WAITS [63:32] -`define WBM_MODEL_WRITE_LAST [64:64] -`define WBM_MODEL_WRITE_FAST_B2B [65:65] - -`define WBM_MODEL_WRITE_OUT_TYPE [36: 0] -`define WBM_MODEL_WRITE_SLAVE_WAITS [31: 0] -`define WBM_MODEL_WRITE_STIM_ERR [32:32] -`define WBM_MODEL_WRITE_DESIGN_ERR [33:33] -`define WBM_MODEL_WRITE_SLAVE_ACK [34:34] -`define WBM_MODEL_WRITE_SLAVE_ERR [35:35] -`define WBM_MODEL_WRITE_SLAVE_RTY [36:36] - -`define WBM_MODEL_READ_IN_TYPE [65: 0] -`define WBM_MODEL_READ_WAITS [31: 0] -`define WBM_MODEL_READ_ALLOWED_SLAVE_WAITS [63:32] -`define WBM_MODEL_READ_LAST [64:64] -`define WBM_MODEL_READ_FAST_B2B [65:65] - -`define WBM_MODEL_READ_OUT_TYPE [36: 0] -`define WBM_MODEL_READ_SLAVE_WAITS [31: 0] -`define WBM_MODEL_READ_STIM_ERR [32:32] -`define WBM_MODEL_READ_DESIGN_ERR [33:33] -`define WBM_MODEL_READ_SLAVE_ACK [34:34] -`define WBM_MODEL_READ_SLAVE_ERR [35:35] -`define WBM_MODEL_READ_SLAVE_RTY [36:36] - diff --git a/usrp2/fpga/opencores/uart16550/bench/vhdl/.keepme b/usrp2/fpga/opencores/uart16550/bench/vhdl/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Entries b/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Entries deleted file mode 100644 index 7af05a67..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:37 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Repository b/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Repository deleted file mode 100644 index f9f65b2e..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/bench/vhdl diff --git a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Root b/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Template b/usrp2/fpga/opencores/uart16550/bench/vhdl/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/doc/CHANGES.txt b/usrp2/fpga/opencores/uart16550/doc/CHANGES.txt deleted file mode 100644 index 7e427eb1..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/CHANGES.txt +++ /dev/null @@ -1,111 +0,0 @@ -Note: This Changes file is being maintained since 25.5.2001. - -29.07.2002 -~~~~~~~~~~ -Reverted to have uart_defines.v file to be included in the verilog -files. It seems that it's been a bad idea in the first place. - -22.07.2002 -~~~~~~~~~~ -Notice that this file hasn't been updated for a while so not all changed are present. - -Bug Fixes: - * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. - Problem reported by Kenny.Tung. - * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. - -Improvements: - * Made FIFO's as general inferrable memory where possible. - So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). - This saves about 1/3 of the Slice count and reduces P&R and synthesis times. - - * Added optional baudrate output (baud_o). - This is identical to BAUDOUT* signal on 16550 chip. - It outputs 16xbit_clock_rate - the divided clock. - It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. - -Note: - The uart_defines.v file is no longer included in the source files. - So keep this in mind when doing simulation. Add it manually. - I've done this, so that you could you your own define files for - different configurations. I need this for the IrDA core I develop. - You can just uncomment the `includes if you want the old behaviour. - The uart_fifo.v file is no longer used. Intead uart_rfifo.v and uart_tfifo.v - file are now present. Also raminfr.v in the new inferred ram module. - - Check the new core and I hope you'll like it. - -10.08.2001 -~~~~~~~~~~ -* Modified naming of top signals and defines to be unique and easy to integrate -* Changed the directory structure of the core to new structure as described in OpenCores - coding guidelines. !!! -* Fixed (I hope) the detection of break condition -* Added top level parameters for data width and address line width - -23.06.2001 -~~~~~~~~~~ - -* With the help of Bob Kirstein another two bugs were fixed: - 1. Trasmitter was sending stop bit two 16xclock cycle slonger than needed. - 2. Receiver was losing 1 16xclock cycle on each character and went out of sync. - -* Major change: - I have modified the divisor latch register to be 16-bit long instead of 32 as I thought was - necessary for higher speed systems. Thanks to Rick Wright for pointing this out. - So now, DL3 and DL4 register bytes are not used. - Documentation is updated to follow this change. - -* Note that more than 1 stop bit in a byte i snot implemented. - -2.05.2001 -~~~~~~~~~ - -* Fixed transmitter and receiver - the start and the stop bits were sent and received complemented. - Big thanks go to Bob Kirstein for pointing this out to me. - - -31.05.2001 -~~~~~~~~~~ - -* Minor changes in register reading code -* Changed FCR to be 2 bits wide (reset bits are not needed) and instead enabled the rx_reset and tx_reset - signals which I forgot to implement. -* Changed defines for FCR. -* Cleaned ports that were not connected in top-level. -* Changed the code to have only one FIFO module instead of two to overcome versioning problem on the cost of - some additional gate count. UART_RX_FIFO was modified a little and renamed to UART_FIFO. -* UART_RX_FIFO.v and UART_TX_FIFO.v files removed from the project. -* Changes to receiver and transmitter modules concerning FIFO handling. -* Commented out `include "UART_defines" in all files but UART_top.v and test bench. -* Modified test bench a little for a little better check. - - -29.05.2001 -~~~~~~~~~~ - -* Fixed: Line Control Register block didn't have wb_rst_i in its sensitivity list -* Fixed: Modem Status Register block didn't have wb_rst_i in its sensitivity list and didn't set reset value -* Fixed rf_pop, lsr_mask, msi_reset and threi_clear not being synthesizable in release 1.7. (Thanks - to Pavel Korenski for pointing this to me) - - -27.05.2001 -~~~~~~~~~~ - -Thanks to Rick Wright for pointing me many of my bugs. - -* Fixed the rf_pop and lsr_mask flags not being deasserted. -* Fixed Time-Out interrupt not being masked by bit 0 in IER -* Fixed interrupt logic not being masked by IER -* Fixed bit 0 (interrupt pending) of IIR being set incorrectly -* Fixed Modem Status Register bits 3:0 handling (didn't work as should have) -* Fixed modem status interrupt to be related to bits [3:0] (deltas) instead of the bits 7:4 of MSR. - This way the interrupt is cleared upon reading from the MSR. -* Fixed THRE interrupt not being reset by reading IIR -* Changed Receiver and Transmitter FIFO, so that they do not use the FIFO_inc.v file because of problems - with #include command. -* Removed FIFO_inc.v from CVS tree. - -* Updated specifications .pdf file - diff --git a/usrp2/fpga/opencores/uart16550/doc/CVS/Entries b/usrp2/fpga/opencores/uart16550/doc/CVS/Entries deleted file mode 100644 index 15e067b1..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/CHANGES.txt/1.3/Mon Jul 29 21:15:17 2002/-kb/ -/UART_spec.pdf/1.6/Thu Dec 4 11:00:47 2003/-kb/ -D diff --git a/usrp2/fpga/opencores/uart16550/doc/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/doc/CVS/Entries.Log deleted file mode 100644 index d269bfed..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/CVS/Entries.Log +++ /dev/null @@ -1 +0,0 @@ -A D/src//// diff --git a/usrp2/fpga/opencores/uart16550/doc/CVS/Repository b/usrp2/fpga/opencores/uart16550/doc/CVS/Repository deleted file mode 100644 index 6e33cf21..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/doc diff --git a/usrp2/fpga/opencores/uart16550/doc/CVS/Root b/usrp2/fpga/opencores/uart16550/doc/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/doc/CVS/Template b/usrp2/fpga/opencores/uart16550/doc/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/doc/UART_spec.pdf b/usrp2/fpga/opencores/uart16550/doc/UART_spec.pdf deleted file mode 100644 index 95ac20b2ba9f0a8505fe7eb9601c07b5f2e42c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163447 zcmd3ORa_p)@;2^nA-KEqq9M4u26qYW9^5s-9fCUq_u%gC5F|iwf_uIfvb*2zIp<?X@L`G#dTVoz>2)Sy|J|;5f=b>ha#}9XzXC)WN&EfK*aJ}i;#`ABk&dnBG%s;WQ>i>^aX8P zi8O%?OhoL=EJPe!EJWJCr-kfoZ2$8WMH@$bM`Pgah`hW+h{o1NPjH@I@dqqVQ2S&PclXS?du)ryQHJ%*+_W61s{5so2Xd_avXPWy7Q1%hY9h&k0~ zRpUd?r`brHkP&nwjv1%_FGL^Q@lQt6ZomK8Xe#(5SMSWf~zrp{1QoYU3us}_kWnS7WiDsJwy z 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

    silZKw6p+*gj7a~3UAfws}4KapUoqmaT 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 h03xDGARa{e%{{f~1p%DN8 diff --git a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Entries b/usrp2/fpga/opencores/uart16550/doc/src/CVS/Entries deleted file mode 100644 index a517fa83..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/UART_spec.doc/1.6/Thu Dec 4 11:00:48 2003/-kb/ -D diff --git a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Repository b/usrp2/fpga/opencores/uart16550/doc/src/CVS/Repository deleted file mode 100644 index a41b31f8..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/doc/src diff --git a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Root b/usrp2/fpga/opencores/uart16550/doc/src/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/doc/src/CVS/Template b/usrp2/fpga/opencores/uart16550/doc/src/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/doc/src/UART_spec.doc b/usrp2/fpga/opencores/uart16550/doc/src/UART_spec.doc deleted file mode 100644 index 227dbe2c82415c9cb0a40b1c2d87d7269ef70623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129024 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�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 {1'b0,trigger_level}); - thre_int <= #1 threi_clear ? 0 : ier[`UART_IE_THRE] && lsr[`UART_LS_TFE]; - ms_int <= #1 ier[`UART_IE_MS] && (| msr[3:0]); - ti_int <= #1 ier[`UART_IE_RDA] && (counter_t == 6'b0); - end -end - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - int_o <= #1 1'b0; - else - if (| {rls_int,rda_int,thre_int,ms_int,ti_int}) - int_o <= #1 1'b1; - else - int_o <= #1 1'b0; -end - - -// Interrupt Identification register -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - iir <= #1 1; - else - if (rls_int) // interrupt occured and is enabled (not masked) - begin - iir[`UART_II_II] <= #1 `UART_II_RLS; // set identification register to correct value - iir[`UART_II_IP] <= #1 1'b0; // and clear the IIR bit 0 (interrupt pending) - end - else - if (rda_int) - begin - iir[`UART_II_II] <= #1 `UART_II_RDA; - iir[`UART_II_IP] <= #1 1'b0; - end - else - if (ti_int) - begin - iir[`UART_II_II] <= #1 `UART_II_TI; - iir[`UART_II_IP] <= #1 1'b0; - end - else - if (thre_int) - begin - iir[`UART_II_II] <= #1 `UART_II_THRE; - iir[`UART_II_IP] <= #1 1'b0; - end - else - if (ms_int) - begin - iir[`UART_II_II] <= #1 `UART_II_MS; - iir[`UART_II_IP] <= #1 1'b0; - end - else // no interrupt is pending - begin - iir[`UART_II_IP] <= #1 1'b1; - end -end - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_top.v b/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_top.v deleted file mode 100644 index 58059fa2..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_top.v +++ /dev/null @@ -1,170 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_top.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core top level. //// -//// //// -//// Known problems (limits): //// -//// Note that transmitter and receiver instances are inside //// -//// the uart_regs.v file. //// -//// //// -//// To Do: //// -//// Nothing so far. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Jacob Gorban, gorban@opencores.org //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_top.v,v $ -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -`include "timescale.v" -`include "uart_defines.v" - -module uart_top ( - clk, - - // Wishbone signals - wb_rst_i, wb_addr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, - int_o, // interrupt request - - // UART signals - // serial input/output - stx_pad_o, srx_pad_i, - - // modem signals - rts_pad_o, cts_pad_i, dtr_pad_o, dsr_pad_i, ri_pad_i, dcd_pad_i - - ); - -parameter uart_data_width = 8; -parameter uart_addr_width = `UART_ADDR_WIDTH; - -input clk; - -// WISHBONE interface -input wb_rst_i; -input [uart_addr_width-1:0] wb_addr_i; -input [uart_data_width-1:0] wb_dat_i; -output [uart_data_width-1:0] wb_dat_o; -input wb_we_i; -input wb_stb_i; -input wb_cyc_i; -output wb_ack_o; -output int_o; - -// UART signals -input srx_pad_i; -output stx_pad_o; -output rts_pad_o; -input cts_pad_i; -output dtr_pad_o; -input dsr_pad_i; -input ri_pad_i; -input dcd_pad_i; - -wire stx_pad_o; -wire rts_pad_o; -wire dtr_pad_o; - -wire [uart_addr_width-1:0] wb_addr_i; -wire [uart_data_width-1:0] wb_dat_i; -wire [uart_data_width-1:0] wb_dat_o; - -wire we_o; // Write enable for registers -wire re_o; // Read enable for registers -// -// MODULE INSTANCES -// - -//// WISHBONE interface module -uart_wb wb_interface( - .clk( clk ), - .wb_rst_i( wb_rst_i ), - .wb_we_i( wb_we_i ), - .wb_stb_i( wb_stb_i ), - .wb_cyc_i( wb_cyc_i ), - .wb_ack_o( wb_ack_o ), - .we_o( we_o ), - .re_o(re_o) - ); - -// Registers -uart_regs regs( - .clk( clk ), - .wb_rst_i( wb_rst_i ), - .wb_addr_i( wb_addr_i ), - .wb_dat_i( wb_dat_i ), - .wb_dat_o( wb_dat_o ), - .wb_we_i( we_o ), - .wb_re_i(re_o), - .modem_inputs( {cts_pad_i, dsr_pad_i, - ri_pad_i, dcd_pad_i} ), - .stx_pad_o( stx_pad_o ), - .srx_pad_i( srx_pad_i ), - .enable( enable ), - .rts_pad_o( rts_pad_o ), - .dtr_pad_o( dtr_pad_o ), - .int_o( int_o ) - ); - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_transmitter.v b/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_transmitter.v deleted file mode 100644 index a028f4ed..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_transmitter.v +++ /dev/null @@ -1,288 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_transmitter.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core transmitter logic //// -//// //// -//// Known problems (limits): //// -//// None known //// -//// //// -//// To Do: //// -//// Thourough testing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Jacob Gorban, gorban@opencores.org //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_transmitter.v,v $ -// Revision 1.6 2001/06/23 11:21:48 gorban -// DL made 16-bit long. Fixed transmission/reception bugs. -// -// Revision 1.5 2001/06/02 14:28:14 gorban -// Fixed receiver and transmitter. Major bug fixed. -// -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/27 17:37:49 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.2 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.1 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -`include "timescale.v" -`include "uart_defines.v" - -module uart_transmitter (clk, wb_rst_i, lcr, tf_push, wb_dat_i, enable, stx_pad_o, state, tf_count, tx_reset); - -input clk; -input wb_rst_i; -input [7:0] lcr; -input tf_push; -input [7:0] wb_dat_i; -input enable; -input tx_reset; -output stx_pad_o; -output [2:0] state; -output [`UART_FIFO_COUNTER_W-1:0] tf_count; - -reg [2:0] state; -reg [4:0] counter; -reg [2:0] bit_counter; // counts the bits to be sent -reg [6:0] shift_out; // output shift register -reg stx_o_tmp; -reg parity_xor; // parity of the word -reg tf_pop; -reg bit_out; - -// TX FIFO instance -// -// Transmitter FIFO signals -wire [`UART_FIFO_WIDTH-1:0] tf_data_in; -wire [`UART_FIFO_WIDTH-1:0] tf_data_out; -wire tf_push; -wire tf_underrun; -wire tf_overrun; -wire [`UART_FIFO_COUNTER_W-1:0] tf_count; - -assign tf_data_in = wb_dat_i; - -uart_fifo fifo_tx( // error bit signal is not used in transmitter FIFO - .clk( clk ), - .wb_rst_i( wb_rst_i ), - .data_in( tf_data_in ), - .data_out( tf_data_out ), - .push( tf_push ), - .pop( tf_pop ), - .underrun( tf_underrun ), - .overrun( tf_overrun ), - .count( tf_count ), - .error_bit(), // Ta ni priklopljen. Prej je manjkal, dodal Igor - .fifo_reset( tx_reset ), - .reset_status(1'b0) -); - -// TRANSMITTER FINAL STATE MACHINE - -parameter s_idle = 3'd0; -parameter s_send_start = 3'd1; -parameter s_send_byte = 3'd2; -parameter s_send_parity = 3'd3; -parameter s_send_stop = 3'd4; -parameter s_pop_byte = 3'd5; - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - begin - state <= #1 s_idle; - stx_o_tmp <= #1 1'b1; - counter <= #1 5'b0; - shift_out <= #1 7'b0; - bit_out <= #1 1'b0; - parity_xor <= #1 1'b0; - tf_pop <= #1 1'b0; - bit_counter <= #1 3'b0; - end - else - if (enable) - begin - case (state) - s_idle : if (~|tf_count) // if tf_count==0 - begin - state <= #1 s_idle; - stx_o_tmp <= #1 1'b1; - end - else - begin - tf_pop <= #1 1'b0; - stx_o_tmp <= #1 1'b1; - state <= #1 s_pop_byte; - end - s_pop_byte : begin - tf_pop <= #1 1'b1; - case (lcr[/*`UART_LC_BITS*/1:0]) // number of bits in a word - 2'b00 : begin - bit_counter <= #1 3'b100; - parity_xor <= #1 ^tf_data_out[4:0]; - end - 2'b01 : begin - bit_counter <= #1 3'b101; - parity_xor <= #1 ^tf_data_out[5:0]; - end - 2'b10 : begin - bit_counter <= #1 3'b110; - parity_xor <= #1 ^tf_data_out[6:0]; - end - 2'b11 : begin - bit_counter <= #1 3'b111; - parity_xor <= #1 ^tf_data_out[7:0]; - end - endcase - {shift_out[6:0], bit_out} <= #1 tf_data_out; - state <= #1 s_send_start; - end - s_send_start : begin - tf_pop <= #1 1'b0; - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - counter <= #1 0; - state <= #1 s_send_byte; - end - else - counter <= #1 counter - 5'b00001; - stx_o_tmp <= #1 1'b0; - end - s_send_byte : begin - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - if (bit_counter > 3'b0) - begin - bit_counter <= #1 bit_counter - 1; - {shift_out[5:0],bit_out } <= #1 {shift_out[6:1], shift_out[0]}; - state <= #1 s_send_byte; - end - else // end of byte - if (~lcr[`UART_LC_PE]) - begin - state <= #1 s_send_stop; - end - else - begin - case ({lcr[`UART_LC_EP],lcr[`UART_LC_SP]}) - 2'b00: bit_out <= #1 parity_xor; - 2'b01: bit_out <= #1 1'b1; - 2'b10: bit_out <= #1 ~parity_xor; - 2'b11: bit_out <= #1 1'b0; - endcase - state <= #1 s_send_parity; - end - counter <= #1 0; - end - else - counter <= #1 counter - 5'b00001; - stx_o_tmp <= #1 bit_out; // set output pin - end - s_send_parity : begin - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - counter <= #1 4'b0; - state <= #1 s_send_stop; - end - else - counter <= #1 counter - 5'b00001; - stx_o_tmp <= #1 bit_out; - end - s_send_stop : begin - if (~|counter) - begin - casex ({lcr[`UART_LC_SB],lcr[`UART_LC_BITS]}) - 3'b0xx: counter <= #1 5'b01101; // 1 stop bit ok igor - 3'b100: counter <= #1 5'b10101; // 1.5 stop bit - 3'b1xx: counter <= #1 5'b11101; // 2 stop bits - endcase - end - else - if (counter == 5'b00001) - begin - counter <= #1 0; - state <= #1 s_idle; - end - else - counter <= #1 counter - 5'b00001; - stx_o_tmp <= #1 1'b1; - end - - default : // should never get here - state <= #1 s_idle; - endcase - end // end if enable -end // transmitter logic - -assign stx_pad_o = lcr[`UART_LC_BC] ? 1'b0 : stx_o_tmp; // Break condition - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_wb.v b/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_wb.v deleted file mode 100644 index 80f712ca..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog-backup/uart_wb.v +++ /dev/null @@ -1,125 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_TX_FIFO.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core WISHBONE interface. //// -//// //// -//// Known problems (limits): //// -//// Inserts one wait state on all transfers. //// -//// Note affected signals and the way they are affected. //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Jacob Gorban, gorban@opencores.org //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_wb.v,v $ -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/21 19:12:01 gorban -// Corrected some Linter messages. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:13+02 jacob -// Initial revision -// -// - -// UART core WISHBONE interface -// -// Author: Jacob Gorban (jacob.gorban@flextronicssemi.com) -// Company: Flextronics Semiconductor -// - -`include "timescale.v" - -module uart_wb (clk, - wb_rst_i, - wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, - we_o, re_o // Write and read enable output for the core - - ); - -input clk; - -// WISHBONE interface -input wb_rst_i; -input wb_we_i; -input wb_stb_i; -input wb_cyc_i; -output wb_ack_o; -output we_o; -output re_o; - -wire we_o; -reg wb_ack_o; - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - begin - wb_ack_o <= #1 1'b0; - end - else - begin -// wb_ack_o <= #1 wb_stb_i & wb_cyc_i; // 1 clock wait state on all transfers - wb_ack_o <= #1 wb_stb_i & wb_cyc_i & ~wb_ack_o; // 1 clock wait state on all transfers - end -end - -assign we_o = wb_we_i & wb_cyc_i & wb_stb_i; //WE for registers -assign re_o = ~wb_we_i & wb_cyc_i & wb_stb_i; //RE for registers - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Entries b/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Entries deleted file mode 100644 index 92430839..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Entries +++ /dev/null @@ -1,13 +0,0 @@ -/raminfr.v/1.2/Mon Jul 29 21:16:18 2002// -/timescale.v/1.6/Fri Aug 24 21:01:12 2001// -/uart_debug_if.v/1.5/Mon Jul 29 21:16:18 2002// -/uart_defines.v/1.14/Fri Sep 12 07:26:58 2003// -/uart_receiver.v/1.31/Fri Jun 18 14:46:15 2004// -/uart_regs.v/1.42/Mon Nov 22 09:21:59 2004// -/uart_rfifo.v/1.4/Fri Jul 11 18:20:26 2003// -/uart_sync_flops.v/1.1/Fri May 21 11:43:25 2004// -/uart_tfifo.v/1.2/Mon Jul 29 21:16:18 2002// -/uart_top.v/1.19/Mon Jul 29 21:16:18 2002// -/uart_transmitter.v/1.19/Mon Jul 29 21:16:18 2002// -/uart_wb.v/1.17/Fri May 21 12:35:15 2004// -D diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Repository b/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Repository deleted file mode 100644 index b0efc9db..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/rtl/verilog diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Root b/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Template b/usrp2/fpga/opencores/uart16550/rtl/verilog/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/raminfr.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/raminfr.v deleted file mode 100644 index bd376d5d..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/raminfr.v +++ /dev/null @@ -1,114 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// raminfr.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Inferrable Distributed RAM for FIFOs //// -//// //// -//// Known problems (limits): //// -//// None . //// -//// //// -//// To Do: //// -//// Nothing so far. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2002/07/22 //// -//// Last Updated: 2002/07/22 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: raminfr.v,v $ -// Revision 1.2 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.1 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// - -//Following is the Verilog code for a dual-port RAM with asynchronous read. -module raminfr - (clk, we, a, dpra, di, dpo); - -parameter addr_width = 4; -parameter data_width = 8; -parameter depth = 16; - -input clk; -input we; -input [addr_width-1:0] a; -input [addr_width-1:0] dpra; -input [data_width-1:0] di; -//output [data_width-1:0] spo; -output [data_width-1:0] dpo; -reg [data_width-1:0] ram [depth-1:0]; - -wire [data_width-1:0] dpo; -wire [data_width-1:0] di; -wire [addr_width-1:0] a; -wire [addr_width-1:0] dpra; - - always @(posedge clk) begin - if (we) - ram[a] <= di; - end -// assign spo = ram[a]; - assign dpo = ram[dpra]; -endmodule - diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/timescale.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/timescale.v deleted file mode 100644 index 051ee7a5..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/timescale.v +++ /dev/null @@ -1,64 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// timescale.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Defines of the Core //// -//// //// -//// Known problems (limits): //// -//// None //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// Timescale define - -`timescale 1ns/10ps diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_debug_if.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_debug_if.v deleted file mode 100644 index 3c8ac1aa..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_debug_if.v +++ /dev/null @@ -1,129 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_debug_if.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core debug interface. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// //// -//// Created: 2001/12/02 //// -//// (See log for the revision history) //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_debug_if.v,v $ -// Revision 1.5 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.4 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.3 2001/12/19 08:40:03 mohor -// Warnings fixed (unused signals removed). -// -// Revision 1.2 2001/12/12 22:17:30 gorban -// some synthesis bugs fixed -// -// Revision 1.1 2001/12/04 21:14:16 gorban -// committed the debug interface file -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -module uart_debug_if (/*AUTOARG*/ -// Outputs -wb_dat32_o, -// Inputs -wb_adr_i, ier, iir, fcr, mcr, lcr, msr, -lsr, rf_count, tf_count, tstate, rstate -) ; - -input [`UART_ADDR_WIDTH-1:0] wb_adr_i; -output [31:0] wb_dat32_o; -input [3:0] ier; -input [3:0] iir; -input [1:0] fcr; /// bits 7 and 6 of fcr. Other bits are ignored -input [4:0] mcr; -input [7:0] lcr; -input [7:0] msr; -input [7:0] lsr; -input [`UART_FIFO_COUNTER_W-1:0] rf_count; -input [`UART_FIFO_COUNTER_W-1:0] tf_count; -input [2:0] tstate; -input [3:0] rstate; - - -wire [`UART_ADDR_WIDTH-1:0] wb_adr_i; -reg [31:0] wb_dat32_o; - -always @(/*AUTOSENSE*/fcr or ier or iir or lcr or lsr or mcr or msr - or rf_count or rstate or tf_count or tstate or wb_adr_i) - case (wb_adr_i) - // 8 + 8 + 4 + 4 + 8 - 5'b01000: wb_dat32_o = {msr,lcr,iir,ier,lsr}; - // 5 + 2 + 5 + 4 + 5 + 3 - 5'b01100: wb_dat32_o = {8'b0, fcr,mcr, rf_count, rstate, tf_count, tstate}; - default: wb_dat32_o = 0; - endcase // case(wb_adr_i) - -endmodule // uart_debug_if - diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_defines.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_defines.v deleted file mode 100644 index 8b372cb5..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_defines.v +++ /dev/null @@ -1,250 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_defines.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Defines of the Core //// -//// //// -//// Known problems (limits): //// -//// None //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_defines.v,v $ -// Revision 1.14 2003/09/12 07:26:58 dries -// adjusted comment + define -// -// Revision 1.13 2003/06/11 16:37:47 gorban -// This fixes errors in some cases when data is being read and put to the FIFO at the same time. Patch is submitted by Scott Furman. Update is very recommended. -// -// Revision 1.12 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.10 2001/12/11 08:55:40 mohor -// Scratch register define added. -// -// Revision 1.9 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.8 2001/11/26 21:38:54 gorban -// Lots of fixes: -// Break condition wasn't handled correctly at all. -// LSR bits could lose their values. -// LSR value after reset was wrong. -// Timing of THRE interrupt signal corrected. -// LSR bit 0 timing corrected. -// -// Revision 1.7 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.6 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.5 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.4 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.3 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:11+02 jacob -// Initial revision -// -// - -// remove comments to restore to use the new version with 8 data bit interface -// in 32bit-bus mode, the wb_sel_i signal is used to put data in correct place -// also, in 8-bit version there'll be no debugging features included -// CAUTION: doesn't work with current version of OR1200 -//`define DATA_BUS_WIDTH_8 - -`ifdef DATA_BUS_WIDTH_8 - `define UART_ADDR_WIDTH 3 - `define UART_DATA_WIDTH 8 -`else - `define UART_ADDR_WIDTH 5 - `define UART_DATA_WIDTH 32 -`endif - -// Uncomment this if you want your UART to have -// 16xBaudrate output port. -// If defined, the enable signal will be used to drive baudrate_o signal -// It's frequency is 16xbaudrate - -`define UART_HAS_BAUDRATE_OUTPUT - -// Register addresses -`define UART_REG_RB `UART_ADDR_WIDTH'd0 // receiver buffer -`define UART_REG_TR `UART_ADDR_WIDTH'd0 // transmitter -`define UART_REG_IE `UART_ADDR_WIDTH'd1 // Interrupt enable -`define UART_REG_II `UART_ADDR_WIDTH'd2 // Interrupt identification -`define UART_REG_FC `UART_ADDR_WIDTH'd2 // FIFO control -`define UART_REG_LC `UART_ADDR_WIDTH'd3 // Line Control -`define UART_REG_MC `UART_ADDR_WIDTH'd4 // Modem control -`define UART_REG_LS `UART_ADDR_WIDTH'd5 // Line status -`define UART_REG_MS `UART_ADDR_WIDTH'd6 // Modem status -`define UART_REG_SR `UART_ADDR_WIDTH'd7 // Scratch register -`define UART_REG_DL1 `UART_ADDR_WIDTH'd0 // Divisor latch bytes (1-2) -`define UART_REG_DL2 `UART_ADDR_WIDTH'd1 - -// Interrupt Enable register bits -`define UART_IE_RDA 0 // Received Data available interrupt -`define UART_IE_THRE 1 // Transmitter Holding Register empty interrupt -`define UART_IE_RLS 2 // Receiver Line Status Interrupt -`define UART_IE_MS 3 // Modem Status Interrupt - -// Interrupt Identification register bits -`define UART_II_IP 0 // Interrupt pending when 0 -`define UART_II_II 3:1 // Interrupt identification - -// Interrupt identification values for bits 3:1 -`define UART_II_RLS 3'b011 // Receiver Line Status -`define UART_II_RDA 3'b010 // Receiver Data available -`define UART_II_TI 3'b110 // Timeout Indication -`define UART_II_THRE 3'b001 // Transmitter Holding Register empty -`define UART_II_MS 3'b000 // Modem Status - -// FIFO Control Register bits -`define UART_FC_TL 1:0 // Trigger level - -// FIFO trigger level values -`define UART_FC_1 2'b00 -`define UART_FC_4 2'b01 -`define UART_FC_8 2'b10 -`define UART_FC_14 2'b11 - -// Line Control register bits -`define UART_LC_BITS 1:0 // bits in character -`define UART_LC_SB 2 // stop bits -`define UART_LC_PE 3 // parity enable -`define UART_LC_EP 4 // even parity -`define UART_LC_SP 5 // stick parity -`define UART_LC_BC 6 // Break control -`define UART_LC_DL 7 // Divisor Latch access bit - -// Modem Control register bits -`define UART_MC_DTR 0 -`define UART_MC_RTS 1 -`define UART_MC_OUT1 2 -`define UART_MC_OUT2 3 -`define UART_MC_LB 4 // Loopback mode - -// Line Status Register bits -`define UART_LS_DR 0 // Data ready -`define UART_LS_OE 1 // Overrun Error -`define UART_LS_PE 2 // Parity Error -`define UART_LS_FE 3 // Framing Error -`define UART_LS_BI 4 // Break interrupt -`define UART_LS_TFE 5 // Transmit FIFO is empty -`define UART_LS_TE 6 // Transmitter Empty indicator -`define UART_LS_EI 7 // Error indicator - -// Modem Status Register bits -`define UART_MS_DCTS 0 // Delta signals -`define UART_MS_DDSR 1 -`define UART_MS_TERI 2 -`define UART_MS_DDCD 3 -`define UART_MS_CCTS 4 // Complement signals -`define UART_MS_CDSR 5 -`define UART_MS_CRI 6 -`define UART_MS_CDCD 7 - -// FIFO parameter defines - -`define UART_FIFO_WIDTH 8 -`define UART_FIFO_DEPTH 16 -`define UART_FIFO_POINTER_W 4 -`define UART_FIFO_COUNTER_W 5 -// receiver fifo has width 11 because it has break, parity and framing error bits -`define UART_FIFO_REC_WIDTH 11 - - -`define VERBOSE_WB 0 // All activity on the WISHBONE is recorded -`define VERBOSE_LINE_STATUS 0 // Details about the lsr (line status register) -`define FAST_TEST 1 // 64/1024 packets are sent - - - - - - - diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_receiver.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_receiver.v deleted file mode 100644 index a11d374c..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_receiver.v +++ /dev/null @@ -1,485 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_receiver.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core receiver logic //// -//// //// -//// Known problems (limits): //// -//// None known //// -//// //// -//// To Do: //// -//// Thourough testing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_receiver.v,v $ -// Revision 1.31 2004/06/18 14:46:15 tadejm -// Brandl Tobias repaired a bug regarding frame error in receiver when brake is received. -// -// Revision 1.29 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.28 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.27 2001/12/30 20:39:13 mohor -// More than one character was stored in case of break. End of the break -// was not detected correctly. -// -// Revision 1.26 2001/12/20 13:28:27 mohor -// Missing declaration of rf_push_q fixed. -// -// Revision 1.25 2001/12/20 13:25:46 mohor -// rx push changed to be only one cycle wide. -// -// Revision 1.24 2001/12/19 08:03:34 mohor -// Warnings cleared. -// -// Revision 1.23 2001/12/19 07:33:54 mohor -// Synplicity was having troubles with the comment. -// -// Revision 1.22 2001/12/17 14:46:48 mohor -// overrun signal was moved to separate block because many sequential lsr -// reads were preventing data from being written to rx fifo. -// underrun signal was not used and was removed from the project. -// -// Revision 1.21 2001/12/13 10:31:16 mohor -// timeout irq must be set regardless of the rda irq (rda irq does not reset the -// timeout counter). -// -// Revision 1.20 2001/12/10 19:52:05 gorban -// Igor fixed break condition bugs -// -// Revision 1.19 2001/12/06 14:51:04 gorban -// Bug in LSR[0] is fixed. -// All WISHBONE signals are now sampled, so another wait-state is introduced on all transfers. -// -// Revision 1.18 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.17 2001/11/28 19:36:39 gorban -// Fixed: timeout and break didn't pay attention to current data format when counting time -// -// Revision 1.16 2001/11/27 22:17:09 gorban -// Fixed bug that prevented synthesis in uart_receiver.v -// -// Revision 1.15 2001/11/26 21:38:54 gorban -// Lots of fixes: -// Break condition wasn't handled correctly at all. -// LSR bits could lose their values. -// LSR value after reset was wrong. -// Timing of THRE interrupt signal corrected. -// LSR bit 0 timing corrected. -// -// Revision 1.14 2001/11/10 12:43:21 gorban -// Logic Synthesis bugs fixed. Some other minor changes -// -// Revision 1.13 2001/11/08 14:54:23 mohor -// Comments in Slovene language deleted, few small fixes for better work of -// old tools. IRQs need to be fix. -// -// Revision 1.12 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.11 2001/10/31 15:19:22 gorban -// Fixes to break and timeout conditions -// -// Revision 1.10 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.9 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.8 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.6 2001/06/23 11:21:48 gorban -// DL made 16-bit long. Fixed transmission/reception bugs. -// -// Revision 1.5 2001/06/02 14:28:14 gorban -// Fixed receiver and transmitter. Major bug fixed. -// -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/27 17:37:49 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.2 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.1 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:11+02 jacob -// Initial revision -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -module uart_receiver (clk, wb_rst_i, lcr, rf_pop, srx_pad_i, enable, - counter_t, rf_count, rf_data_out, rf_error_bit, rf_overrun, rx_reset, lsr_mask, rstate, rf_push_pulse); - -input clk; -input wb_rst_i; -input [7:0] lcr; -input rf_pop; -input srx_pad_i; -input enable; -input rx_reset; -input lsr_mask; - -output [9:0] counter_t; -output [`UART_FIFO_COUNTER_W-1:0] rf_count; -output [`UART_FIFO_REC_WIDTH-1:0] rf_data_out; -output rf_overrun; -output rf_error_bit; -output [3:0] rstate; -output rf_push_pulse; - -reg [3:0] rstate; -reg [3:0] rcounter16; -reg [2:0] rbit_counter; -reg [7:0] rshift; // receiver shift register -reg rparity; // received parity -reg rparity_error; -reg rframing_error; // framing error flag -reg rbit_in; -reg rparity_xor; -reg [7:0] counter_b; // counts the 0 (low) signals -reg rf_push_q; - -// RX FIFO signals -reg [`UART_FIFO_REC_WIDTH-1:0] rf_data_in; -wire [`UART_FIFO_REC_WIDTH-1:0] rf_data_out; -wire rf_push_pulse; -reg rf_push; -wire rf_pop; -wire rf_overrun; -wire [`UART_FIFO_COUNTER_W-1:0] rf_count; -wire rf_error_bit; // an error (parity or framing) is inside the fifo -wire break_error = (counter_b == 0); - -// RX FIFO instance -uart_rfifo #(`UART_FIFO_REC_WIDTH) fifo_rx( - .clk( clk ), - .wb_rst_i( wb_rst_i ), - .data_in( rf_data_in ), - .data_out( rf_data_out ), - .push( rf_push_pulse ), - .pop( rf_pop ), - .overrun( rf_overrun ), - .count( rf_count ), - .error_bit( rf_error_bit ), - .fifo_reset( rx_reset ), - .reset_status(lsr_mask) -); - -wire rcounter16_eq_7 = (rcounter16 == 4'd7); -wire rcounter16_eq_0 = (rcounter16 == 4'd0); -wire rcounter16_eq_1 = (rcounter16 == 4'd1); - -wire [3:0] rcounter16_minus_1 = rcounter16 - 1'b1; - -parameter sr_idle = 4'd0; -parameter sr_rec_start = 4'd1; -parameter sr_rec_bit = 4'd2; -parameter sr_rec_parity = 4'd3; -parameter sr_rec_stop = 4'd4; -parameter sr_check_parity = 4'd5; -parameter sr_rec_prepare = 4'd6; -parameter sr_end_bit = 4'd7; -parameter sr_ca_lc_parity = 4'd8; -parameter sr_wait1 = 4'd9; -parameter sr_push = 4'd10; - - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - begin - rstate <= #1 sr_idle; - rbit_in <= #1 1'b0; - rcounter16 <= #1 0; - rbit_counter <= #1 0; - rparity_xor <= #1 1'b0; - rframing_error <= #1 1'b0; - rparity_error <= #1 1'b0; - rparity <= #1 1'b0; - rshift <= #1 0; - rf_push <= #1 1'b0; - rf_data_in <= #1 0; - end - else - if (enable) - begin - case (rstate) - sr_idle : begin - rf_push <= #1 1'b0; - rf_data_in <= #1 0; - rcounter16 <= #1 4'b1110; - if (srx_pad_i==1'b0 & ~break_error) // detected a pulse (start bit?) - begin - rstate <= #1 sr_rec_start; - end - end - sr_rec_start : begin - rf_push <= #1 1'b0; - if (rcounter16_eq_7) // check the pulse - if (srx_pad_i==1'b1) // no start bit - rstate <= #1 sr_idle; - else // start bit detected - rstate <= #1 sr_rec_prepare; - rcounter16 <= #1 rcounter16_minus_1; - end - sr_rec_prepare:begin - case (lcr[/*`UART_LC_BITS*/1:0]) // number of bits in a word - 2'b00 : rbit_counter <= #1 3'b100; - 2'b01 : rbit_counter <= #1 3'b101; - 2'b10 : rbit_counter <= #1 3'b110; - 2'b11 : rbit_counter <= #1 3'b111; - endcase - if (rcounter16_eq_0) - begin - rstate <= #1 sr_rec_bit; - rcounter16 <= #1 4'b1110; - rshift <= #1 0; - end - else - rstate <= #1 sr_rec_prepare; - rcounter16 <= #1 rcounter16_minus_1; - end - sr_rec_bit : begin - if (rcounter16_eq_0) - rstate <= #1 sr_end_bit; - if (rcounter16_eq_7) // read the bit - case (lcr[/*`UART_LC_BITS*/1:0]) // number of bits in a word - 2'b00 : rshift[4:0] <= #1 {srx_pad_i, rshift[4:1]}; - 2'b01 : rshift[5:0] <= #1 {srx_pad_i, rshift[5:1]}; - 2'b10 : rshift[6:0] <= #1 {srx_pad_i, rshift[6:1]}; - 2'b11 : rshift[7:0] <= #1 {srx_pad_i, rshift[7:1]}; - endcase - rcounter16 <= #1 rcounter16_minus_1; - end - sr_end_bit : begin - if (rbit_counter==3'b0) // no more bits in word - if (lcr[`UART_LC_PE]) // choose state based on parity - rstate <= #1 sr_rec_parity; - else - begin - rstate <= #1 sr_rec_stop; - rparity_error <= #1 1'b0; // no parity - no error :) - end - else // else we have more bits to read - begin - rstate <= #1 sr_rec_bit; - rbit_counter <= #1 rbit_counter - 1'b1; - end - rcounter16 <= #1 4'b1110; - end - sr_rec_parity: begin - if (rcounter16_eq_7) // read the parity - begin - rparity <= #1 srx_pad_i; - rstate <= #1 sr_ca_lc_parity; - end - rcounter16 <= #1 rcounter16_minus_1; - end - sr_ca_lc_parity : begin // rcounter equals 6 - rcounter16 <= #1 rcounter16_minus_1; - rparity_xor <= #1 ^{rshift,rparity}; // calculate parity on all incoming data - rstate <= #1 sr_check_parity; - end - sr_check_parity: begin // rcounter equals 5 - case ({lcr[`UART_LC_EP],lcr[`UART_LC_SP]}) - 2'b00: rparity_error <= #1 rparity_xor == 0; // no error if parity 1 - 2'b01: rparity_error <= #1 ~rparity; // parity should sticked to 1 - 2'b10: rparity_error <= #1 rparity_xor == 1; // error if parity is odd - 2'b11: rparity_error <= #1 rparity; // parity should be sticked to 0 - endcase - rcounter16 <= #1 rcounter16_minus_1; - rstate <= #1 sr_wait1; - end - sr_wait1 : if (rcounter16_eq_0) - begin - rstate <= #1 sr_rec_stop; - rcounter16 <= #1 4'b1110; - end - else - rcounter16 <= #1 rcounter16_minus_1; - sr_rec_stop : begin - if (rcounter16_eq_7) // read the parity - begin - rframing_error <= #1 !srx_pad_i; // no framing error if input is 1 (stop bit) - rstate <= #1 sr_push; - end - rcounter16 <= #1 rcounter16_minus_1; - end - sr_push : begin -/////////////////////////////////////// -// $display($time, ": received: %b", rf_data_in); - if(srx_pad_i | break_error) - begin - if(break_error) - rf_data_in <= #1 {8'b0, 3'b100}; // break input (empty character) to receiver FIFO - else - rf_data_in <= #1 {rshift, 1'b0, rparity_error, rframing_error}; - rf_push <= #1 1'b1; - rstate <= #1 sr_idle; - end - else if(~rframing_error) // There's always a framing before break_error -> wait for break or srx_pad_i - begin - rf_data_in <= #1 {rshift, 1'b0, rparity_error, rframing_error}; - rf_push <= #1 1'b1; - rcounter16 <= #1 4'b1110; - rstate <= #1 sr_rec_start; - end - - end - default : rstate <= #1 sr_idle; - endcase - end // if (enable) -end // always of receiver - -always @ (posedge clk or posedge wb_rst_i) -begin - if(wb_rst_i) - rf_push_q <= 0; - else - rf_push_q <= #1 rf_push; -end - -assign rf_push_pulse = rf_push & ~rf_push_q; - - -// -// Break condition detection. -// Works in conjuction with the receiver state machine - -reg [9:0] toc_value; // value to be set to timeout counter - -always @(lcr) - case (lcr[3:0]) - 4'b0000 : toc_value = 447; // 7 bits - 4'b0100 : toc_value = 479; // 7.5 bits - 4'b0001, 4'b1000 : toc_value = 511; // 8 bits - 4'b1100 : toc_value = 543; // 8.5 bits - 4'b0010, 4'b0101, 4'b1001 : toc_value = 575; // 9 bits - 4'b0011, 4'b0110, 4'b1010, 4'b1101 : toc_value = 639; // 10 bits - 4'b0111, 4'b1011, 4'b1110 : toc_value = 703; // 11 bits - 4'b1111 : toc_value = 767; // 12 bits - endcase // case(lcr[3:0]) - -wire [7:0] brc_value; // value to be set to break counter -assign brc_value = toc_value[9:2]; // the same as timeout but 1 insead of 4 character times - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - counter_b <= #1 8'd159; - else - if (srx_pad_i) - counter_b <= #1 brc_value; // character time length - 1 - else - if(enable & counter_b != 8'b0) // only work on enable times break not reached. - counter_b <= #1 counter_b - 1; // decrement break counter -end // always of break condition detection - -/// -/// Timeout condition detection -reg [9:0] counter_t; // counts the timeout condition clocks - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - counter_t <= #1 10'd639; // 10 bits for the default 8N1 - else - if(rf_push_pulse || rf_pop || rf_count == 0) // counter is reset when RX FIFO is empty, accessed or above trigger level - counter_t <= #1 toc_value; - else - if (enable && counter_t != 10'b0) // we don't want to underflow - counter_t <= #1 counter_t - 1; -end - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_regs.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_regs.v deleted file mode 100644 index 087524ab..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_regs.v +++ /dev/null @@ -1,903 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_regs.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// Registers of the uart 16550 core //// -//// //// -//// Known problems (limits): //// -//// Inserts 1 wait state in all WISHBONE transfers //// -//// //// -//// To Do: //// -//// Nothing or verification. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: (See log for the revision history //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_regs.v,v $ -// Revision 1.42 2004/11/22 09:21:59 igorm -// Timeout interrupt should be generated only when there is at least ony -// character in the fifo. -// -// Revision 1.41 2004/05/21 11:44:41 tadejm -// Added synchronizer flops for RX input. -// -// Revision 1.40 2003/06/11 16:37:47 gorban -// This fixes errors in some cases when data is being read and put to the FIFO at the same time. Patch is submitted by Scott Furman. Update is very recommended. -// -// Revision 1.39 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.38 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.37 2001/12/27 13:24:09 mohor -// lsr[7] was not showing overrun errors. -// -// Revision 1.36 2001/12/20 13:25:46 mohor -// rx push changed to be only one cycle wide. -// -// Revision 1.35 2001/12/19 08:03:34 mohor -// Warnings cleared. -// -// Revision 1.34 2001/12/19 07:33:54 mohor -// Synplicity was having troubles with the comment. -// -// Revision 1.33 2001/12/17 10:14:43 mohor -// Things related to msr register changed. After THRE IRQ occurs, and one -// character is written to the transmit fifo, the detection of the THRE bit in the -// LSR is delayed for one character time. -// -// Revision 1.32 2001/12/14 13:19:24 mohor -// MSR register fixed. -// -// Revision 1.31 2001/12/14 10:06:58 mohor -// After reset modem status register MSR should be reset. -// -// Revision 1.30 2001/12/13 10:09:13 mohor -// thre irq should be cleared only when being source of interrupt. -// -// Revision 1.29 2001/12/12 09:05:46 mohor -// LSR status bit 0 was not cleared correctly in case of reseting the FCR (rx fifo). -// -// Revision 1.28 2001/12/10 19:52:41 gorban -// Scratch register added -// -// Revision 1.27 2001/12/06 14:51:04 gorban -// Bug in LSR[0] is fixed. -// All WISHBONE signals are now sampled, so another wait-state is introduced on all transfers. -// -// Revision 1.26 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.25 2001/11/28 19:36:39 gorban -// Fixed: timeout and break didn't pay attention to current data format when counting time -// -// Revision 1.24 2001/11/26 21:38:54 gorban -// Lots of fixes: -// Break condition wasn't handled correctly at all. -// LSR bits could lose their values. -// LSR value after reset was wrong. -// Timing of THRE interrupt signal corrected. -// LSR bit 0 timing corrected. -// -// Revision 1.23 2001/11/12 21:57:29 gorban -// fixed more typo bugs -// -// Revision 1.22 2001/11/12 15:02:28 mohor -// lsr1r error fixed. -// -// Revision 1.21 2001/11/12 14:57:27 mohor -// ti_int_pnd error fixed. -// -// Revision 1.20 2001/11/12 14:50:27 mohor -// ti_int_d error fixed. -// -// Revision 1.19 2001/11/10 12:43:21 gorban -// Logic Synthesis bugs fixed. Some other minor changes -// -// Revision 1.18 2001/11/08 14:54:23 mohor -// Comments in Slovene language deleted, few small fixes for better work of -// old tools. IRQs need to be fix. -// -// Revision 1.17 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.16 2001/11/02 09:55:16 mohor -// no message -// -// Revision 1.15 2001/10/31 15:19:22 gorban -// Fixes to break and timeout conditions -// -// Revision 1.14 2001/10/29 17:00:46 gorban -// fixed parity sending and tx_fifo resets over- and underrun -// -// Revision 1.13 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.12 2001/10/19 16:21:40 gorban -// Changes data_out to be synchronous again as it should have been. -// -// Revision 1.11 2001/10/18 20:35:45 gorban -// small fix -// -// Revision 1.10 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.9 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.10 2001/06/23 11:21:48 gorban -// DL made 16-bit long. Fixed transmission/reception bugs. -// -// Revision 1.9 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.8 2001/05/29 20:05:04 gorban -// Fixed some bugs and synthesis problems. -// -// Revision 1.7 2001/05/27 17:37:49 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.6 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.5 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:11+02 jacob -// Initial revision -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -`define UART_DL1 7:0 -`define UART_DL2 15:8 - -module uart_regs (clk, - wb_rst_i, wb_addr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_re_i, - -// additional signals - modem_inputs, - stx_pad_o, srx_pad_i, - -`ifdef DATA_BUS_WIDTH_8 -`else -// debug interface signals enabled -ier, iir, fcr, mcr, lcr, msr, lsr, rf_count, tf_count, tstate, rstate, -`endif - rts_pad_o, dtr_pad_o, int_o -`ifdef UART_HAS_BAUDRATE_OUTPUT - , baud_o -`endif - - ); - -input clk; -input wb_rst_i; -input [`UART_ADDR_WIDTH-1:0] wb_addr_i; -input [7:0] wb_dat_i; -output [7:0] wb_dat_o; -input wb_we_i; -input wb_re_i; - -output stx_pad_o; -input srx_pad_i; - -input [3:0] modem_inputs; -output rts_pad_o; -output dtr_pad_o; -output int_o; -`ifdef UART_HAS_BAUDRATE_OUTPUT -output baud_o; -`endif - -`ifdef DATA_BUS_WIDTH_8 -`else -// if 32-bit databus and debug interface are enabled -output [3:0] ier; -output [3:0] iir; -output [1:0] fcr; /// bits 7 and 6 of fcr. Other bits are ignored -output [4:0] mcr; -output [7:0] lcr; -output [7:0] msr; -output [7:0] lsr; -output [`UART_FIFO_COUNTER_W-1:0] rf_count; -output [`UART_FIFO_COUNTER_W-1:0] tf_count; -output [2:0] tstate; -output [3:0] rstate; - -`endif - -wire [3:0] modem_inputs; -reg enable; -`ifdef UART_HAS_BAUDRATE_OUTPUT -assign baud_o = enable; // baud_o is actually the enable signal -`endif - - -wire stx_pad_o; // received from transmitter module -wire srx_pad_i; -wire srx_pad; - -reg [7:0] wb_dat_o; - -wire [`UART_ADDR_WIDTH-1:0] wb_addr_i; -wire [7:0] wb_dat_i; - - -reg [3:0] ier; -reg [3:0] iir; -reg [1:0] fcr; /// bits 7 and 6 of fcr. Other bits are ignored -reg [4:0] mcr; -reg [7:0] lcr; -reg [7:0] msr; -reg [15:0] dl; // 32-bit divisor latch -reg [7:0] scratch; // UART scratch register -reg start_dlc; // activate dlc on writing to UART_DL1 -reg lsr_mask_d; // delay for lsr_mask condition -reg msi_reset; // reset MSR 4 lower bits indicator -//reg threi_clear; // THRE interrupt clear flag -reg [15:0] dlc; // 32-bit divisor latch counter -reg int_o; - -reg [3:0] trigger_level; // trigger level of the receiver FIFO -reg rx_reset; -reg tx_reset; - -wire dlab; // divisor latch access bit -wire cts_pad_i, dsr_pad_i, ri_pad_i, dcd_pad_i; // modem status bits -wire loopback; // loopback bit (MCR bit 4) -wire cts, dsr, ri, dcd; // effective signals -wire cts_c, dsr_c, ri_c, dcd_c; // Complement effective signals (considering loopback) -wire rts_pad_o, dtr_pad_o; // modem control outputs - -// LSR bits wires and regs -wire [7:0] lsr; -wire lsr0, lsr1, lsr2, lsr3, lsr4, lsr5, lsr6, lsr7; -reg lsr0r, lsr1r, lsr2r, lsr3r, lsr4r, lsr5r, lsr6r, lsr7r; -wire lsr_mask; // lsr_mask - -// -// ASSINGS -// - -assign lsr[7:0] = { lsr7r, lsr6r, lsr5r, lsr4r, lsr3r, lsr2r, lsr1r, lsr0r }; - -assign {cts_pad_i, dsr_pad_i, ri_pad_i, dcd_pad_i} = modem_inputs; -assign {cts, dsr, ri, dcd} = ~{cts_pad_i,dsr_pad_i,ri_pad_i,dcd_pad_i}; - -assign {cts_c, dsr_c, ri_c, dcd_c} = loopback ? {mcr[`UART_MC_RTS],mcr[`UART_MC_DTR],mcr[`UART_MC_OUT1],mcr[`UART_MC_OUT2]} - : {cts_pad_i,dsr_pad_i,ri_pad_i,dcd_pad_i}; - -assign dlab = lcr[`UART_LC_DL]; -assign loopback = mcr[4]; - -// assign modem outputs -assign rts_pad_o = mcr[`UART_MC_RTS]; -assign dtr_pad_o = mcr[`UART_MC_DTR]; - -// Interrupt signals -wire rls_int; // receiver line status interrupt -wire rda_int; // receiver data available interrupt -wire ti_int; // timeout indicator interrupt -wire thre_int; // transmitter holding register empty interrupt -wire ms_int; // modem status interrupt - -// FIFO signals -reg tf_push; -reg rf_pop; -wire [`UART_FIFO_REC_WIDTH-1:0] rf_data_out; -wire rf_error_bit; // an error (parity or framing) is inside the fifo -wire [`UART_FIFO_COUNTER_W-1:0] rf_count; -wire [`UART_FIFO_COUNTER_W-1:0] tf_count; -wire [2:0] tstate; -wire [3:0] rstate; -wire [9:0] counter_t; - -wire thre_set_en; // THRE status is delayed one character time when a character is written to fifo. -reg [7:0] block_cnt; // While counter counts, THRE status is blocked (delayed one character cycle) -reg [7:0] block_value; // One character length minus stop bit - -// Transmitter Instance -wire serial_out; - -uart_transmitter transmitter(clk, wb_rst_i, lcr, tf_push, wb_dat_i, enable, serial_out, tstate, tf_count, tx_reset, lsr_mask); - - // Synchronizing and sampling serial RX input - uart_sync_flops i_uart_sync_flops - ( - .rst_i (wb_rst_i), - .clk_i (clk), - .stage1_rst_i (1'b0), - .stage1_clk_en_i (1'b1), - .async_dat_i (srx_pad_i), - .sync_dat_o (srx_pad) - ); - defparam i_uart_sync_flops.width = 1; - defparam i_uart_sync_flops.init_value = 1'b1; - -// handle loopback -wire serial_in = loopback ? serial_out : srx_pad; -assign stx_pad_o = loopback ? 1'b1 : serial_out; - - wire rf_push_pulse, rf_overrun; -// Receiver Instance -uart_receiver receiver(clk, wb_rst_i, lcr, rf_pop, serial_in, enable, - counter_t, rf_count, rf_data_out, rf_error_bit, rf_overrun, rx_reset, lsr_mask, rstate, rf_push_pulse); - - -// Asynchronous reading here because the outputs are sampled in uart_wb.v file -always @(dl or dlab or ier or iir or scratch - or lcr or lsr or msr or rf_data_out or wb_addr_i or wb_re_i) // asynchrounous reading -begin - case (wb_addr_i) - `UART_REG_RB : wb_dat_o = dlab ? dl[`UART_DL1] : rf_data_out[10:3]; - `UART_REG_IE : wb_dat_o = dlab ? dl[`UART_DL2] : ier; - `UART_REG_II : wb_dat_o = {4'b1100,iir}; - `UART_REG_LC : wb_dat_o = lcr; - `UART_REG_LS : wb_dat_o = lsr; - `UART_REG_MS : wb_dat_o = msr; - `UART_REG_SR : wb_dat_o = scratch; - default: wb_dat_o = 8'b0; // ?? - endcase // case(wb_addr_i) -end // always @ (dl or dlab or ier or iir or scratch... - - -// rf_pop signal handling -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - rf_pop <= #1 0; - else - if (rf_pop) // restore the signal to 0 after one clock cycle - rf_pop <= #1 0; - else - if (wb_re_i && wb_addr_i == `UART_REG_RB && !dlab) - rf_pop <= #1 1; // advance read pointer -end - -wire lsr_mask_condition; -wire iir_read; -wire msr_read; -wire fifo_read; -wire fifo_write; - -assign lsr_mask_condition = (wb_re_i && wb_addr_i == `UART_REG_LS && !dlab); -assign iir_read = (wb_re_i && wb_addr_i == `UART_REG_II && !dlab); -assign msr_read = (wb_re_i && wb_addr_i == `UART_REG_MS && !dlab); -assign fifo_read = (wb_re_i && wb_addr_i == `UART_REG_RB && !dlab); -assign fifo_write = (wb_we_i && wb_addr_i == `UART_REG_TR && !dlab); - -// lsr_mask_d delayed signal handling -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - lsr_mask_d <= #1 0; - else // reset bits in the Line Status Register - lsr_mask_d <= #1 lsr_mask_condition; -end - -// lsr_mask is rise detected -assign lsr_mask = lsr_mask_condition && ~lsr_mask_d; - -// msi_reset signal handling -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - msi_reset <= #1 1; - else - if (msi_reset) - msi_reset <= #1 0; - else - if (msr_read) - msi_reset <= #1 1; // reset bits in Modem Status Register -end - - -// -// WRITES AND RESETS // -// -// Line Control Register -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - lcr <= #1 8'b00000011; // 8n1 setting - else - if (wb_we_i && wb_addr_i==`UART_REG_LC) - lcr <= #1 wb_dat_i; - -// Interrupt Enable Register or UART_DL2 -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - begin - ier <= #1 4'b0000; // no interrupts after reset - dl[`UART_DL2] <= #1 8'b0; - end - else - if (wb_we_i && wb_addr_i==`UART_REG_IE) - if (dlab) - begin - dl[`UART_DL2] <= #1 wb_dat_i; - end - else - ier <= #1 wb_dat_i[3:0]; // ier uses only 4 lsb - - -// FIFO Control Register and rx_reset, tx_reset signals -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) begin - fcr <= #1 2'b11; - rx_reset <= #1 0; - tx_reset <= #1 0; - end else - if (wb_we_i && wb_addr_i==`UART_REG_FC) begin - fcr <= #1 wb_dat_i[7:6]; - rx_reset <= #1 wb_dat_i[1]; - tx_reset <= #1 wb_dat_i[2]; - end else begin - rx_reset <= #1 0; - tx_reset <= #1 0; - end - -// Modem Control Register -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - mcr <= #1 5'b0; - else - if (wb_we_i && wb_addr_i==`UART_REG_MC) - mcr <= #1 wb_dat_i[4:0]; - -// Scratch register -// Line Control Register -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - scratch <= #1 0; // 8n1 setting - else - if (wb_we_i && wb_addr_i==`UART_REG_SR) - scratch <= #1 wb_dat_i; - -// TX_FIFO or UART_DL1 -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - begin - dl[`UART_DL1] <= #1 8'b0; - tf_push <= #1 1'b0; - start_dlc <= #1 1'b0; - end - else - if (wb_we_i && wb_addr_i==`UART_REG_TR) - if (dlab) - begin - dl[`UART_DL1] <= #1 wb_dat_i; - start_dlc <= #1 1'b1; // enable DL counter - tf_push <= #1 1'b0; - end - else - begin - tf_push <= #1 1'b1; - start_dlc <= #1 1'b0; - end // else: !if(dlab) - else - begin - start_dlc <= #1 1'b0; - tf_push <= #1 1'b0; - end // else: !if(dlab) - -// Receiver FIFO trigger level selection logic (asynchronous mux) -always @(fcr) - case (fcr[`UART_FC_TL]) - 2'b00 : trigger_level = 1; - 2'b01 : trigger_level = 4; - 2'b10 : trigger_level = 8; - 2'b11 : trigger_level = 14; - endcase // case(fcr[`UART_FC_TL]) - -// -// STATUS REGISTERS // -// - -// Modem Status Register -reg [3:0] delayed_modem_signals; -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - begin - msr <= #1 0; - delayed_modem_signals[3:0] <= #1 0; - end - else begin - msr[`UART_MS_DDCD:`UART_MS_DCTS] <= #1 msi_reset ? 4'b0 : - msr[`UART_MS_DDCD:`UART_MS_DCTS] | ({dcd, ri, dsr, cts} ^ delayed_modem_signals[3:0]); - msr[`UART_MS_CDCD:`UART_MS_CCTS] <= #1 {dcd_c, ri_c, dsr_c, cts_c}; - delayed_modem_signals[3:0] <= #1 {dcd, ri, dsr, cts}; - end -end - - -// Line Status Register - -// activation conditions -assign lsr0 = (rf_count==0 && rf_push_pulse); // data in receiver fifo available set condition -assign lsr1 = rf_overrun; // Receiver overrun error -assign lsr2 = rf_data_out[1]; // parity error bit -assign lsr3 = rf_data_out[0]; // framing error bit -assign lsr4 = rf_data_out[2]; // break error in the character - -// Why is this here? Empty should be signalled in the fifo itself, - // to properly account for fifo length parameters - -assign lsr5 = (tf_count!=5'b01111); // transmitter fifo is not full -assign lsr6 = (tf_count==5'b0 && thre_set_en && (tstate == /*`S_IDLE */ 0)); // transmitter completely empty -assign lsr7 = rf_error_bit | rf_overrun; - -// lsr bit0 (receiver data available) -reg lsr0_d; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr0_d <= #1 0; - else lsr0_d <= #1 lsr0; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr0r <= #1 0; - else lsr0r <= #1 (rf_count==1 && rf_pop && !rf_push_pulse || rx_reset) ? 0 : // deassert condition - lsr0r || (lsr0 && ~lsr0_d); // set on rise of lsr0 and keep asserted until deasserted - -// lsr bit 1 (receiver overrun) -reg lsr1_d; // delayed - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr1_d <= #1 0; - else lsr1_d <= #1 lsr1; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr1r <= #1 0; - else lsr1r <= #1 lsr_mask ? 0 : lsr1r || (lsr1 && ~lsr1_d); // set on rise - -// lsr bit 2 (parity error) -reg lsr2_d; // delayed - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr2_d <= #1 0; - else lsr2_d <= #1 lsr2; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr2r <= #1 0; - else lsr2r <= #1 lsr_mask ? 0 : lsr2r || (lsr2 && ~lsr2_d); // set on rise - -// lsr bit 3 (framing error) -reg lsr3_d; // delayed - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr3_d <= #1 0; - else lsr3_d <= #1 lsr3; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr3r <= #1 0; - else lsr3r <= #1 lsr_mask ? 0 : lsr3r || (lsr3 && ~lsr3_d); // set on rise - -// lsr bit 4 (break indicator) -reg lsr4_d; // delayed - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr4_d <= #1 0; - else lsr4_d <= #1 lsr4; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr4r <= #1 0; - else lsr4r <= #1 lsr_mask ? 0 : lsr4r || (lsr4 && ~lsr4_d); - -// lsr bit 5 (transmitter fifo is empty) -reg lsr5_d; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr5_d <= #1 1; - else lsr5_d <= #1 lsr5; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr5r <= #1 1; - else lsr5r <= #1 lsr5; - //else lsr5r <= #1 (fifo_write) ? 0 : lsr5r || (lsr5 && ~lsr5_d); - -// lsr bit 6 (transmitter empty indicator) -reg lsr6_d; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr6_d <= #1 1; - else lsr6_d <= #1 lsr6; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr6r <= #1 1; - else lsr6r <= #1 (fifo_write) ? 0 : lsr6r || (lsr6 && ~lsr6_d); - -// lsr bit 7 (error in fifo) -reg lsr7_d; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr7_d <= #1 0; - else lsr7_d <= #1 lsr7; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) lsr7r <= #1 0; - else lsr7r <= #1 lsr_mask ? 0 : lsr7r || (lsr7 && ~lsr7_d); - -// Frequency divider -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - dlc <= #1 0; - else - if (start_dlc | ~ (|dlc)) - dlc <= #1 dl - 1; // preset counter - else - dlc <= #1 dlc - 1; // decrement counter -end - -// Enable signal generation logic -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - enable <= #1 1'b0; - else - if (|dl & ~(|dlc)) // dl>0 & dlc==0 - enable <= #1 1'b1; - else - enable <= #1 1'b0; -end - -// Delaying THRE status for one character cycle after a character is written to an empty fifo. -always @(lcr) - case (lcr[3:0]) - 4'b0000 : block_value = 95; // 6 bits - 4'b0100 : block_value = 103; // 6.5 bits - 4'b0001, 4'b1000 : block_value = 111; // 7 bits - 4'b1100 : block_value = 119; // 7.5 bits - 4'b0010, 4'b0101, 4'b1001 : block_value = 127; // 8 bits - 4'b0011, 4'b0110, 4'b1010, 4'b1101 : block_value = 143; // 9 bits - 4'b0111, 4'b1011, 4'b1110 : block_value = 159; // 10 bits - 4'b1111 : block_value = 175; // 11 bits - endcase // case(lcr[3:0]) - -// Counting time of one character minus stop bit -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - block_cnt <= #1 8'd0; - else - if(lsr5r & fifo_write) // THRE bit set & write to fifo occured - block_cnt <= #1 block_value; - else - if (enable & block_cnt != 8'b0) // only work on enable times - block_cnt <= #1 block_cnt - 1; // decrement break counter -end // always of break condition detection - -// Generating THRE status enable signal -assign thre_set_en = ~(|block_cnt); - - -// -// INTERRUPT LOGIC -// - -assign rls_int = ier[`UART_IE_RLS] && (lsr[`UART_LS_OE] || lsr[`UART_LS_PE] || lsr[`UART_LS_FE] || lsr[`UART_LS_BI]); -assign rda_int = ier[`UART_IE_RDA] && (rf_count >= {1'b0,trigger_level}); -assign thre_int = ier[`UART_IE_THRE] && lsr[`UART_LS_TFE]; -assign ms_int = ier[`UART_IE_MS] && (| msr[3:0]); -assign ti_int = ier[`UART_IE_RDA] && (counter_t == 10'b0) && (|rf_count); - -reg rls_int_d; -reg thre_int_d; -reg ms_int_d; -reg ti_int_d; -reg rda_int_d; - -// delay lines -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) rls_int_d <= #1 0; - else rls_int_d <= #1 rls_int; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) rda_int_d <= #1 0; - else rda_int_d <= #1 rda_int; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) thre_int_d <= #1 0; - else thre_int_d <= #1 thre_int; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) ms_int_d <= #1 0; - else ms_int_d <= #1 ms_int; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) ti_int_d <= #1 0; - else ti_int_d <= #1 ti_int; - -// rise detection signals - -wire rls_int_rise; -wire thre_int_rise; -wire ms_int_rise; -wire ti_int_rise; -wire rda_int_rise; - -assign rda_int_rise = rda_int & ~rda_int_d; -assign rls_int_rise = rls_int & ~rls_int_d; -assign thre_int_rise = thre_int & ~thre_int_d; -assign ms_int_rise = ms_int & ~ms_int_d; -assign ti_int_rise = ti_int & ~ti_int_d; - -// interrupt pending flags -reg rls_int_pnd; -reg rda_int_pnd; -reg thre_int_pnd; -reg ms_int_pnd; -reg ti_int_pnd; - -// interrupt pending flags assignments -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) rls_int_pnd <= #1 0; - else - rls_int_pnd <= #1 lsr_mask ? 0 : // reset condition - rls_int_rise ? 1 : // latch condition - rls_int_pnd && ier[`UART_IE_RLS]; // default operation: remove if masked - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) rda_int_pnd <= #1 0; - else - rda_int_pnd <= #1 ((rf_count == {1'b0,trigger_level}) && fifo_read) ? 0 : // reset condition - rda_int_rise ? 1 : // latch condition - rda_int_pnd && ier[`UART_IE_RDA]; // default operation: remove if masked - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) thre_int_pnd <= #1 0; - else - thre_int_pnd <= #1 fifo_write || (iir_read & ~iir[`UART_II_IP] & iir[`UART_II_II] == `UART_II_THRE)? 0 : - thre_int_rise ? 1 : - thre_int_pnd && ier[`UART_IE_THRE]; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) ms_int_pnd <= #1 0; - else - ms_int_pnd <= #1 msr_read ? 0 : - ms_int_rise ? 1 : - ms_int_pnd && ier[`UART_IE_MS]; - -always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) ti_int_pnd <= #1 0; - else - ti_int_pnd <= #1 fifo_read ? 0 : - ti_int_rise ? 1 : - ti_int_pnd && ier[`UART_IE_RDA]; -// end of pending flags - -// INT_O logic -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - int_o <= #1 1'b0; - else - int_o <= #1 - rls_int_pnd ? ~lsr_mask : - rda_int_pnd ? 1 : - ti_int_pnd ? ~fifo_read : - thre_int_pnd ? !(fifo_write & iir_read) : - ms_int_pnd ? ~msr_read : - 0; // if no interrupt are pending -end - - -// Interrupt Identification register -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - iir <= #1 1; - else - if (rls_int_pnd) // interrupt is pending - begin - iir[`UART_II_II] <= #1 `UART_II_RLS; // set identification register to correct value - iir[`UART_II_IP] <= #1 1'b0; // and clear the IIR bit 0 (interrupt pending) - end else // the sequence of conditions determines priority of interrupt identification - if (rda_int) - begin - iir[`UART_II_II] <= #1 `UART_II_RDA; - iir[`UART_II_IP] <= #1 1'b0; - end - else if (ti_int_pnd) - begin - iir[`UART_II_II] <= #1 `UART_II_TI; - iir[`UART_II_IP] <= #1 1'b0; - end - else if (thre_int_pnd) - begin - iir[`UART_II_II] <= #1 `UART_II_THRE; - iir[`UART_II_IP] <= #1 1'b0; - end - else if (ms_int_pnd) - begin - iir[`UART_II_II] <= #1 `UART_II_MS; - iir[`UART_II_IP] <= #1 1'b0; - end else // no interrupt is pending - begin - iir[`UART_II_II] <= #1 0; - iir[`UART_II_IP] <= #1 1'b1; - end -end - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_rfifo.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_rfifo.v deleted file mode 100644 index 21e9d25e..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_rfifo.v +++ /dev/null @@ -1,323 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_rfifo.v (Modified from uart_fifo.v) //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core receiver FIFO //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2002/07/22 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_rfifo.v,v $ -// Revision 1.4 2003/07/11 18:20:26 gorban -// added clearing the receiver fifo statuses on resets -// -// Revision 1.3 2003/06/11 16:37:47 gorban -// This fixes errors in some cases when data is being read and put to the FIFO at the same time. Patch is submitted by Scott Furman. Update is very recommended. -// -// Revision 1.2 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.1 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.16 2001/12/20 13:25:46 mohor -// rx push changed to be only one cycle wide. -// -// Revision 1.15 2001/12/18 09:01:07 mohor -// Bug that was entered in the last update fixed (rx state machine). -// -// Revision 1.14 2001/12/17 14:46:48 mohor -// overrun signal was moved to separate block because many sequential lsr -// reads were preventing data from being written to rx fifo. -// underrun signal was not used and was removed from the project. -// -// Revision 1.13 2001/11/26 21:38:54 gorban -// Lots of fixes: -// Break condition wasn't handled correctly at all. -// LSR bits could lose their values. -// LSR value after reset was wrong. -// Timing of THRE interrupt signal corrected. -// LSR bit 0 timing corrected. -// -// Revision 1.12 2001/11/08 14:54:23 mohor -// Comments in Slovene language deleted, few small fixes for better work of -// old tools. IRQs need to be fix. -// -// Revision 1.11 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.10 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.9 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.8 2001/08/24 08:48:10 mohor -// FIFO was not cleared after the data was read bug fixed. -// -// Revision 1.7 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.3 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/27 17:37:48 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -module uart_rfifo (clk, - wb_rst_i, data_in, data_out, -// Control signals - push, // push strobe, active high - pop, // pop strobe, active high -// status signals - overrun, - count, - error_bit, - fifo_reset, - reset_status - ); - - -// FIFO parameters -parameter fifo_width = `UART_FIFO_WIDTH; -parameter fifo_depth = `UART_FIFO_DEPTH; -parameter fifo_pointer_w = `UART_FIFO_POINTER_W; -parameter fifo_counter_w = `UART_FIFO_COUNTER_W; - -input clk; -input wb_rst_i; -input push; -input pop; -input [fifo_width-1:0] data_in; -input fifo_reset; -input reset_status; - -output [fifo_width-1:0] data_out; -output overrun; -output [fifo_counter_w-1:0] count; -output error_bit; - -wire [fifo_width-1:0] data_out; -wire [7:0] data8_out; -// flags FIFO -reg [2:0] fifo[fifo_depth-1:0]; - -// FIFO pointers -reg [fifo_pointer_w-1:0] top; -reg [fifo_pointer_w-1:0] bottom; - -reg [fifo_counter_w-1:0] count; -reg overrun; - -wire [fifo_pointer_w-1:0] top_plus_1 = top + 1'b1; - -raminfr #(fifo_pointer_w,8,fifo_depth) rfifo - (.clk(clk), - .we(push), - .a(top), - .dpra(bottom), - .di(data_in[fifo_width-1:fifo_width-8]), - .dpo(data8_out) - ); - -always @(posedge clk or posedge wb_rst_i) // synchronous FIFO -begin - if (wb_rst_i) - begin - top <= #1 0; - bottom <= #1 1'b0; - count <= #1 0; - fifo[0] <= #1 0; - fifo[1] <= #1 0; - fifo[2] <= #1 0; - fifo[3] <= #1 0; - fifo[4] <= #1 0; - fifo[5] <= #1 0; - fifo[6] <= #1 0; - fifo[7] <= #1 0; - fifo[8] <= #1 0; - fifo[9] <= #1 0; - fifo[10] <= #1 0; - fifo[11] <= #1 0; - fifo[12] <= #1 0; - fifo[13] <= #1 0; - fifo[14] <= #1 0; - fifo[15] <= #1 0; - end - else - if (fifo_reset) begin - top <= #1 0; - bottom <= #1 1'b0; - count <= #1 0; - fifo[0] <= #1 0; - fifo[1] <= #1 0; - fifo[2] <= #1 0; - fifo[3] <= #1 0; - fifo[4] <= #1 0; - fifo[5] <= #1 0; - fifo[6] <= #1 0; - fifo[7] <= #1 0; - fifo[8] <= #1 0; - fifo[9] <= #1 0; - fifo[10] <= #1 0; - fifo[11] <= #1 0; - fifo[12] <= #1 0; - fifo[13] <= #1 0; - fifo[14] <= #1 0; - fifo[15] <= #1 0; - end - else - begin - case ({push, pop}) - 2'b10 : if (count0) - begin - fifo[bottom] <= #1 0; - bottom <= #1 bottom + 1'b1; - count <= #1 count - 1'b1; - end - 2'b11 : begin - bottom <= #1 bottom + 1'b1; - top <= #1 top_plus_1; - fifo[top] <= #1 data_in[2:0]; - end - default: ; - endcase - end -end // always - -always @(posedge clk or posedge wb_rst_i) // synchronous FIFO -begin - if (wb_rst_i) - overrun <= #1 1'b0; - else - if(fifo_reset | reset_status) - overrun <= #1 1'b0; - else - if(push & ~pop & (count==fifo_depth)) - overrun <= #1 1'b1; -end // always - - -// please note though that data_out is only valid one clock after pop signal -assign data_out = {data8_out,fifo[bottom]}; - -// Additional logic for detection of error conditions (parity and framing) inside the FIFO -// for the Line Status Register bit 7 - -wire [2:0] word0 = fifo[0]; -wire [2:0] word1 = fifo[1]; -wire [2:0] word2 = fifo[2]; -wire [2:0] word3 = fifo[3]; -wire [2:0] word4 = fifo[4]; -wire [2:0] word5 = fifo[5]; -wire [2:0] word6 = fifo[6]; -wire [2:0] word7 = fifo[7]; - -wire [2:0] word8 = fifo[8]; -wire [2:0] word9 = fifo[9]; -wire [2:0] word10 = fifo[10]; -wire [2:0] word11 = fifo[11]; -wire [2:0] word12 = fifo[12]; -wire [2:0] word13 = fifo[13]; -wire [2:0] word14 = fifo[14]; -wire [2:0] word15 = fifo[15]; - -// a 1 is returned if any of the error bits in the fifo is 1 -assign error_bit = |(word0[2:0] | word1[2:0] | word2[2:0] | word3[2:0] | - word4[2:0] | word5[2:0] | word6[2:0] | word7[2:0] | - word8[2:0] | word9[2:0] | word10[2:0] | word11[2:0] | - word12[2:0] | word13[2:0] | word14[2:0] | word15[2:0] ); - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_sync_flops.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_sync_flops.v deleted file mode 100644 index a822f26d..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_sync_flops.v +++ /dev/null @@ -1,125 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_sync_flops.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core receiver logic //// -//// //// -//// Known problems (limits): //// -//// None known //// -//// //// -//// To Do: //// -//// Thourough testing. //// -//// //// -//// Author(s): //// -//// - Andrej Erzen (andreje@flextronics.si) //// -//// - Tadej Markovic (tadejm@flextronics.si) //// -//// //// -//// Created: 2004/05/20 //// -//// Last Updated: 2004/05/20 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_sync_flops.v,v $ -// Revision 1.1 2004/05/21 11:43:25 tadejm -// Added to synchronize RX input to Wishbone clock. -// -// - - -`include "timescale.v" - - -module uart_sync_flops -( - // internal signals - rst_i, - clk_i, - stage1_rst_i, - stage1_clk_en_i, - async_dat_i, - sync_dat_o -); - -parameter Tp = 1; -parameter width = 1; -parameter init_value = 1'b0; - -input rst_i; // reset input -input clk_i; // clock input -input stage1_rst_i; // synchronous reset for stage 1 FF -input stage1_clk_en_i; // synchronous clock enable for stage 1 FF -input [width-1:0] async_dat_i; // asynchronous data input -output [width-1:0] sync_dat_o; // synchronous data output - - -// -// Interal signal declarations -// - -reg [width-1:0] sync_dat_o; -reg [width-1:0] flop_0; - - -// first stage -always @ (posedge clk_i or posedge rst_i) -begin - if (rst_i) - flop_0 <= #Tp {width{init_value}}; - else - flop_0 <= #Tp async_dat_i; -end - -// second stage -always @ (posedge clk_i or posedge rst_i) -begin - if (rst_i) - sync_dat_o <= #Tp {width{init_value}}; - else if (stage1_rst_i) - sync_dat_o <= #Tp {width{init_value}}; - else if (stage1_clk_en_i) - sync_dat_o <= #Tp flop_0; -end - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_tfifo.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_tfifo.v deleted file mode 100644 index 9b369aac..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_tfifo.v +++ /dev/null @@ -1,246 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_tfifo.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core transmitter FIFO //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2002/07/22 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_tfifo.v,v $ -// Revision 1.2 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.1 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.16 2001/12/20 13:25:46 mohor -// rx push changed to be only one cycle wide. -// -// Revision 1.15 2001/12/18 09:01:07 mohor -// Bug that was entered in the last update fixed (rx state machine). -// -// Revision 1.14 2001/12/17 14:46:48 mohor -// overrun signal was moved to separate block because many sequential lsr -// reads were preventing data from being written to rx fifo. -// underrun signal was not used and was removed from the project. -// -// Revision 1.13 2001/11/26 21:38:54 gorban -// Lots of fixes: -// Break condition wasn't handled correctly at all. -// LSR bits could lose their values. -// LSR value after reset was wrong. -// Timing of THRE interrupt signal corrected. -// LSR bit 0 timing corrected. -// -// Revision 1.12 2001/11/08 14:54:23 mohor -// Comments in Slovene language deleted, few small fixes for better work of -// old tools. IRQs need to be fix. -// -// Revision 1.11 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.10 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.9 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.8 2001/08/24 08:48:10 mohor -// FIFO was not cleared after the data was read bug fixed. -// -// Revision 1.7 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.3 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/27 17:37:48 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -module uart_tfifo (clk, - wb_rst_i, data_in, data_out, -// Control signals - push, // push strobe, active high - pop, // pop strobe, active high -// status signals - overrun, - count, - fifo_reset, - reset_status - ); - - -// FIFO parameters -parameter fifo_width = `UART_FIFO_WIDTH; -parameter fifo_depth = `UART_FIFO_DEPTH; -parameter fifo_pointer_w = `UART_FIFO_POINTER_W; -parameter fifo_counter_w = `UART_FIFO_COUNTER_W; - -input clk; -input wb_rst_i; -input push; -input pop; -input [fifo_width-1:0] data_in; -input fifo_reset; -input reset_status; - -output [fifo_width-1:0] data_out; -output overrun; -output [fifo_counter_w-1:0] count; - -wire [fifo_width-1:0] data_out; - -// FIFO pointers -reg [fifo_pointer_w-1:0] top; -reg [fifo_pointer_w-1:0] bottom; - -reg [fifo_counter_w-1:0] count; -reg overrun; -wire [fifo_pointer_w-1:0] top_plus_1 = top + 1'b1; - -raminfr #(fifo_pointer_w,fifo_width,fifo_depth) tfifo - (.clk(clk), - .we(push), - .a(top), - .dpra(bottom), - .di(data_in), - .dpo(data_out) - ); - - -always @(posedge clk or posedge wb_rst_i) // synchronous FIFO -begin - if (wb_rst_i) - begin - top <= #1 0; - bottom <= #1 1'b0; - count <= #1 0; - end - else - if (fifo_reset) begin - top <= #1 0; - bottom <= #1 1'b0; - count <= #1 0; - end - else - begin - case ({push, pop}) - 2'b10 : if (count0) - begin - bottom <= #1 bottom + 1'b1; - count <= #1 count - 1'b1; - end - 2'b11 : begin - bottom <= #1 bottom + 1'b1; - top <= #1 top_plus_1; - end - default: ; - endcase - end -end // always - -always @(posedge clk or posedge wb_rst_i) // synchronous FIFO -begin - if (wb_rst_i) - overrun <= #1 1'b0; - else - if(fifo_reset | reset_status) - overrun <= #1 1'b0; - else - if(push & (count==fifo_depth)) - overrun <= #1 1'b1; -end // always - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_top.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_top.v deleted file mode 100644 index e57ca8e4..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_top.v +++ /dev/null @@ -1,337 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_top.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core top level. //// -//// //// -//// Known problems (limits): //// -//// Note that transmitter and receiver instances are inside //// -//// the uart_regs.v file. //// -//// //// -//// To Do: //// -//// Nothing so far. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_top.v,v $ -// Revision 1.19 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.18 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.17 2001/12/19 08:40:03 mohor -// Warnings fixed (unused signals removed). -// -// Revision 1.16 2001/12/06 14:51:04 gorban -// Bug in LSR[0] is fixed. -// All WISHBONE signals are now sampled, so another wait-state is introduced on all transfers. -// -// Revision 1.15 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.14 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.13 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.12 2001/08/25 15:46:19 gorban -// Modified port names again -// -// Revision 1.11 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.10 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -`include "uart_defines.v" - -module uart_top - (wb_clk_i, - - // Wishbone signals - wb_rst_i, wb_adr_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_sel_i, - int_o, // interrupt request - - // UART signals - // serial input/output - stx_pad_o, srx_pad_i, - - // modem signals - rts_pad_o, cts_pad_i, dtr_pad_o, dsr_pad_i, ri_pad_i, dcd_pad_i - `ifdef UART_HAS_BAUDRATE_OUTPUT - , baud_o - `endif - ); - - parameter uart_data_width = `UART_DATA_WIDTH; - parameter uart_addr_width = `UART_ADDR_WIDTH; - - input wb_clk_i; - - // WISHBONE interface - input wb_rst_i; - input [uart_addr_width-1:0] wb_adr_i; - input [uart_data_width-1:0] wb_dat_i; - output [uart_data_width-1:0] wb_dat_o; - input wb_we_i; - input wb_stb_i; - input wb_cyc_i; - input [3:0] wb_sel_i; - output wb_ack_o; - output int_o; - - // UART signals - input srx_pad_i; - output stx_pad_o; - output rts_pad_o; - input cts_pad_i; - output dtr_pad_o; - input dsr_pad_i; - input ri_pad_i; - input dcd_pad_i; - - // optional baudrate output - `ifdef UART_HAS_BAUDRATE_OUTPUT - output baud_o; - `endif - - wire stx_pad_o; - wire rts_pad_o; - wire dtr_pad_o; - - wire [uart_addr_width-1:0] wb_adr_i; - wire [uart_data_width-1:0] wb_dat_i; - wire [uart_data_width-1:0] wb_dat_o; - - wire [7:0] wb_dat8_i; // 8-bit internal data input - wire [7:0] wb_dat8_o; // 8-bit internal data output - wire [31:0] wb_dat32_o; // debug interface 32-bit output - wire [3:0] wb_sel_i; // WISHBONE select signal - wire [uart_addr_width-1:0] wb_adr_int; - wire we_o; // Write enable for registers - wire re_o; // Read enable for registers - // - // MODULE INSTANCES - // - - `ifdef DATA_BUS_WIDTH_8 - `else - // debug interface wires - wire [3:0] ier; - wire [3:0] iir; - wire [1:0] fcr; - wire [4:0] mcr; - wire [7:0] lcr; - wire [7:0] msr; - wire [7:0] lsr; - wire [`UART_FIFO_COUNTER_W-1:0] rf_count; - wire [`UART_FIFO_COUNTER_W-1:0] tf_count; - wire [2:0] tstate; - wire [3:0] rstate; - `endif - - `ifdef DATA_BUS_WIDTH_8 - //// WISHBONE interface module - uart_wb wb_interface - (.clk(wb_clk_i), - .wb_rst_i( wb_rst_i ), - .wb_dat_i(wb_dat_i), - .wb_dat_o(wb_dat_o), - .wb_dat8_i(wb_dat8_i), - .wb_dat8_o(wb_dat8_o), - .wb_dat32_o(32'b0), - .wb_sel_i(4'b0), - .wb_we_i( wb_we_i ), - .wb_stb_i( wb_stb_i ), - .wb_cyc_i( wb_cyc_i ), - .wb_ack_o( wb_ack_o ), - .wb_adr_i(wb_adr_i), - .wb_adr_int(wb_adr_int), - .we_o( we_o ), - .re_o(re_o) - ); - `else - uart_wb wb_interface - (.clk( wb_clk_i ), - .wb_rst_i( wb_rst_i ), - .wb_dat_i(wb_dat_i), - .wb_dat_o(wb_dat_o), - .wb_dat8_i(wb_dat8_i), - .wb_dat8_o(wb_dat8_o), - .wb_sel_i(wb_sel_i), - .wb_dat32_o(wb_dat32_o), - .wb_we_i( wb_we_i ), - .wb_stb_i( wb_stb_i ), - .wb_cyc_i( wb_cyc_i ), - .wb_ack_o( wb_ack_o ), - .wb_adr_i(wb_adr_i), - .wb_adr_int(wb_adr_int), - .we_o( we_o ), - .re_o(re_o) - ); - `endif - - // Registers - uart_regs - regs(.clk( wb_clk_i ), - .wb_rst_i( wb_rst_i ), - .wb_addr_i( wb_adr_int ), - .wb_dat_i( wb_dat8_i ), - .wb_dat_o( wb_dat8_o ), - .wb_we_i( we_o ), - .wb_re_i(re_o), - .modem_inputs({cts_pad_i, dsr_pad_i, ri_pad_i, dcd_pad_i} ), - .stx_pad_o( stx_pad_o ), - .srx_pad_i( srx_pad_i ), - `ifdef DATA_BUS_WIDTH_8 - `else - // debug interface signals enabled - .ier(ier), - .iir(iir), - .fcr(fcr), - .mcr(mcr), - .lcr(lcr), - .msr(msr), - .lsr(lsr), - .rf_count(rf_count), - .tf_count(tf_count), - .tstate(tstate), - .rstate(rstate), - `endif - .rts_pad_o( rts_pad_o ), - .dtr_pad_o( dtr_pad_o ), - .int_o( int_o ) - `ifdef UART_HAS_BAUDRATE_OUTPUT - , .baud_o(baud_o) - `endif - - ); - - `ifdef DATA_BUS_WIDTH_8 - `else - uart_debug_if - dbg(// Outputs - .wb_dat32_o (wb_dat32_o[31:0]), - // Inputs - .wb_adr_i (wb_adr_int[`UART_ADDR_WIDTH-1:0]), - .ier (ier[3:0]), - .iir (iir[3:0]), - .fcr (fcr[1:0]), - .mcr (mcr[4:0]), - .lcr (lcr[7:0]), - .msr (msr[7:0]), - .lsr (lsr[7:0]), - .rf_count (rf_count[`UART_FIFO_COUNTER_W-1:0]), - .tf_count (tf_count[`UART_FIFO_COUNTER_W-1:0]), - .tstate (tstate[2:0]), - .rstate (rstate[3:0])); - `endif - - initial - begin - `ifdef DATA_BUS_WIDTH_8 - $display("(%m) UART INFO: Data bus width is 8. No Debug interface.\n"); - `else - $display("(%m) UART INFO: Data bus width is 32. Debug Interface present.\n"); - `endif - `ifdef UART_HAS_BAUDRATE_OUTPUT - $display("(%m) UART INFO: Has baudrate output\n"); - `else - $display("(%m) UART INFO: Doesn't have baudrate output\n"); - `endif - end - -endmodule // uart_top - diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_transmitter.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_transmitter.v deleted file mode 100644 index e27e6998..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_transmitter.v +++ /dev/null @@ -1,355 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_transmitter.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core transmitter logic //// -//// //// -//// Known problems (limits): //// -//// None known //// -//// //// -//// To Do: //// -//// Thourough testing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_transmitter.v,v $ -// Revision 1.19 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.18 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.16 2002/01/08 11:29:40 mohor -// tf_pop was too wide. Now it is only 1 clk cycle width. -// -// Revision 1.15 2001/12/17 14:46:48 mohor -// overrun signal was moved to separate block because many sequential lsr -// reads were preventing data from being written to rx fifo. -// underrun signal was not used and was removed from the project. -// -// Revision 1.14 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.13 2001/11/08 14:54:23 mohor -// Comments in Slovene language deleted, few small fixes for better work of -// old tools. IRQs need to be fix. -// -// Revision 1.12 2001/11/07 17:51:52 gorban -// Heavily rewritten interrupt and LSR subsystems. -// Many bugs hopefully squashed. -// -// Revision 1.11 2001/10/29 17:00:46 gorban -// fixed parity sending and tx_fifo resets over- and underrun -// -// Revision 1.10 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.9 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.8 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.6 2001/06/23 11:21:48 gorban -// DL made 16-bit long. Fixed transmission/reception bugs. -// -// Revision 1.5 2001/06/02 14:28:14 gorban -// Fixed receiver and transmitter. Major bug fixed. -// -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/27 17:37:49 gorban -// Fixed many bugs. Updated spec. Changed FIFO files structure. See CHANGES.txt file. -// -// Revision 1.2 2001/05/21 19:12:02 gorban -// Corrected some Linter messages. -// -// Revision 1.1 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:12+02 jacob -// Initial revision -// -// - -// synopsys translate_off -`include "timescale.v" -// synopsys translate_on - -`include "uart_defines.v" - -module uart_transmitter (clk, wb_rst_i, lcr, tf_push, wb_dat_i, enable, stx_pad_o, tstate, tf_count, tx_reset, lsr_mask); - -input clk; -input wb_rst_i; -input [7:0] lcr; -input tf_push; -input [7:0] wb_dat_i; -input enable; -input tx_reset; -input lsr_mask; //reset of fifo -output stx_pad_o; -output [2:0] tstate; -output [`UART_FIFO_COUNTER_W-1:0] tf_count; - -reg [2:0] tstate; -reg [4:0] counter; -reg [2:0] bit_counter; // counts the bits to be sent -reg [6:0] shift_out; // output shift register -reg stx_o_tmp; -reg parity_xor; // parity of the word -reg tf_pop; -reg bit_out; - -// TX FIFO instance -// -// Transmitter FIFO signals - reg [`UART_FIFO_WIDTH-1:0] tf_data_in; -wire [`UART_FIFO_WIDTH-1:0] tf_data_out; -wire tf_push; -wire tf_overrun; -wire [`UART_FIFO_COUNTER_W-1:0] tf_count; - -always @(posedge clk) - tf_data_in <= wb_dat_i; - -uart_tfifo fifo_tx( // error bit signal is not used in transmitter FIFO - .clk( clk ), - .wb_rst_i( wb_rst_i ), - .data_in( tf_data_in ), - .data_out( tf_data_out ), - .push( tf_push ), - .pop( tf_pop ), - .overrun( tf_overrun ), - .count( tf_count ), - .fifo_reset( tx_reset ), - .reset_status(lsr_mask) -); - -// TRANSMITTER FINAL STATE MACHINE - -parameter s_idle = 3'd0; -parameter s_send_start = 3'd1; -parameter s_send_byte = 3'd2; -parameter s_send_parity = 3'd3; -parameter s_send_stop = 3'd4; -parameter s_pop_byte = 3'd5; - -always @(posedge clk or posedge wb_rst_i) -begin - if (wb_rst_i) - begin - tstate <= #1 s_idle; - stx_o_tmp <= #1 1'b1; - counter <= #1 5'b0; - shift_out <= #1 7'b0; - bit_out <= #1 1'b0; - parity_xor <= #1 1'b0; - tf_pop <= #1 1'b0; - bit_counter <= #1 3'b0; - end - else - if (enable) - begin - case (tstate) - s_idle : if (~|tf_count) // if tf_count==0 - begin - tstate <= #1 s_idle; - stx_o_tmp <= #1 1'b1; - end - else - begin - tf_pop <= #1 1'b0; - stx_o_tmp <= #1 1'b1; - tstate <= #1 s_pop_byte; - end - s_pop_byte : begin - tf_pop <= #1 1'b1; - case (lcr[/*`UART_LC_BITS*/1:0]) // number of bits in a word - 2'b00 : begin - bit_counter <= #1 3'b100; - parity_xor <= #1 ^tf_data_out[4:0]; - end - 2'b01 : begin - bit_counter <= #1 3'b101; - parity_xor <= #1 ^tf_data_out[5:0]; - end - 2'b10 : begin - bit_counter <= #1 3'b110; - parity_xor <= #1 ^tf_data_out[6:0]; - end - 2'b11 : begin - bit_counter <= #1 3'b111; - parity_xor <= #1 ^tf_data_out[7:0]; - end - endcase - {shift_out[6:0], bit_out} <= #1 tf_data_out; - tstate <= #1 s_send_start; - end - s_send_start : begin - tf_pop <= #1 1'b0; - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - counter <= #1 0; - tstate <= #1 s_send_byte; - end - else - counter <= #1 counter - 1'b1; - stx_o_tmp <= #1 1'b0; - end - s_send_byte : begin - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - if (bit_counter > 3'b0) - begin - bit_counter <= #1 bit_counter - 1'b1; - {shift_out[5:0],bit_out } <= #1 {shift_out[6:1], shift_out[0]}; - tstate <= #1 s_send_byte; - end - else // end of byte - if (~lcr[`UART_LC_PE]) - begin - tstate <= #1 s_send_stop; - end - else - begin - case ({lcr[`UART_LC_EP],lcr[`UART_LC_SP]}) - 2'b00: bit_out <= #1 ~parity_xor; - 2'b01: bit_out <= #1 1'b1; - 2'b10: bit_out <= #1 parity_xor; - 2'b11: bit_out <= #1 1'b0; - endcase - tstate <= #1 s_send_parity; - end - counter <= #1 0; - end - else - counter <= #1 counter - 1'b1; - stx_o_tmp <= #1 bit_out; // set output pin - end - s_send_parity : begin - if (~|counter) - counter <= #1 5'b01111; - else - if (counter == 5'b00001) - begin - counter <= #1 4'b0; - tstate <= #1 s_send_stop; - end - else - counter <= #1 counter - 1'b1; - stx_o_tmp <= #1 bit_out; - end - s_send_stop : begin - if (~|counter) - begin - casex ({lcr[`UART_LC_SB],lcr[`UART_LC_BITS]}) - 3'b0xx: counter <= #1 5'b01101; // 1 stop bit ok igor - 3'b100: counter <= #1 5'b10101; // 1.5 stop bit - default: counter <= #1 5'b11101; // 2 stop bits - endcase - end - else - if (counter == 5'b00001) - begin - counter <= #1 0; - tstate <= #1 s_idle; - end - else - counter <= #1 counter - 1'b1; - stx_o_tmp <= #1 1'b1; - end - - default : // should never get here - tstate <= #1 s_idle; - endcase - end // end if enable - else - tf_pop <= #1 1'b0; // tf_pop must be 1 cycle width -end // transmitter logic - -assign stx_pad_o = lcr[`UART_LC_BC] ? 1'b0 : stx_o_tmp; // Break condition - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_wb.v b/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_wb.v deleted file mode 100644 index daf43645..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/verilog/uart_wb.v +++ /dev/null @@ -1,308 +0,0 @@ -////////////////////////////////////////////////////////////////////// -//// //// -//// uart_wb.v //// -//// //// -//// //// -//// This file is part of the "UART 16550 compatible" project //// -//// http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Documentation related to this project: //// -//// - http://www.opencores.org/cores/uart16550/ //// -//// //// -//// Projects compatibility: //// -//// - WISHBONE //// -//// RS232 Protocol //// -//// 16550D uart (mostly supported) //// -//// //// -//// Overview (main Features): //// -//// UART core WISHBONE interface. //// -//// //// -//// Known problems (limits): //// -//// Inserts one wait state on all transfers. //// -//// Note affected signals and the way they are affected. //// -//// //// -//// To Do: //// -//// Nothing. //// -//// //// -//// Author(s): //// -//// - gorban@opencores.org //// -//// - Jacob Gorban //// -//// - Igor Mohor (igorm@opencores.org) //// -//// //// -//// Created: 2001/05/12 //// -//// Last Updated: 2001/05/17 //// -//// (See log for the revision history) //// -//// //// -//// //// -////////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000, 2001 Authors //// -//// //// -//// 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.opencores.org/lgpl.shtml //// -//// //// -////////////////////////////////////////////////////////////////////// -// -// CVS Revision History -// -// $Log: uart_wb.v,v $ -// Revision 1.17 2004/05/21 12:35:15 tadejm -// Added 2 LSB address generation dependent on select lines and LITLE/BIG endian when UART is in 32-bit mode. -// -// Revision 1.16 2002/07/29 21:16:18 gorban -// The uart_defines.v file is included again in sources. -// -// Revision 1.15 2002/07/22 23:02:23 gorban -// Bug Fixes: -// * Possible loss of sync and bad reception of stop bit on slow baud rates fixed. -// Problem reported by Kenny.Tung. -// * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers. -// -// Improvements: -// * Made FIFO's as general inferrable memory where possible. -// So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx). -// This saves about 1/3 of the Slice count and reduces P&R and synthesis times. -// -// * Added optional baudrate output (baud_o). -// This is identical to BAUDOUT* signal on 16550 chip. -// It outputs 16xbit_clock_rate - the divided clock. -// It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use. -// -// Revision 1.12 2001/12/19 08:03:34 mohor -// Warnings cleared. -// -// Revision 1.11 2001/12/06 14:51:04 gorban -// Bug in LSR[0] is fixed. -// All WISHBONE signals are now sampled, so another wait-state is introduced on all transfers. -// -// Revision 1.10 2001/12/03 21:44:29 gorban -// Updated specification documentation. -// Added full 32-bit data bus interface, now as default. -// Address is 5-bit wide in 32-bit data bus mode. -// Added wb_sel_i input to the core. It's used in the 32-bit mode. -// Added debug interface with two 32-bit read-only registers in 32-bit mode. -// Bits 5 and 6 of LSR are now only cleared on TX FIFO write. -// My small test bench is modified to work with 32-bit mode. -// -// Revision 1.9 2001/10/20 09:58:40 gorban -// Small synopsis fixes -// -// Revision 1.8 2001/08/24 21:01:12 mohor -// Things connected to parity changed. -// Clock devider changed. -// -// Revision 1.7 2001/08/23 16:05:05 mohor -// Stop bit bug fixed. -// Parity bug fixed. -// WISHBONE read cycle bug fixed, -// OE indicator (Overrun Error) bug fixed. -// PE indicator (Parity Error) bug fixed. -// Register read bug fixed. -// -// Revision 1.4 2001/05/31 20:08:01 gorban -// FIFO changes and other corrections. -// -// Revision 1.3 2001/05/21 19:12:01 gorban -// Corrected some Linter messages. -// -// Revision 1.2 2001/05/17 18:34:18 gorban -// First 'stable' release. Should be sythesizable now. Also added new header. -// -// Revision 1.0 2001-05-17 21:27:13+02 jacob -// Initial revision -// -// - -// UART core WISHBONE interface -// -// Author: Jacob Gorban (jacob.gorban@flextronicssemi.com) -// Company: Flextronics Semiconductor -// - -`include "uart_defines.v" - -module uart_wb (clk, wb_rst_i, - wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_adr_i, - wb_adr_int, wb_dat_i, wb_dat_o, wb_dat8_i, wb_dat8_o, wb_dat32_o, wb_sel_i, - we_o, re_o // Write and read enable output for the core - ); - - input clk; - - // WISHBONE interface - input wb_rst_i; - input wb_we_i; - input wb_stb_i; - input wb_cyc_i; - input [3:0] wb_sel_i; - input [`UART_ADDR_WIDTH-1:0] wb_adr_i; //WISHBONE address line - -`ifdef DATA_BUS_WIDTH_8 - input [7:0] wb_dat_i; //input WISHBONE bus - output [7:0] wb_dat_o; - reg [7:0] wb_dat_o; - wire [7:0] wb_dat_i; - reg [7:0] wb_dat_is; -`else // for 32 data bus mode - input [31:0] wb_dat_i; //input WISHBONE bus - output [31:0] wb_dat_o; - reg [31:0] wb_dat_o; - wire [31:0] wb_dat_i; - reg [31:0] wb_dat_is; -`endif // !`ifdef DATA_BUS_WIDTH_8 - - output [`UART_ADDR_WIDTH-1:0] wb_adr_int; // internal signal for address bus - input [7:0] wb_dat8_o; // internal 8 bit output to be put into wb_dat_o - output [7:0] wb_dat8_i; - input [31:0] wb_dat32_o; // 32 bit data output (for debug interface) - output wb_ack_o; - output we_o; - output re_o; - - wire we_o; - reg wb_ack_o; - reg [7:0] wb_dat8_i; - wire [7:0] wb_dat8_o; - wire [`UART_ADDR_WIDTH-1:0] wb_adr_int; // internal signal for address bus - reg [`UART_ADDR_WIDTH-1:0] wb_adr_is; - reg wb_we_is; - reg wb_cyc_is; - reg wb_stb_is; - reg [3:0] wb_sel_is; - wire [3:0] wb_sel_i; - reg wre ;// timing control signal for write or read enable - - // wb_ack_o FSM - reg [1:0] wbstate; - always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) begin - wb_ack_o <= #1 1'b0; - wbstate <= #1 0; - wre <= #1 1'b1; - end else - case (wbstate) - 0: begin - if (wb_stb_is & wb_cyc_is) begin - wre <= #1 0; - wbstate <= #1 1; - wb_ack_o <= #1 1; - end else begin - wre <= #1 1; - wb_ack_o <= #1 0; - end - end - 1: begin - wb_ack_o <= #1 0; - wbstate <= #1 2; - wre <= #1 0; - end - 2,3: begin - wb_ack_o <= #1 0; - wbstate <= #1 0; - wre <= #1 0; - end - endcase - - assign we_o = wb_we_is & wb_ack_o; - //assign we_o = wb_we_is & wb_stb_is & wb_cyc_is & wre ; //WE for registers - assign re_o = ~wb_we_is & wb_stb_is & wb_cyc_is & wre ; //RE for registers - - // Sample input signals - always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) begin - wb_adr_is <= #1 0; - wb_we_is <= #1 0; - wb_cyc_is <= #1 0; - wb_stb_is <= #1 0; - wb_dat_is <= #1 0; - wb_sel_is <= #1 0; - end else begin - wb_adr_is <= #1 wb_adr_i; - wb_we_is <= #1 wb_we_i; - wb_cyc_is <= #1 wb_cyc_i; - wb_stb_is <= #1 wb_stb_i; - wb_dat_is <= #1 wb_dat_i; - wb_sel_is <= #1 wb_sel_i; - end - -`ifdef DATA_BUS_WIDTH_8 // 8-bit data bus - always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - wb_dat_o <= #1 0; - else - wb_dat_o <= #1 wb_dat8_o; - - always @(wb_dat_is) - wb_dat8_i = wb_dat_is; - - assign wb_adr_int = wb_adr_is; - -`else // 32-bit bus - // put output to the correct byte in 32 bits using select line - always @(posedge clk or posedge wb_rst_i) - if (wb_rst_i) - wb_dat_o <= #1 0; - else if (re_o) - case (wb_sel_is) - 4'b0001: wb_dat_o <= #1 {24'b0, wb_dat8_o}; - 4'b0010: wb_dat_o <= #1 {16'b0, wb_dat8_o, 8'b0}; - 4'b0100: wb_dat_o <= #1 {8'b0, wb_dat8_o, 16'b0}; - 4'b1000: wb_dat_o <= #1 {wb_dat8_o, 24'b0}; - 4'b1111: wb_dat_o <= #1 wb_dat32_o; // debug interface output - default: wb_dat_o <= #1 0; - endcase // case(wb_sel_i) - - reg [1:0] wb_adr_int_lsb; - - always @(wb_sel_is or wb_dat_is) - begin - case (wb_sel_is) - 4'b0001 : wb_dat8_i = wb_dat_is[7:0]; - 4'b0010 : wb_dat8_i = wb_dat_is[15:8]; - 4'b0100 : wb_dat8_i = wb_dat_is[23:16]; - 4'b1000 : wb_dat8_i = wb_dat_is[31:24]; - default : wb_dat8_i = wb_dat_is[7:0]; - endcase // case(wb_sel_i) - - `ifdef LITLE_ENDIAN - case (wb_sel_is) - 4'b0001 : wb_adr_int_lsb = 2'h0; - 4'b0010 : wb_adr_int_lsb = 2'h1; - 4'b0100 : wb_adr_int_lsb = 2'h2; - 4'b1000 : wb_adr_int_lsb = 2'h3; - default : wb_adr_int_lsb = 2'h0; - endcase // case(wb_sel_i) - `else - case (wb_sel_is) - 4'b0001 : wb_adr_int_lsb = 2'h3; - 4'b0010 : wb_adr_int_lsb = 2'h2; - 4'b0100 : wb_adr_int_lsb = 2'h1; - 4'b1000 : wb_adr_int_lsb = 2'h0; - default : wb_adr_int_lsb = 2'h0; - endcase // case(wb_sel_i) - `endif - end - - assign wb_adr_int = {wb_adr_is[`UART_ADDR_WIDTH-1:2], wb_adr_int_lsb}; - -`endif // !`ifdef DATA_BUS_WIDTH_8 - -endmodule diff --git a/usrp2/fpga/opencores/uart16550/rtl/vhdl/.keepme b/usrp2/fpga/opencores/uart16550/rtl/vhdl/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Entries b/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Entries deleted file mode 100644 index f674e77e..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:50 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Repository b/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Repository deleted file mode 100644 index 952ae5ae..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/rtl/vhdl diff --git a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Root b/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Template b/usrp2/fpga/opencores/uart16550/rtl/vhdl/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/sim/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/sim/CVS/Entries.Log deleted file mode 100644 index 4677f5be..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/CVS/Entries.Log +++ /dev/null @@ -1,2 +0,0 @@ -A D/gate_sim//// -A D/rtl_sim//// diff --git a/usrp2/fpga/opencores/uart16550/sim/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/CVS/Repository deleted file mode 100644 index 7a152b5d..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim diff --git a/usrp2/fpga/opencores/uart16550/sim/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries.Log deleted file mode 100644 index 7a4fd3fe..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Entries.Log +++ /dev/null @@ -1,5 +0,0 @@ -A D/bin//// -A D/log//// -A D/out//// -A D/run//// -A D/src//// diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Repository deleted file mode 100644 index 2717c3bb..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/.keepme b/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Entries deleted file mode 100644 index 49302b14..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:53 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Repository deleted file mode 100644 index 23fff6f0..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim/bin diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/bin/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/.keepme b/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Entries deleted file mode 100644 index c6b9be28..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:56 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Repository deleted file mode 100644 index a59f7759..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim/log diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/log/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/.keepme b/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Entries deleted file mode 100644 index ea09c988..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:58 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Repository deleted file mode 100644 index 90408263..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim/out diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/out/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/.keepme b/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Entries deleted file mode 100644 index 170c5aa9..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:52:59 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Repository deleted file mode 100644 index f0fe74e8..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim/run diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/run/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/.keepme b/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Entries deleted file mode 100644 index 76093103..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:01 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Repository deleted file mode 100644 index e90e5de3..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/gate_sim/src diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/gate_sim/src/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries.Log deleted file mode 100644 index 7a4fd3fe..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Entries.Log +++ /dev/null @@ -1,5 +0,0 @@ -A D/bin//// -A D/log//// -A D/out//// -A D/run//// -A D/src//// diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Repository deleted file mode 100644 index 6880ade9..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Entries deleted file mode 100644 index 4993d601..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/nc.scr/1.4/Mon Jul 29 21:15:18 2002/-kb/ -/sim.tcl/1.2/Mon Dec 3 21:44:29 2001/-kb/ -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Repository deleted file mode 100644 index 1ea808f7..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim/bin diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/nc.scr b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/nc.scr deleted file mode 100644 index c42e3c34..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/nc.scr +++ /dev/null @@ -1,9 +0,0 @@ -+libext+.v -+access+wr -+mess -+incdir+../../../rtl/verilog+../../../bench/verilog -+tcl+../bin/sim.tcl --y ../../../rtl/verilog --y ../../../bench/verilog -../../../bench/verilog/uart_test.v -//+gui diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/sim.tcl b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/sim.tcl deleted file mode 100644 index 18a0dbec..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/bin/sim.tcl +++ /dev/null @@ -1,5 +0,0 @@ -database -open waves -into ../out/uart -default -probe -create -shm uart_test -all -depth all -stop -create -time 1000000000ns -relative -run -quit diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/.keepme b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Entries deleted file mode 100644 index 8a92af1b..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:04 2001// -/uart_interrupts_report.log/1.1/Sat Mar 27 04:09:24 2004// -/uart_interrupts_verbose.log/1.1/Sat Mar 27 04:09:24 2004// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Repository deleted file mode 100644 index 61aafb85..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim/log diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_report.log b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_report.log deleted file mode 100644 index 64b5c188..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_report.log +++ /dev/null @@ -1,23 +0,0 @@ - ---------------------------------------------------------------------------- - -Initialization of UART. - PASSED! - Simulation Time: 621000 - ---------------------------------------------------------------------------- - -Interrupt test. - FAILED! - Failure message: Bit 5 of LSR register not '1'!. - Simulation Time: 5734521200 - ---------------------------------------------------------------------------- - -TEST CASE execution summary: -Number of tests PASSED=1 -Number of tests FAILED=1 - Simulation End Time: 5834521200 - ---------------------------------------------------------------------------- - diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_verbose.log b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_verbose.log deleted file mode 100644 index 0382f36e..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/log/uart_interrupts_verbose.log +++ /dev/null @@ -1,104 +0,0 @@ - ---------------------------------------------------------------------------- -- Initialization of UART. ---------------------------------------------------------------------------- - -Time: 200 (testbench_utilities.do_reset) -*N, RESET signal asynchronously set. -Time: 200 (testbench_utilities.disable_clk_generators) -*N, Following clocks are DISABLED: -Time: 200 (testbench_utilities.disable_clk_generators) -*N, - WB_clk -Time: 200 (testbench_utilities.disable_clk_generators) -*N, - RX_clk -Time: 200 (testbench_utilities.disable_clk_generators) -*N, - TX_clk -Time: 200 (testbench_utilities.disable_clk_generators) -*N, - TX_clk_divided -Time: 200 (testbench_utilities.set_device_tx_rx_clk_divisor) -*N, UART DEVICE TX/RX clock divisor: 1000. -Time: 200 (testbench_utilities.set_wb_clock_period) -*N, WB & UART DEVICE TX/RX clock period: 64. -Time: 200 (testbench_utilities.enable_clk_generators) -*N, Following clocks are ENABLED: -Time: 200 (testbench_utilities.enable_clk_generators) -*N, - WB_clk -Time: 200 (testbench_utilities.enable_clk_generators) -*N, - RX_clk -Time: 200 (testbench_utilities.enable_clk_generators) -*N, - TX_clk -Time: 200 (testbench_utilities.enable_clk_generators) -*N, - TX_clk_divided -Time: 11100 (testbench_utilities.release_reset) -*N, RESET signal released synchronously to WB clk. -Time: 11100 (uart_wb_utilities.write_dlr) -*N, DLAB in LC Register is going to be 1. -Time: 11100 (uart_wb_utilities.write_dlr) -*N, Current LCR = 3. -Time: 11100 (uart_wb_utilities.write_lcr) -*N, WRITING UART's LC Register. -Time: 101000 (uart_wb_utilities.write_lcr) -*N, Write LCR = 83. -Time: 101000 (uart_wb_utilities.write_dlr) -*N, WRITING UART's DL Register [15:8]. -Time: 161000 (uart_wb_utilities.write_dlr) -*N, Write DLR [15:8] = 10. -Time: 161000 (uart_wb_utilities.write_dlr) -*N, WRITING UART's DL Register [ 7:0]. -Time: 281000 (uart_wb_utilities.write_dlr) -*N, Write DLR [ 7:0] = 0. -Time: 281000 (uart_wb_utilities.write_dlr) -*N, DLAB in LC Register is going to be 0. -Time: 281000 (uart_wb_utilities.write_lcr) -*N, WRITING UART's LC Register. -Time: 371000 (uart_wb_utilities.write_lcr) -*N, Write LCR = 3. -Time: 371000 (uart_wb_utilities.write_ier) -*N, WRITING UART's IE Register. -Time: 411000 (uart_wb_utilities.write_ier) -*N, Write IER = 7. -Time: 411000 (uart_wb_utilities.write_fcr) -*N, WRITING UART's FC Register. -Time: 511000 (uart_wb_utilities.write_fcr) -*N, Write FCR = c0. -Time: 511000 (uart_wb_utilities.write_lcr) -*N, WRITING UART's LC Register. -Time: 621000 (uart_wb_utilities.write_lcr) -*N, Write LCR = 3. -Time: 621000 (uart_device_utilities.set_rx_length) -*N, SETTING RX CHAR length. -Time: 621000 (uart_device_utilities.set_rx_length) -*N, Length: 8. -Time: 621000 (uart_device_utilities.disable_rx_parity) -*N, DISABLING RX CHAR parity. -Time: 621000 (uart_device_utilities.set_rx_second_stop_bit) -*N, SETTING RX CHAR 1 stop bit. -Time: 621000 (uart_device_utilities.set_tx_length) -*N, SETTING TX CHAR length. -Time: 621000 (uart_device_utilities.set_tx_length) -*N, Length: 8. -Time: 621000 (uart_device_utilities.disable_tx_parity) -*N, DISABLING TX CHAR parity. -Time: 621000 (uart_device_utilities.correct_tx_parity) -*N, DISABLING WRONG parity generation. -Time: 621000 (uart_device_utilities.correct_tx_frame) -*N, DISABLING WRONG frame generation. -Time: 621000 (uart_device_utilities.generate_tx_glitch) -*N, DISABLING 1 TIME glitch generation with CLKs delay. -Time: 621000 (uart_device_utilities.generate_tx_glitch) -*N, CLKs delay from start bit edge: 0. - ---------------------------------------------------------------------------- -- Interrupt test. ---------------------------------------------------------------------------- - -Time: 621000 (testbench_utilities.wait_for_num_of_wb_clk) -*N, Waiting for following number of WB CLK periods: -Time: 621000 (testbench_utilities.wait_for_num_of_wb_clk) -*N, Waiting for following number of WB CLK periods: 450000. -Time: 701000 (uart_wb_utilities.write_char) -*N, Write TRR = aa. -Time: 5734501000 (testbench.write_tx_shift_reg_read_tx_fifo) -*N, TX FIFO is empty! -Time: 5734521200 (testbench.tx_fifo_status_changing) -*E, Bit 5 of LSR register not '1'! diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/.keepme b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Entries deleted file mode 100644 index b974d366..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:06 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Repository deleted file mode 100644 index e52a5c28..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim/out diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/out/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Entries deleted file mode 100644 index 0f0e80b1..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/run_signalscan/1.1.1.1/Sun Aug 12 16:27:51 2001/-kb/ -/run_sim/1.1.1.1/Sun Aug 12 16:27:51 2001/-kb/ -/run_sim.scr/1.1/Sat Mar 27 04:07:47 2004// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Repository deleted file mode 100644 index 6dea2247..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim/run diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_signalscan b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_signalscan deleted file mode 100755 index cd653656..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_signalscan +++ /dev/null @@ -1,2 +0,0 @@ -signalscan ../out/uart/uart.trn & -# -do ../out/uart/uart.do & diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim deleted file mode 100755 index f86c2f9b..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim +++ /dev/null @@ -1 +0,0 @@ -ncverilog -f ../bin/nc.scr & diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim.scr b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim.scr deleted file mode 100644 index 6bc0c5ee..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/run/run_sim.scr +++ /dev/null @@ -1,345 +0,0 @@ -#!/bin/csh -f - - -# GLOBAL VARIABLES -################### - -set sim_top = testbench; -set arg_tool = "NCSim"; # By default NCSim is used as simulation tool -set arg_wave = 0; # By default waveform is not recorded -set arg_verb = 0; # By default basic display on monitor (no verbose) -set arg_test = 0; # By default all testcases are simulated - - -# GETTING PARAMETERS FROM COMMAND LINE -####################################### - -set cur_arg = 1; - -if ($#argv < 1) then - echo "" - echo " Verification without any argument:" -else - - while ($cur_arg <= $#argv) - - switch ("$argv[$cur_arg]") - # HELP ARGUMENT - case "-h": - goto help - breaksw - case "help": - goto help - breaksw - # TOOL ARGUMENT - case "-m": - set arg_tool = "ModelSim"; - echo " $argv[$cur_arg] - ModelSim tool" - breaksw - case "modelsim" - set arg_tool = "ModelSim"; - echo " $argv[$cur_arg] - ModelSim tool" - breaksw - # WAVEFORM ARGUMENT - case "-w": - @ arg_wave = 1; - echo " $argv[$cur_arg] - Waveform" - breaksw - case "waveform": - @ arg_wave = 1; - echo " $argv[$cur_arg] - Waveform" - breaksw - # VERBOSE ARGUMENT - case "-v": - @ arg_verb = 1; - echo " $argv[$cur_arg] - Verbose" - breaksw - case "verbose": - @ arg_verb = 1; - echo " $argv[$cur_arg] - Verbose" - breaksw - # TESTCASE ARGUMENT - default: - if (-e ../../../bench/verilog/testcases/$argv[$cur_arg].v) then - set arg_test = $argv[$cur_arg]; - echo " $argv[$cur_arg] - Testcase" - # INVALID ARGUMENT - else - echo "" - echo " Invalid verification argument: $argv[$cur_arg]" - goto help - endif - breaksw - endsw - - @ cur_arg++ - end - -endif - - -# SIMULATION LOOP -################## - -set cur_test_num = 0; - -simulate: - - - # DELETING FILES - ################# - - # Prepared files - if (-e ./file_list.lst) then - rm -rf ./file_list.lst - endif - if (-e ../bin/cds.lib) then - rm -rf ../bin/cds.lib - endif - if (-e ../bin/hdl.var) then - rm -rf ../bin/hdl.var - endif - if (-e ./compile.args) then - rm -rf ./compile.args - endif - if (-e ./elab.args) then - rm -rf ./elab.args - endif - if (-e ./sim.args) then - rm -rf ./sim.args - endif - if (-e ./sim.tcl) then - rm -rf ./sim.tcl - endif - if (-e ./sim.do) then - rm -rf ./sim.do - endif - - # Projects, Libraries and Logs - if (-e ./uart.mpf) then - rm -rf ./uart.mpf - endif - if (-e ./work) then - rm -rf ./work - endif - if (-e ./INCA_libs/worklib) then - rm -rf ./INCA_libs/worklib - endif - - - # PREPARING FILE LIST - ###################### - - # Design files - echo "../../../rtl/verilog/uart_top.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_wb.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_transmitter.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_receiver.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_tfifo.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_rfifo.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_regs.v" >> ./file_list.lst - echo "../../../rtl/verilog/uart_debug_if.v" >> ./file_list.lst - - # Testcase file - if ($arg_test == 0) then - set i = 0; - foreach testcase (../../../bench/verilog/testcases/uart*.v) - if ($i == $cur_test_num) then - set testcase_i = $testcase:t:r - endif - @ i++ - end - set max_test_num = $i; - else - set testcase_i = $arg_test; - set max_test_num = 1; - endif - echo "//////////////////////////////////////////////////" > ./file_list.lst - echo "// File created within script ${0}" >> ./file_list.lst - echo "// path: $cwd" >> ./file_list.lst - echo "// user: $user" >> ./file_list.lst - echo "//////////////////////////////////////////////////" >> ./file_list.lst - echo "../../../bench/verilog/testcases/$testcase_i.v" >> ./file_list.lst - # Delete vawe out file for this testcase, if it already exists - if (-e ../out/$testcase_i.wlf) then - rm -rf ../out/$testcase_i.wlf - endif - # Delete log out file for this testcase, if it already exists - if (-e ../log/$testcase_i.log) then - rm -rf ../log/$testcase_i.log - endif - - # Testbench files - echo "../../../bench/verilog/uart_testbench.v" >> ./file_list.lst - echo "../../../bench/verilog/wb_master_model.v" >> ./file_list.lst - echo "../../../bench/verilog/uart_device.v" >> ./file_list.lst - echo "../../../bench/verilog/uart_testbench_utilities.v" >> ./file_list.lst - echo "../../../bench/verilog/uart_wb_utilities.v" >> ./file_list.lst - echo "../../../bench/verilog/uart_device_utilities.v" >> ./file_list.lst - - - # COMPILING & ELABORATING - ########################## - - if ("$arg_tool" == "NCSim") then - - # cds.lib library file - echo "//////////////////////////////////////////////////" > ../bin/cds.lib - echo "// File created within script ${0}" >> ../bin/cds.lib - echo "// path: $cwd" >> ../bin/cds.lib - echo "// user: $0" >> ../bin/cds.lib - echo "//////////////////////////////////////////////////" >> ../bin/cds.lib - echo "DEFINE worklib ./INCA_libs/worklib" >> ../bin/cds.lib - - # hdl.var variable file - echo "//////////////////////////////////////////////////" > ../bin/hdl.var - echo "// File created within script ${0}" >> ../bin/hdl.var - echo "// path: $cwd" >> ../bin/hdl.var - echo "// user: $0" >> ../bin/hdl.var - echo "//////////////////////////////////////////////////" >> ../bin/hdl.var - echo "INCLUDE \$CDS_INST_DIR/tools/inca/files/hdl.var" >> ../bin/hdl.var - echo "DEFINE WORK worklib" >> ../bin/hdl.var - - # compile.args argument file - echo "//////////////////////////////////////////////////" > ./compile.args - echo "// File created within script ${0}" >> ./compile.args - echo "// path: $cwd" >> ./compile.args - echo "// user: $0" >> ./compile.args - echo "//////////////////////////////////////////////////" >> ./compile.args - echo "-CDSLIB ../bin/cds.lib" >> ./compile.args - echo "-HDLVAR ../bin/hdl.var" >> ./compile.args - echo "-MESSAGES" >> ./compile.args - echo "-NOCOPYRIGHT" >> ./compile.args - echo "-INCDIR ../../../rtl/verilog" >> ./compile.args - echo "-INCDIR ../../../bench/verilog" >> ./compile.args - echo "-INCDIR ../../../bench/verilog/testcases" >> ./compile.args - if ($arg_verb == 1) then - echo "-DEFINE VERBOSE" >> ./compile.args - endif - cat ./file_list.lst >> ./compile.args - - # compiling - ncvlog -LOGFILE ../log/$testcase_i.compile.log -f ./compile.args #> /dev/null - - # elab.args argument file - echo "//////////////////////////////////////////////////" > ./elab.args - echo "// File created within script ${0}" >> ./elab.args - echo "// path: $cwd" >> ./elab.args - echo "// user: $0" >> ./elab.args - echo "//////////////////////////////////////////////////" >> ./elab.args - echo "-CDSLIB ../bin/cds.lib" >> ./elab.args - echo "-HDLVAR ../bin/hdl.var" >> ./elab.args - echo "-MESSAGES" >> ./elab.args - echo "-NOCOPYRIGHT" >> ./elab.args - echo "-NOTIMINGCHECKS" >> ./elab.args - echo "-SNAPSHOT worklib.testbench:rtl" >> ./elab.args - echo "-NO_TCHK_MSG" >> ./elab.args - echo "-ACCESS +RWC" >> ./elab.args - echo "worklib.$sim_top" >> ./elab.args - - # elaborating - ncelab -LOGFILE ../log/$testcase_i.elab.log -f ./elab.args #> /dev/null - else - - # compile.args argument file - echo "+libext+.v" >> ./compile.args - echo "-y ../../../rtl/verilog" >> ./compile.args - echo "-y ../../../bench/verilog" >> ./compile.args - echo "-y ../../../bench/verilog/testcases" >> ./compile.args - echo "-work ./work" >> ./compile.args - echo "+incdir+../../../rtl/verilog" >> ./compile.args - echo "+incdir+../../../bench/verilog" >> ./compile.args - echo '+define+LOG_DIR=\"../log/$testcase_i\"' >> ./compile.args - if ($arg_verb == 1) then - echo "+define+VERBOSE" >> ./compile.args - endif - cat ./file_list.lst >> ./compile.args - - # open project -# echo "project new ./ testbench ./work" >> ./sim.do - vlib -dos ./work - - # compiling - # echo "vlog -f ./compile.args" >> ./sim.do - vlog -f ./compile.args - endif - - - # SIMULATING - ############# - - if ("$arg_tool" == "NCSim") then - - # sim.args argument file - echo "//////////////////////////////////////////////////" > ./sim.args - echo "// File created within script ${0}" >> ./sim.args - echo "// path: $cwd" >> ./sim.args - echo "// user: $0" >> ./sim.args - echo "//////////////////////////////////////////////////" >> ./sim.args - echo "-CDSLIB ../bin/cds.lib" >> ./sim.args - echo "-HDLVAR ../bin/hdl.var" >> ./sim.args - echo "-MESSAGES" >> ./sim.args - echo "-NOCOPYRIGHT" >> ./sim.args - echo "-INPUT ./sim.tcl" >> ./sim.args - echo "worklib.testbench:rtl" >> ./sim.args - - # sim.tcl file - echo "//////////////////////////////////////////////////" > ./sim.tcl - echo "// File created within script ${0}" >> ./sim.tcl - echo "// path: $cwd" >> ./sim.tcl - echo "// user: $0" >> ./sim.tcl - echo "//////////////////////////////////////////////////" >> ./sim.tcl - if ($arg_wave) then - echo "database -open waves -shm -into ../out/waves.shm" >> ./sim.tcl - echo "probe -create -database waves $sim_top -shm -all -depth all" >> ./sim.tcl - echo "run" >> ./sim.tcl - else - echo "run" >> ./sim.tcl - endif - echo "quit" >> ./sim.tcl - - # simulating - ncsim -LICQUEUE -LOGFILE ../log/$testcase_i.sim.log -f ./sim.args - else - - # sim.do do file - echo "vsim work.testbench work.testbench_utilities work.uart_wb_utilities work.uart_device_utilities work.testcase -wlf ../out/$testcase_i.wlf" >> ./sim.do - if ($arg_wave) then - echo "log -r -internal -ports /testbench/*" >> ./sim.do - endif - echo "run -all" >> ./sim.do - - vsim -c -do ./sim.do - - endif - - @ cur_test_num++ - - if ($cur_test_num < $max_test_num) then - goto simulate - endif - -exit - - -# HELP DISPLAY -############### - -help: - echo "" - echo " Valid verification arguments:" - echo " 'help' / '-h' : This help is displayed" - echo " 'modelsim' / '-m' : ModelSim simulation tool is used, otherwise" - echo " NCSim is used (default)" - echo " 'waveform' / '-w' : Waveform output is recorded, otherwise" - echo " NO waveform is recorded (default)" - echo " 'verbose' / '-v' : Verbose display on monitor, otherwise" - echo " basic display on monitor (default)" - echo " '\042testcase\042' : Testcase which is going to be simulated, otherwise" - echo " ALL testcases are simulated - regression (default);" - echo " Available testcases:" - foreach testcase (../../../bench/verilog/testcases/uart*.v) - echo " "$testcase:t:r - end - echo "" -exit diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/.keepme b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Entries b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Entries deleted file mode 100644 index b974d366..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:06 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Repository b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Repository deleted file mode 100644 index 8c096f11..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/sim/rtl_sim/src diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Root b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Template b/usrp2/fpga/opencores/uart16550/sim/rtl_sim/src/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/syn/CVS/Entries.Log b/usrp2/fpga/opencores/uart16550/syn/CVS/Entries.Log deleted file mode 100644 index 7a4fd3fe..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/CVS/Entries.Log +++ /dev/null @@ -1,5 +0,0 @@ -A D/bin//// -A D/log//// -A D/out//// -A D/run//// -A D/src//// diff --git a/usrp2/fpga/opencores/uart16550/syn/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/CVS/Repository deleted file mode 100644 index 6af4f4f1..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn diff --git a/usrp2/fpga/opencores/uart16550/syn/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/bin/.keepme b/usrp2/fpga/opencores/uart16550/syn/bin/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Entries deleted file mode 100644 index b974d366..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:06 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Repository deleted file mode 100644 index e7bbabb1..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn/bin diff --git a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/bin/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/log/.keepme b/usrp2/fpga/opencores/uart16550/syn/log/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/log/CVS/Entries deleted file mode 100644 index b974d366..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:06 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/log/CVS/Repository deleted file mode 100644 index e6e7d32f..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn/log diff --git a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/log/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/log/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/log/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/out/.keepme b/usrp2/fpga/opencores/uart16550/syn/out/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/out/CVS/Entries deleted file mode 100644 index b974d366..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:06 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/out/CVS/Repository deleted file mode 100644 index 2a89f947..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn/out diff --git a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/out/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/out/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/out/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/run/.keepme b/usrp2/fpga/opencores/uart16550/syn/run/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/run/CVS/Entries deleted file mode 100644 index 892fcc4a..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:07 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/run/CVS/Repository deleted file mode 100644 index 5a41dd3c..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn/run diff --git a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/run/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/run/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/run/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/src/.keepme b/usrp2/fpga/opencores/uart16550/syn/src/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Entries b/usrp2/fpga/opencores/uart16550/syn/src/CVS/Entries deleted file mode 100644 index 892fcc4a..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/.keepme/1.1/Sun Aug 12 18:53:07 2001// -D diff --git a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Repository b/usrp2/fpga/opencores/uart16550/syn/src/CVS/Repository deleted file mode 100644 index 2ecee2b8..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/syn/src diff --git a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Root b/usrp2/fpga/opencores/uart16550/syn/src/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/syn/src/CVS/Template b/usrp2/fpga/opencores/uart16550/syn/src/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/uart16550/verilog/CVS/Entries b/usrp2/fpga/opencores/uart16550/verilog/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/usrp2/fpga/opencores/uart16550/verilog/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/usrp2/fpga/opencores/uart16550/verilog/CVS/Repository b/usrp2/fpga/opencores/uart16550/verilog/CVS/Repository deleted file mode 100644 index 61165834..00000000 --- a/usrp2/fpga/opencores/uart16550/verilog/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -uart16550/verilog diff --git a/usrp2/fpga/opencores/uart16550/verilog/CVS/Root b/usrp2/fpga/opencores/uart16550/verilog/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/uart16550/verilog/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/uart16550/verilog/CVS/Template b/usrp2/fpga/opencores/uart16550/verilog/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/wb_conbus/CVS/Entries b/usrp2/fpga/opencores/wb_conbus/CVS/Entries deleted file mode 100644 index 38a42028..00000000 --- a/usrp2/fpga/opencores/wb_conbus/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -D/bench//// -D/rtl//// diff --git a/usrp2/fpga/opencores/wb_conbus/CVS/Repository b/usrp2/fpga/opencores/wb_conbus/CVS/Repository deleted file mode 100644 index df791b1f..00000000 --- a/usrp2/fpga/opencores/wb_conbus/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -wb_conbus diff --git a/usrp2/fpga/opencores/wb_conbus/CVS/Root b/usrp2/fpga/opencores/wb_conbus/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/wb_conbus/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/wb_conbus/CVS/Template b/usrp2/fpga/opencores/wb_conbus/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Entries b/usrp2/fpga/opencores/wb_conbus/bench/CVS/Entries deleted file mode 100644 index 428c5622..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/verilog//// diff --git a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Repository b/usrp2/fpga/opencores/wb_conbus/bench/CVS/Repository deleted file mode 100644 index eaa8d3ab..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -wb_conbus/bench diff --git a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Root b/usrp2/fpga/opencores/wb_conbus/bench/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/wb_conbus/bench/CVS/Template b/usrp2/fpga/opencores/wb_conbus/bench/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Entries b/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Entries deleted file mode 100644 index 76919de4..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Entries +++ /dev/null @@ -1,6 +0,0 @@ -/tb_wb_conbus_top.v/1.1.1.1/Sat Apr 19 08:40:17 2003// -/tests.v/1.1.1.1/Sat Apr 19 08:40:17 2003// -/wb_mast_model.v/1.1.1.1/Sat Apr 19 08:40:15 2003// -/wb_model_defines.v/1.1.1.1/Sat Apr 19 08:40:16 2003// -/wb_slv_model.v/1.1.1.1/Sat Apr 19 08:40:16 2003// -D diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Repository b/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Repository deleted file mode 100644 index 30644530..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -wb_conbus/bench/verilog diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Root b/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Root deleted file mode 100644 index 44b2aa23..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.opencores.org:/cvsroot/anonymous diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Template b/usrp2/fpga/opencores/wb_conbus/bench/verilog/CVS/Template deleted file mode 100644 index e69de29b..00000000 diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/tb_wb_conbus_top.v b/usrp2/fpga/opencores/wb_conbus/bench/verilog/tb_wb_conbus_top.v deleted file mode 100644 index e15d089f..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/verilog/tb_wb_conbus_top.v +++ /dev/null @@ -1,759 +0,0 @@ -///////////////////////////////////////////////////////////////////// -//// //// -//// Top Level Test Bench //// -//// //// -//// //// -//// Author: Rudolf Usselmann //// -//// rudi@asics.ws //// -//// //// -//// //// -//// //// -///////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000-2002 Rudolf Usselmann //// -//// www.asics.ws //// -//// rudi@asics.ws //// -//// //// -//// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// -//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// -//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// -//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// -//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// -//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// -//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// -//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// -//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// -//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// -//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// -//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// -//// POSSIBILITY OF SUCH DAMAGE. //// -//// //// -///////////////////////////////////////////////////////////////////// - - -// -// -// rewrite from test the wb_conbus module -// -// - - -`include "wb_conbus_defines.v" - -module tb_wb_conbus; - -reg clk; -reg rst; - -// IO Prototypes -wire [31:0] m0_data_i; -wire [31:0] m0_data_o; -wire [31:0] m0_addr_i; -wire [3:0] m0_sel_i; -wire m0_we_i; -wire m0_cyc_i; -wire m0_stb_i; -wire m0_ack_o; -wire m0_err_o; -wire m0_rty_o; -wire [31:0] m1_data_i; -wire [31:0] m1_data_o; -wire [31:0] m1_addr_i; -wire [3:0] m1_sel_i; -wire m1_we_i; -wire m1_cyc_i; -wire m1_stb_i; -wire m1_ack_o; -wire m1_err_o; -wire m1_rty_o; -wire [31:0] m2_data_i; -wire [31:0] m2_data_o; -wire [31:0] m2_addr_i; -wire [3:0] m2_sel_i; -wire m2_we_i; -wire m2_cyc_i; -wire m2_stb_i; -wire m2_ack_o; -wire m2_err_o; -wire m2_rty_o; -wire [31:0] m3_data_i; -wire [31:0] m3_data_o; -wire [31:0] m3_addr_i; -wire [3:0] m3_sel_i; -wire m3_we_i; -wire m3_cyc_i; -wire m3_stb_i; -wire m3_ack_o; -wire m3_err_o; -wire m3_rty_o; -wire [31:0] m4_data_i; -wire [31:0] m4_data_o; -wire [31:0] m4_addr_i; -wire [3:0] m4_sel_i; -wire m4_we_i; -wire m4_cyc_i; -wire m4_stb_i; -wire m4_ack_o; -wire m4_err_o; -wire m4_rty_o; -wire [31:0] m5_data_i; -wire [31:0] m5_data_o; -wire [31:0] m5_addr_i; -wire [3:0] m5_sel_i; -wire m5_we_i; -wire m5_cyc_i; -wire m5_stb_i; -wire m5_ack_o; -wire m5_err_o; -wire m5_rty_o; -wire [31:0] m6_data_i; -wire [31:0] m6_data_o; -wire [31:0] m6_addr_i; -wire [3:0] m6_sel_i; -wire m6_we_i; -wire m6_cyc_i; -wire m6_stb_i; -wire m6_ack_o; -wire m6_err_o; -wire m6_rty_o; -wire [31:0] m7_data_i; -wire [31:0] m7_data_o; -wire [31:0] m7_addr_i; -wire [3:0] m7_sel_i; -wire m7_we_i; -wire m7_cyc_i; -wire m7_stb_i; -wire m7_ack_o; -wire m7_err_o; -wire m7_rty_o; -wire [31:0] s0_data_i; -wire [31:0] s0_data_o; -wire [31:0] s0_addr_o; -wire [3:0] s0_sel_o; -wire s0_we_o; -wire s0_cyc_o; -wire s0_stb_o; -wire s0_ack_i; -wire s0_err_i; -wire s0_rty_i; -wire [31:0] s1_data_i; -wire [31:0] s1_data_o; -wire [31:0] s1_addr_o; -wire [3:0] s1_sel_o; -wire s1_we_o; -wire s1_cyc_o; -wire s1_stb_o; -wire s1_ack_i; -wire s1_err_i; -wire s1_rty_i; -wire [31:0] s2_data_i; -wire [31:0] s2_data_o; -wire [31:0] s2_addr_o; -wire [3:0] s2_sel_o; -wire s2_we_o; -wire s2_cyc_o; -wire s2_stb_o; -wire s2_ack_i; -wire s2_err_i; -wire s2_rty_i; -wire [31:0] s3_data_i; -wire [31:0] s3_data_o; -wire [31:0] s3_addr_o; -wire [3:0] s3_sel_o; -wire s3_we_o; -wire s3_cyc_o; -wire s3_stb_o; -wire s3_ack_i; -wire s3_err_i; -wire s3_rty_i; -wire [31:0] s4_data_i; -wire [31:0] s4_data_o; -wire [31:0] s4_addr_o; -wire [3:0] s4_sel_o; -wire s4_we_o; -wire s4_cyc_o; -wire s4_stb_o; -wire s4_ack_i; -wire s4_err_i; -wire s4_rty_i; -wire [31:0] s5_data_i; -wire [31:0] s5_data_o; -wire [31:0] s5_addr_o; -wire [3:0] s5_sel_o; -wire s5_we_o; -wire s5_cyc_o; -wire s5_stb_o; -wire s5_ack_i; -wire s5_err_i; -wire s5_rty_i; -wire [31:0] s6_data_i; -wire [31:0] s6_data_o; -wire [31:0] s6_addr_o; -wire [3:0] s6_sel_o; -wire s6_we_o; -wire s6_cyc_o; -wire s6_stb_o; -wire s6_ack_i; -wire s6_err_i; -wire s6_rty_i; -wire [31:0] s7_data_i; -wire [31:0] s7_data_o; -wire [31:0] s7_addr_o; -wire [3:0] s7_sel_o; -wire s7_we_o; -wire s7_cyc_o; -wire s7_stb_o; -wire s7_ack_i; -wire s7_err_i; -wire s7_rty_i; - - - -// Test Bench Variables -reg [31:0] wd_cnt; -integer error_cnt; -integer verbose; - -// Misc Variables - -///////////////////////////////////////////////////////////////////// -// -// Defines -// - - -///////////////////////////////////////////////////////////////////// -// -// Simulation Initialization and Start up Section -// - - -initial - begin - $timeformat (-9, 1, " ns", 10); - - $display("\n\n"); - $display("*****************************************************"); - $display("* WISHBONE Connection Matrix Simulation started ... *"); - $display("*****************************************************"); - $display("\n"); - -`ifdef WAVES - $shm_open("waves"); - $shm_probe("AS",test,"AS"); - $display("INFO: Signal dump enabled ...\n\n"); -`endif - wd_cnt = 0; - error_cnt = 0; - clk = 1; - rst = 1; - verbose = 1; - - repeat(5) @(posedge clk); - s0.delay = 1; - s1.delay = 1; - s2.delay = 1; - s3.delay = 1; - s4.delay = 1; - s5.delay = 1; - s6.delay = 1; - s7.delay = 1; - - #1; - rst = 0; - repeat(5) @(posedge clk); - - // HERE IS WHERE THE TEST CASES GO ... - -if(1) // Full Regression Run - begin - $display(" ......................................................"); - $display(" : :"); - $display(" : Regression Run ... :"); - $display(" :....................................................:"); - verbose = 0; - - test_dp1; -// test_rf; -// test_arb1; -// test_arb2; - test_dp2; - - end -else -if(1) // Debug Tests - begin - $display(" ......................................................"); - $display(" : :"); - $display(" : Test Debug Testing ... :"); - $display(" :....................................................:"); - - test_dp2; - - end - -repeat(100) @(posedge clk); -$finish; -end // End of Initial - -///////////////////////////////////////////////////////////////////// -// -// Clock Generation -// - -always #5 clk = ~clk; - -///////////////////////////////////////////////////////////////////// -// -// Watchdog Counter -// - -always @(posedge clk) - if(m0_ack_o | m1_ack_o | m2_ack_o | m3_ack_o | - m4_ack_o | m5_ack_o | m6_ack_o | m7_ack_o) - wd_cnt = 0; - else - wd_cnt = wd_cnt +1; - -always @(wd_cnt) - if(wd_cnt > 5000000) - begin - $display("\n*******************************************"); - $display("*** ERROR: Watchdog Counter Expired ... ***"); - $display("*******************************************\n"); - $finish; - end - -///////////////////////////////////////////////////////////////////// -// -// IO Monitors -// - -///////////////////////////////////////////////////////////////////// -// -// WISHBONE Inter Connect -// - -wb_conbus_top #(4, - 4'h0, - 4, - 4'h1, - 4, - 4'h2, - 4'h3, - 4'h4, - 4'h5, - 4'h6, - 4'h7 - ) - conbus( - .clk_i( clk ), - .rst_i( rst ), - .m0_dat_i( m0_data_i ), - .m0_dat_o( m0_data_o ), - .m0_adr_i( m0_addr_i ), - .m0_sel_i( m0_sel_i ), - .m0_we_i( m0_we_i ), - .m0_cyc_i( m0_cyc_i ), - .m0_stb_i( m0_stb_i ), - .m0_ack_o( m0_ack_o ), - .m0_err_o( m0_err_o ), - .m0_rty_o( m0_rty_o ), - .m1_dat_i( m1_data_i ), - .m1_dat_o( m1_data_o ), - .m1_adr_i( m1_addr_i ), - .m1_sel_i( m1_sel_i ), - .m1_we_i( m1_we_i ), - .m1_cyc_i( m1_cyc_i ), - .m1_stb_i( m1_stb_i ), - .m1_ack_o( m1_ack_o ), - .m1_err_o( m1_err_o ), - .m1_rty_o( m1_rty_o ), - .m2_dat_i( m2_data_i ), - .m2_dat_o( m2_data_o ), - .m2_adr_i( m2_addr_i ), - .m2_sel_i( m2_sel_i ), - .m2_we_i( m2_we_i ), - .m2_cyc_i( m2_cyc_i ), - .m2_stb_i( m2_stb_i ), - .m2_ack_o( m2_ack_o ), - .m2_err_o( m2_err_o ), - .m2_rty_o( m2_rty_o ), - .m3_dat_i( m3_data_i ), - .m3_dat_o( m3_data_o ), - .m3_adr_i( m3_addr_i ), - .m3_sel_i( m3_sel_i ), - .m3_we_i( m3_we_i ), - .m3_cyc_i( m3_cyc_i ), - .m3_stb_i( m3_stb_i ), - .m3_ack_o( m3_ack_o ), - .m3_err_o( m3_err_o ), - .m3_rty_o( m3_rty_o ), - .m4_dat_i( m4_data_i ), - .m4_dat_o( m4_data_o ), - .m4_adr_i( m4_addr_i ), - .m4_sel_i( m4_sel_i ), - .m4_we_i( m4_we_i ), - .m4_cyc_i( m4_cyc_i ), - .m4_stb_i( m4_stb_i ), - .m4_ack_o( m4_ack_o ), - .m4_err_o( m4_err_o ), - .m4_rty_o( m4_rty_o ), - .m5_dat_i( m5_data_i ), - .m5_dat_o( m5_data_o ), - .m5_adr_i( m5_addr_i ), - .m5_sel_i( m5_sel_i ), - .m5_we_i( m5_we_i ), - .m5_cyc_i( m5_cyc_i ), - .m5_stb_i( m5_stb_i ), - .m5_ack_o( m5_ack_o ), - .m5_err_o( m5_err_o ), - .m5_rty_o( m5_rty_o ), - .m6_dat_i( m6_data_i ), - .m6_dat_o( m6_data_o ), - .m6_adr_i( m6_addr_i ), - .m6_sel_i( m6_sel_i ), - .m6_we_i( m6_we_i ), - .m6_cyc_i( m6_cyc_i ), - .m6_stb_i( m6_stb_i ), - .m6_ack_o( m6_ack_o ), - .m6_err_o( m6_err_o ), - .m6_rty_o( m6_rty_o ), - .m7_dat_i( m7_data_i ), - .m7_dat_o( m7_data_o ), - .m7_adr_i( m7_addr_i ), - .m7_sel_i( m7_sel_i ), - .m7_we_i( m7_we_i ), - .m7_cyc_i( m7_cyc_i ), - .m7_stb_i( m7_stb_i ), - .m7_ack_o( m7_ack_o ), - .m7_err_o( m7_err_o ), - .m7_rty_o( m7_rty_o ), - .s0_dat_i( s0_data_i ), - .s0_dat_o( s0_data_o ), - .s0_adr_o( s0_addr_o ), - .s0_sel_o( s0_sel_o ), - .s0_we_o( s0_we_o ), - .s0_cyc_o( s0_cyc_o ), - .s0_stb_o( s0_stb_o ), - .s0_ack_i( s0_ack_i ), - .s0_err_i( s0_err_i ), - .s0_rty_i( s0_rty_i ), - .s1_dat_i( s1_data_i ), - .s1_dat_o( s1_data_o ), - .s1_adr_o( s1_addr_o ), - .s1_sel_o( s1_sel_o ), - .s1_we_o( s1_we_o ), - .s1_cyc_o( s1_cyc_o ), - .s1_stb_o( s1_stb_o ), - .s1_ack_i( s1_ack_i ), - .s1_err_i( s1_err_i ), - .s1_rty_i( s1_rty_i ), - .s2_dat_i( s2_data_i ), - .s2_dat_o( s2_data_o ), - .s2_adr_o( s2_addr_o ), - .s2_sel_o( s2_sel_o ), - .s2_we_o( s2_we_o ), - .s2_cyc_o( s2_cyc_o ), - .s2_stb_o( s2_stb_o ), - .s2_ack_i( s2_ack_i ), - .s2_err_i( s2_err_i ), - .s2_rty_i( s2_rty_i ), - .s3_dat_i( s3_data_i ), - .s3_dat_o( s3_data_o ), - .s3_adr_o( s3_addr_o ), - .s3_sel_o( s3_sel_o ), - .s3_we_o( s3_we_o ), - .s3_cyc_o( s3_cyc_o ), - .s3_stb_o( s3_stb_o ), - .s3_ack_i( s3_ack_i ), - .s3_err_i( s3_err_i ), - .s3_rty_i( s3_rty_i ), - .s4_dat_i( s4_data_i ), - .s4_dat_o( s4_data_o ), - .s4_adr_o( s4_addr_o ), - .s4_sel_o( s4_sel_o ), - .s4_we_o( s4_we_o ), - .s4_cyc_o( s4_cyc_o ), - .s4_stb_o( s4_stb_o ), - .s4_ack_i( s4_ack_i ), - .s4_err_i( s4_err_i ), - .s4_rty_i( s4_rty_i ), - .s5_dat_i( s5_data_i ), - .s5_dat_o( s5_data_o ), - .s5_adr_o( s5_addr_o ), - .s5_sel_o( s5_sel_o ), - .s5_we_o( s5_we_o ), - .s5_cyc_o( s5_cyc_o ), - .s5_stb_o( s5_stb_o ), - .s5_ack_i( s5_ack_i ), - .s5_err_i( s5_err_i ), - .s5_rty_i( s5_rty_i ), - .s6_dat_i( s6_data_i ), - .s6_dat_o( s6_data_o ), - .s6_adr_o( s6_addr_o ), - .s6_sel_o( s6_sel_o ), - .s6_we_o( s6_we_o ), - .s6_cyc_o( s6_cyc_o ), - .s6_stb_o( s6_stb_o ), - .s6_ack_i( s6_ack_i ), - .s6_err_i( s6_err_i ), - .s6_rty_i( s6_rty_i ), - .s7_dat_i( s7_data_i ), - .s7_dat_o( s7_data_o ), - .s7_adr_o( s7_addr_o ), - .s7_sel_o( s7_sel_o ), - .s7_we_o( s7_we_o ), - .s7_cyc_o( s7_cyc_o ), - .s7_stb_o( s7_stb_o ), - .s7_ack_i( s7_ack_i ), - .s7_err_i( s7_err_i ), - .s7_rty_i( s7_rty_i ) - ); - - -///////////////////////////////////////////////////////////////////// -// -// WISHBONE Master Models -// - -wb_mast m0( .clk( clk ), - .rst( ~rst ), - .adr( m0_addr_i ), - .din( m0_data_o ), - .dout( m0_data_i ), - .cyc( m0_cyc_i ), - .stb( m0_stb_i ), - .sel( m0_sel_i ), - .we( m0_we_i ), - .ack( m0_ack_o ), - .err( m0_err_o ), - .rty( m0_rty_o ) - ); - -wb_mast m1( .clk( clk ), - .rst( ~rst ), - .adr( m1_addr_i ), - .din( m1_data_o ), - .dout( m1_data_i ), - .cyc( m1_cyc_i ), - .stb( m1_stb_i ), - .sel( m1_sel_i ), - .we( m1_we_i ), - .ack( m1_ack_o ), - .err( m1_err_o ), - .rty( m1_rty_o ) - ); - -wb_mast m2( .clk( clk ), - .rst( ~rst ), - .adr( m2_addr_i ), - .din( m2_data_o ), - .dout( m2_data_i ), - .cyc( m2_cyc_i ), - .stb( m2_stb_i ), - .sel( m2_sel_i ), - .we( m2_we_i ), - .ack( m2_ack_o ), - .err( m2_err_o ), - .rty( m2_rty_o ) - ); - -wb_mast m3( .clk( clk ), - .rst( ~rst ), - .adr( m3_addr_i ), - .din( m3_data_o ), - .dout( m3_data_i ), - .cyc( m3_cyc_i ), - .stb( m3_stb_i ), - .sel( m3_sel_i ), - .we( m3_we_i ), - .ack( m3_ack_o ), - .err( m3_err_o ), - .rty( m3_rty_o ) - ); - -wb_mast m4( .clk( clk ), - .rst( ~rst ), - .adr( m4_addr_i ), - .din( m4_data_o ), - .dout( m4_data_i ), - .cyc( m4_cyc_i ), - .stb( m4_stb_i ), - .sel( m4_sel_i ), - .we( m4_we_i ), - .ack( m4_ack_o ), - .err( m4_err_o ), - .rty( m4_rty_o ) - ); - -wb_mast m5( .clk( clk ), - .rst( ~rst ), - .adr( m5_addr_i ), - .din( m5_data_o ), - .dout( m5_data_i ), - .cyc( m5_cyc_i ), - .stb( m5_stb_i ), - .sel( m5_sel_i ), - .we( m5_we_i ), - .ack( m5_ack_o ), - .err( m5_err_o ), - .rty( m5_rty_o ) - ); - -wb_mast m6( .clk( clk ), - .rst( ~rst ), - .adr( m6_addr_i ), - .din( m6_data_o ), - .dout( m6_data_i ), - .cyc( m6_cyc_i ), - .stb( m6_stb_i ), - .sel( m6_sel_i ), - .we( m6_we_i ), - .ack( m6_ack_o ), - .err( m6_err_o ), - .rty( m6_rty_o ) - ); - -wb_mast m7( .clk( clk ), - .rst( ~rst ), - .adr( m7_addr_i ), - .din( m7_data_o ), - .dout( m7_data_i ), - .cyc( m7_cyc_i ), - .stb( m7_stb_i ), - .sel( m7_sel_i ), - .we( m7_we_i ), - .ack( m7_ack_o ), - .err( m7_err_o ), - .rty( m7_rty_o ) - ); - - -///////////////////////////////////////////////////////////////////// -// -// WISHBONE Slave Models -// - -wb_slv s0( .clk( clk ), - .rst( ~rst ), - .adr( s0_addr_o ), - .din( s0_data_o ), - .dout( s0_data_i ), - .cyc( s0_cyc_o ), - .stb( s0_stb_o ), - .sel( s0_sel_o ), - .we( s0_we_o ), - .ack( s0_ack_i ), - .err( s0_err_i ), - .rty( s0_rty_i ) - ); - -wb_slv s1( .clk( clk ), - .rst( ~rst ), - .adr( s1_addr_o ), - .din( s1_data_o ), - .dout( s1_data_i ), - .cyc( s1_cyc_o ), - .stb( s1_stb_o ), - .sel( s1_sel_o ), - .we( s1_we_o ), - .ack( s1_ack_i ), - .err( s1_err_i ), - .rty( s1_rty_i ) - ); - -wb_slv s2( .clk( clk ), - .rst( ~rst ), - .adr( s2_addr_o ), - .din( s2_data_o ), - .dout( s2_data_i ), - .cyc( s2_cyc_o ), - .stb( s2_stb_o ), - .sel( s2_sel_o ), - .we( s2_we_o ), - .ack( s2_ack_i ), - .err( s2_err_i ), - .rty( s2_rty_i ) - ); - -wb_slv s3( .clk( clk ), - .rst( ~rst ), - .adr( s3_addr_o ), - .din( s3_data_o ), - .dout( s3_data_i ), - .cyc( s3_cyc_o ), - .stb( s3_stb_o ), - .sel( s3_sel_o ), - .we( s3_we_o ), - .ack( s3_ack_i ), - .err( s3_err_i ), - .rty( s3_rty_i ) - ); - -wb_slv s4( .clk( clk ), - .rst( ~rst ), - .adr( s4_addr_o ), - .din( s4_data_o ), - .dout( s4_data_i ), - .cyc( s4_cyc_o ), - .stb( s4_stb_o ), - .sel( s4_sel_o ), - .we( s4_we_o ), - .ack( s4_ack_i ), - .err( s4_err_i ), - .rty( s4_rty_i ) - ); - -wb_slv s5( .clk( clk ), - .rst( ~rst ), - .adr( s5_addr_o ), - .din( s5_data_o ), - .dout( s5_data_i ), - .cyc( s5_cyc_o ), - .stb( s5_stb_o ), - .sel( s5_sel_o ), - .we( s5_we_o ), - .ack( s5_ack_i ), - .err( s5_err_i ), - .rty( s5_rty_i ) - ); - -wb_slv s6( .clk( clk ), - .rst( ~rst ), - .adr( s6_addr_o ), - .din( s6_data_o ), - .dout( s6_data_i ), - .cyc( s6_cyc_o ), - .stb( s6_stb_o ), - .sel( s6_sel_o ), - .we( s6_we_o ), - .ack( s6_ack_i ), - .err( s6_err_i ), - .rty( s6_rty_i ) - ); - -wb_slv s7( .clk( clk ), - .rst( ~rst ), - .adr( s7_addr_o ), - .din( s7_data_o ), - .dout( s7_data_i ), - .cyc( s7_cyc_o ), - .stb( s7_stb_o ), - .sel( s7_sel_o ), - .we( s7_we_o ), - .ack( s7_ack_i ), - .err( s7_err_i ), - .rty( s7_rty_i ) - ); - - -`include "tests.v" - -endmodule - diff --git a/usrp2/fpga/opencores/wb_conbus/bench/verilog/tests.v b/usrp2/fpga/opencores/wb_conbus/bench/verilog/tests.v deleted file mode 100644 index 5067f269..00000000 --- a/usrp2/fpga/opencores/wb_conbus/bench/verilog/tests.v +++ /dev/null @@ -1,828 +0,0 @@ -///////////////////////////////////////////////////////////////////// -//// //// -//// WISHBONE Connection Matrix Test Cases //// -//// //// -//// //// -//// Author: Rudolf Usselmann //// -//// rudi@asics.ws //// -//// //// -//// //// -//// Downloaded from: http://www.opencores.org/cores/wb_dma/ //// -//// //// -///////////////////////////////////////////////////////////////////// -//// //// -//// Copyright (C) 2000 Rudolf Usselmann //// -//// rudi@asics.ws //// -//// //// -//// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// -//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// -//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// -//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// -//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// -//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// -//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// -//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// -//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// -//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// -//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// -//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// -//// POSSIBILITY OF SUCH DAMAGE. //// -//// //// -///////////////////////////////////////////////////////////////////// - -// CVS Log -// -// $Id: tests.v,v 1.1.1.1 2003/04/19 08:40:17 johny Exp $ -// -// $Date: 2003/04/19 08:40:17 $ -// $Revision: 1.1.1.1 $ -// $Author: johny $ -// $Locker: $ -// $State: Exp $ -// -// Change History: -// $Log: tests.v,v $ -// Revision 1.1.1.1 2003/04/19 08:40:17 johny -// no message -// -// Revision 1.1.1.1 2001/10/19 11:04:27 rudi -// WISHBONE CONMAX IP Core -// -// -// -// -// -// - - -task show_errors; - -begin - -$display("\n"); -$display(" +--------------------+"); -$display(" | Total ERRORS: %0d |", error_cnt); -$display(" +--------------------+"); - -end -endtask - - -task init_all_mem; - -begin - s0.fill_mem(1); - s1.fill_mem(1); - s2.fill_mem(1); - s3.fill_mem(1); - s4.fill_mem(1); - s5.fill_mem(1); - s6.fill_mem(1); - s7.fill_mem(1); - - - m0.mem_fill; - m1.mem_fill; - m2.mem_fill; - m3.mem_fill; - m4.mem_fill; - m5.mem_fill; - m6.mem_fill; - m7.mem_fill; - -end -endtask - - -task verify; -input master; -input slave; -input count; - -integer master, slave, count; -begin -verify_sub(master,slave,count,0,0); -end -endtask - - -task verify_sub; -input master; -input slave; -input count; -input mo; -input so; - -integer master, slave, count; -integer mo, so; -integer o; -integer n; -reg [31:0] mdata, sdata; - -begin - -//$display("V2: %0d %0d %0d %0d %0d",master, slave, count, mo,so); - -for(n=0;n60M , and 374 SLICE if using Multiplexor bus -// or 150 SLICE if using tri-state bus. -// -`include "wb_conbus_defines.v" -//`define WB_USE_TRISTATE - - -module wb_conbus_top( - clk_i, rst_i, - - // Master 0 Interface - m0_dat_i, m0_dat_o, m0_adr_i, m0_sel_i, m0_we_i, m0_cyc_i, - m0_stb_i, m0_ack_o, m0_err_o, m0_rty_o, m0_cab_i, - - // Master 1 Interface - m1_dat_i, m1_dat_o, m1_adr_i, m1_sel_i, m1_we_i, m1_cyc_i, - m1_stb_i, m1_ack_o, m1_err_o, m1_rty_o, m1_cab_i, - - // Master 2 Interface - m2_dat_i, m2_dat_o, m2_adr_i, m2_sel_i, m2_we_i, m2_cyc_i, - m2_stb_i, m2_ack_o, m2_err_o, m2_rty_o, m2_cab_i, - - // Master 3 Interface - m3_dat_i, m3_dat_o, m3_adr_i, m3_sel_i, m3_we_i, m3_cyc_i, - m3_stb_i, m3_ack_o, m3_err_o, m3_rty_o, m3_cab_i, - - // Master 4 Interface - m4_dat_i, m4_dat_o, m4_adr_i, m4_sel_i, m4_we_i, m4_cyc_i, - m4_stb_i, m4_ack_o, m4_err_o, m4_rty_o, m4_cab_i, - - // Master 5 Interface - m5_dat_i, m5_dat_o, m5_adr_i, m5_sel_i, m5_we_i, m5_cyc_i, - m5_stb_i, m5_ack_o, m5_err_o, m5_rty_o, m5_cab_i, - - // Master 6 Interface - m6_dat_i, m6_dat_o, m6_adr_i, m6_sel_i, m6_we_i, m6_cyc_i, - m6_stb_i, m6_ack_o, m6_err_o, m6_rty_o, m6_cab_i, - - // Master 7 Interface - m7_dat_i, m7_dat_o, m7_adr_i, m7_sel_i, m7_we_i, m7_cyc_i, - m7_stb_i, m7_ack_o, m7_err_o, m7_rty_o, m7_cab_i, - - // Slave 0 Interface - s0_dat_i, s0_dat_o, s0_adr_o, s0_sel_o, s0_we_o, s0_cyc_o, - s0_stb_o, s0_ack_i, s0_err_i, s0_rty_i, s0_cab_o, - - // Slave 1 Interface - s1_dat_i, s1_dat_o, s1_adr_o, s1_sel_o, s1_we_o, s1_cyc_o, - s1_stb_o, s1_ack_i, s1_err_i, s1_rty_i, s1_cab_o, - - // Slave 2 Interface - s2_dat_i, s2_dat_o, s2_adr_o, s2_sel_o, s2_we_o, s2_cyc_o, - s2_stb_o, s2_ack_i, s2_err_i, s2_rty_i, s2_cab_o, - - // Slave 3 Interface - s3_dat_i, s3_dat_o, s3_adr_o, s3_sel_o, s3_we_o, s3_cyc_o, - s3_stb_o, s3_ack_i, s3_err_i, s3_rty_i, s3_cab_o, - - // Slave 4 Interface - s4_dat_i, s4_dat_o, s4_adr_o, s4_sel_o, s4_we_o, s4_cyc_o, - s4_stb_o, s4_ack_i, s4_err_i, s4_rty_i, s4_cab_o, - - // Slave 5 Interface - s5_dat_i, s5_dat_o, s5_adr_o, s5_sel_o, s5_we_o, s5_cyc_o, - s5_stb_o, s5_ack_i, s5_err_i, s5_rty_i, s5_cab_o, - - // Slave 6 Interface - s6_dat_i, s6_dat_o, s6_adr_o, s6_sel_o, s6_we_o, s6_cyc_o, - s6_stb_o, s6_ack_i, s6_err_i, s6_rty_i, s6_cab_o, - - // Slave 7 Interface - s7_dat_i, s7_dat_o, s7_adr_o, s7_sel_o, s7_we_o, s7_cyc_o, - s7_stb_o, s7_ack_i, s7_err_i, s7_rty_i, s7_cab_o - - ); - -//////////////////////////////////////////////////////////////////// -// -// Module Parameters -// - - -parameter s0_addr_w = 4 ; // slave 0 address decode width -parameter s0_addr = 4'h0; // slave 0 address -parameter s1_addr_w = 4 ; // slave 1 address decode width -parameter s1_addr = 4'h1; // slave 1 address -parameter s27_addr_w = 8 ; // slave 2 to slave 7 address decode width -parameter s2_addr = 8'h92; // slave 2 address -parameter s3_addr = 8'h93; // slave 3 address -parameter s4_addr = 8'h94; // slave 4 address -parameter s5_addr = 8'h95; // slave 5 address -parameter s6_addr = 8'h96; // slave 6 address -parameter s7_addr = 8'h97; // slave 7 address - - parameter dw = 32; // Data bus Width - parameter aw = 32; // Address bus Width - parameter sw = dw / 8; // Number of Select Lines - parameter mbusw = aw + sw + dw + 4; //address width + byte select width + dat width + cyc + we + stb +cab , input from master interface - parameter sbusw = 3; // ack + err + rty, input from slave interface - parameter mselectw = 8; // number of masters - parameter sselectw = 8; // number of slavers - - -//////////////////////////////////////////////////////////////////// -// -// Module IOs -// - -input clk_i, rst_i; - -// Master 0 Interface -input [dw-1:0] m0_dat_i; -output [dw-1:0] m0_dat_o; -input [aw-1:0] m0_adr_i; -input [sw-1:0] m0_sel_i; -input m0_we_i; -input m0_cyc_i; -input m0_stb_i; -input m0_cab_i; -output m0_ack_o; -output m0_err_o; -output m0_rty_o; - -// Master 1 Interface -input [dw-1:0] m1_dat_i; -output [dw-1:0] m1_dat_o; -input [aw-1:0] m1_adr_i; -input [sw-1:0] m1_sel_i; -input m1_we_i; -input m1_cyc_i; -input m1_stb_i; -input m1_cab_i; -output m1_ack_o; -output m1_err_o; -output m1_rty_o; - -// Master 2 Interface -input [dw-1:0] m2_dat_i; -output [dw-1:0] m2_dat_o; -input [aw-1:0] m2_adr_i; -input [sw-1:0] m2_sel_i; -input m2_we_i; -input m2_cyc_i; -input m2_stb_i; -input m2_cab_i; -output m2_ack_o; -output m2_err_o; -output m2_rty_o; - -// Master 3 Interface -input [dw-1:0] m3_dat_i; -output [dw-1:0] m3_dat_o; -input [aw-1:0] m3_adr_i; -input [sw-1:0] m3_sel_i; -input m3_we_i; -input m3_cyc_i; -input m3_stb_i; -input m3_cab_i; -output m3_ack_o; -output m3_err_o; -output m3_rty_o; - -// Master 4 Interface -input [dw-1:0] m4_dat_i; -output [dw-1:0] m4_dat_o; -input [aw-1:0] m4_adr_i; -input [sw-1:0] m4_sel_i; -input m4_we_i; -input m4_cyc_i; -input m4_stb_i; -input m4_cab_i; -output m4_ack_o; -output m4_err_o; -output m4_rty_o; - -// Master 5 Interface -input [dw-1:0] m5_dat_i; -output [dw-1:0] m5_dat_o; -input [aw-1:0] m5_adr_i; -input [sw-1:0] m5_sel_i; -input m5_we_i; -input m5_cyc_i; -input m5_stb_i; -input m5_cab_i; -output m5_ack_o; -output m5_err_o; -output m5_rty_o; - -// Master 6 Interface -input [dw-1:0] m6_dat_i; -output [dw-1:0] m6_dat_o; -input [aw-1:0] m6_adr_i; -input [sw-1:0] m6_sel_i; -input m6_we_i; -input m6_cyc_i; -input m6_stb_i; -input m6_cab_i; -output m6_ack_o; -output m6_err_o; -output m6_rty_o; - -// Master 7 Interface -input [dw-1:0] m7_dat_i; -output [dw-1:0] m7_dat_o; -input [aw-1:0] m7_adr_i; -input [sw-1:0] m7_sel_i; -input m7_we_i; -input m7_cyc_i; -input m7_stb_i; -input m7_cab_i; -output m7_ack_o; -output m7_err_o; -output m7_rty_o; - -// Slave 0 Interface -input [dw-1:0] s0_dat_i; -output [dw-1:0] s0_dat_o; -output [aw-1:0] s0_adr_o; -output [sw-1:0] s0_sel_o; -output s0_we_o; -output s0_cyc_o; -output s0_stb_o; -output s0_cab_o; -input s0_ack_i; -input s0_err_i; -input s0_rty_i; - -// Slave 1 Interface -input [dw-1:0] s1_dat_i; -output [dw-1:0] s1_dat_o; -output [aw-1:0] s1_adr_o; -output [sw-1:0] s1_sel_o; -output s1_we_o; -output s1_cyc_o; -output s1_stb_o; -output s1_cab_o; -input s1_ack_i; -input s1_err_i; -input s1_rty_i; - -// Slave 2 Interface -input [dw-1:0] s2_dat_i; -output [dw-1:0] s2_dat_o; -output [aw-1:0] s2_adr_o; -output [sw-1:0] s2_sel_o; -output s2_we_o; -output s2_cyc_o; -output s2_stb_o; -output s2_cab_o; -input s2_ack_i; -input s2_err_i; -input s2_rty_i; - -// Slave 3 Interface -input [dw-1:0] s3_dat_i; -output [dw-1:0] s3_dat_o; -output [aw-1:0] s3_adr_o; -output [sw-1:0] s3_sel_o; -output s3_we_o; -output s3_cyc_o; -output s3_stb_o; -output s3_cab_o; -input s3_ack_i; -input s3_err_i; -input s3_rty_i; - -// Slave 4 Interface -input [dw-1:0] s4_dat_i; -output [dw-1:0] s4_dat_o; -output [aw-1:0] s4_adr_o; -output [sw-1:0] s4_sel_o; -output s4_we_o; -output s4_cyc_o; -output s4_stb_o; -output s4_cab_o; -input s4_ack_i; -input s4_err_i; -input s4_rty_i; - -// Slave 5 Interface -input [dw-1:0] s5_dat_i; -output [dw-1:0] s5_dat_o; -output [aw-1:0] s5_adr_o; -output [sw-1:0] s5_sel_o; -output s5_we_o; -output s5_cyc_o; -output s5_stb_o; -output s5_cab_o; -input s5_ack_i; -input s5_err_i; -input s5_rty_i; - -// Slave 6 Interface -input [dw-1:0] s6_dat_i; -output [dw-1:0] s6_dat_o; -output [aw-1:0] s6_adr_o; -output [sw-1:0] s6_sel_o; -output s6_we_o; -output s6_cyc_o; -output s6_stb_o; -output s6_cab_o; -input s6_ack_i; -input s6_err_i; -input s6_rty_i; - -// Slave 7 Interface -input [dw-1:0] s7_dat_i; -output [dw-1:0] s7_dat_o; -output [aw-1:0] s7_adr_o; -output [sw-1:0] s7_sel_o; -output s7_we_o; -output s7_cyc_o; -output s7_stb_o; -output s7_cab_o; -input s7_ack_i; -input s7_err_i; -input s7_rty_i; - - -//////////////////////////////////////////////////////////////////// -// -// Local wires -// - -wire [mselectw -1:0] i_gnt_arb; -wire [2:0] gnt; -reg [sselectw -1:0] i_ssel_dec; -`ifdef WB_USE_TRISTATE -wire [mbusw -1:0] i_bus_m; -`else -reg [mbusw -1:0] i_bus_m; // internal share bus, master data and control to slave -`endif -wire [dw -1:0] i_dat_s; // internal share bus , slave data to master -wire [sbusw -1:0] i_bus_s; // internal share bus , slave control to master - - - -//////////////////////////////////////////////////////////////////// -// -// Master output Interfaces -// - -// master0 -assign m0_dat_o = i_dat_s; -assign {m0_ack_o, m0_err_o, m0_rty_o} = i_bus_s & {3{i_gnt_arb[0]}}; - -// master1 -assign m1_dat_o = i_dat_s; -assign {m1_ack_o, m1_err_o, m1_rty_o} = i_bus_s & {3{i_gnt_arb[1]}}; - -// master2 - -assign m2_dat_o = i_dat_s; -assign {m2_ack_o, m2_err_o, m2_rty_o} = i_bus_s & {3{i_gnt_arb[2]}}; - -// master3 - -assign m3_dat_o = i_dat_s; -assign {m3_ack_o, m3_err_o, m3_rty_o} = i_bus_s & {3{i_gnt_arb[3]}}; - -// master4 - -assign m4_dat_o = i_dat_s; -assign {m4_ack_o, m4_err_o, m4_rty_o} = i_bus_s & {3{i_gnt_arb[4]}}; - -// master5 - -assign m5_dat_o = i_dat_s; -assign {m5_ack_o, m5_err_o, m5_rty_o} = i_bus_s & {3{i_gnt_arb[5]}}; - -// master6 - -assign m6_dat_o = i_dat_s; -assign {m6_ack_o, m6_err_o, m6_rty_o} = i_bus_s & {3{i_gnt_arb[6]}}; - -// master7 - -assign m7_dat_o = i_dat_s; -assign {m7_ack_o, m7_err_o, m7_rty_o} = i_bus_s & {3{i_gnt_arb[7]}}; - - -assign i_bus_s = {s0_ack_i | s1_ack_i | s2_ack_i | s3_ack_i | s4_ack_i | s5_ack_i | s6_ack_i | s7_ack_i , - s0_err_i | s1_err_i | s2_err_i | s3_err_i | s4_err_i | s5_err_i | s6_err_i | s7_err_i , - s0_rty_i | s1_rty_i | s2_rty_i | s3_rty_i | s4_rty_i | s5_rty_i | s6_rty_i | s7_rty_i }; - -//////////////////////////////// -// Slave output interface -// -// slave0 -assign {s0_adr_o, s0_sel_o, s0_dat_o, s0_we_o, s0_cab_o,s0_cyc_o} = i_bus_m[mbusw -1:1]; -assign s0_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[0]; // stb_o = cyc_i & stb_i & i_ssel_dec - -// slave1 - -assign {s1_adr_o, s1_sel_o, s1_dat_o, s1_we_o, s1_cab_o, s1_cyc_o} = i_bus_m[mbusw -1:1]; -assign s1_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[1]; - -// slave2 - -assign {s2_adr_o, s2_sel_o, s2_dat_o, s2_we_o, s2_cab_o, s2_cyc_o} = i_bus_m[mbusw -1:1]; -assign s2_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[2]; - -// slave3 - -assign {s3_adr_o, s3_sel_o, s3_dat_o, s3_we_o, s3_cab_o, s3_cyc_o} = i_bus_m[mbusw -1:1]; -assign s3_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[3]; - -// slave4 - -assign {s4_adr_o, s4_sel_o, s4_dat_o, s4_we_o, s4_cab_o, s4_cyc_o} = i_bus_m[mbusw -1:1]; -assign s4_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[4]; - -// slave5 - -assign {s5_adr_o, s5_sel_o, s5_dat_o, s5_we_o, s5_cab_o, s5_cyc_o} = i_bus_m[mbusw -1:1]; -assign s5_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[5]; - -// slave6 - -assign {s6_adr_o, s6_sel_o, s6_dat_o, s6_we_o, s6_cab_o, s6_cyc_o} = i_bus_m[mbusw -1:1]; -assign s6_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[6]; - -// slave7 - -assign {s7_adr_o, s7_sel_o, s7_dat_o, s7_we_o, s7_cab_o, s7_cyc_o} = i_bus_m[mbusw -1:1]; -assign s7_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[7]; - -/////////////////////////////////////// -// Master and Slave input interface -// - -`ifdef WB_USE_TRISTATE -// input from master interface -assign i_bus_m = i_gnt_arb[0] ? {m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i, m0_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[1] ? {m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i,m1_cyc_i, m1_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[2] ? {m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i, m2_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[3] ? {m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i, m3_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[4] ? {m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i, m4_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[5] ? {m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i, m5_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[6] ? {m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i, m6_stb_i} : 72'bz ; -assign i_bus_m = i_gnt_arb[7] ? {m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i} : 72'bz ; -// input from slave interface -assign i_dat_s = i_ssel_dec[0] ? s0_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[1] ? s1_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[2] ? s2_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[3] ? s3_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[4] ? s4_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[5] ? s5_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[6] ? s6_dat_i: 32'bz; -assign i_dat_s = i_ssel_dec[7] ? s7_dat_i: 32'bz; - -`else - -always @(gnt , m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i, - m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i, m1_cyc_i,m1_stb_i, - m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i,m2_stb_i, - m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i,m3_stb_i, - m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i,m4_stb_i, - m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i,m5_stb_i, - m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i,m6_stb_i, - m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i) - case(gnt) - 3'h0: i_bus_m = {m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i}; - 3'h1: i_bus_m = {m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i, m1_cyc_i,m1_stb_i}; - 3'h2: i_bus_m = {m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i,m2_stb_i}; - 3'h3: i_bus_m = {m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i,m3_stb_i}; - 3'h4: i_bus_m = {m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i,m4_stb_i}; - 3'h5: i_bus_m = {m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i,m5_stb_i}; - 3'h6: i_bus_m = {m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i,m6_stb_i}; - 3'h7: i_bus_m = {m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i}; - default:i_bus_m = 72'b0;//{m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i}; -endcase - -assign i_dat_s = i_ssel_dec[0] ? s0_dat_i : - i_ssel_dec[1] ? s1_dat_i : - i_ssel_dec[2] ? s2_dat_i : - i_ssel_dec[3] ? s3_dat_i : - i_ssel_dec[4] ? s4_dat_i : - i_ssel_dec[5] ? s5_dat_i : - i_ssel_dec[6] ? s6_dat_i : - i_ssel_dec[7] ? s7_dat_i : {dw{1'b0}}; -`endif -// -// arbitor -// -assign i_gnt_arb[0] = (gnt == 3'd0); -assign i_gnt_arb[1] = (gnt == 3'd1); -assign i_gnt_arb[2] = (gnt == 3'd2); -assign i_gnt_arb[3] = (gnt == 3'd3); -assign i_gnt_arb[4] = (gnt == 3'd4); -assign i_gnt_arb[5] = (gnt == 3'd5); -assign i_gnt_arb[6] = (gnt == 3'd6); -assign i_gnt_arb[7] = (gnt == 3'd7); - -wb_conbus_arb wb_conbus_arb( - .clk(clk_i), - .rst(rst_i), - .req({ m7_cyc_i, - m6_cyc_i, - m5_cyc_i, - m4_cyc_i, - m3_cyc_i, - m2_cyc_i, - m1_cyc_i, - m0_cyc_i}), - .gnt(gnt) -); - -////////////////////////////////// -// address decode logic -// -wire [7:0] m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec; -always @(gnt, m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec) - case(gnt) - 3'h0: i_ssel_dec = m0_ssel_dec; - 3'h1: i_ssel_dec = m1_ssel_dec; - 3'h2: i_ssel_dec = m2_ssel_dec; - 3'h3: i_ssel_dec = m3_ssel_dec; - 3'h4: i_ssel_dec = m4_ssel_dec; - 3'h5: i_ssel_dec = m5_ssel_dec; - 3'h6: i_ssel_dec = m6_ssel_dec; - 3'h7: i_ssel_dec = m7_ssel_dec; - default: i_ssel_dec = 7'b0; -endcase -// -// decode all master address before arbitor for running faster -// -assign m0_ssel_dec[0] = (m0_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m0_ssel_dec[1] = (m0_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m0_ssel_dec[2] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m0_ssel_dec[3] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m0_ssel_dec[4] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m0_ssel_dec[5] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m0_ssel_dec[6] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m0_ssel_dec[7] = (m0_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m1_ssel_dec[0] = (m1_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m1_ssel_dec[1] = (m1_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m1_ssel_dec[2] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m1_ssel_dec[3] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m1_ssel_dec[4] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m1_ssel_dec[5] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m1_ssel_dec[6] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m1_ssel_dec[7] = (m1_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m2_ssel_dec[0] = (m2_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m2_ssel_dec[1] = (m2_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m2_ssel_dec[2] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m2_ssel_dec[3] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m2_ssel_dec[4] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m2_ssel_dec[5] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m2_ssel_dec[6] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m2_ssel_dec[7] = (m2_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m3_ssel_dec[0] = (m3_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m3_ssel_dec[1] = (m3_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m3_ssel_dec[2] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m3_ssel_dec[3] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m3_ssel_dec[4] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m3_ssel_dec[5] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m3_ssel_dec[6] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m3_ssel_dec[7] = (m3_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m4_ssel_dec[0] = (m4_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m4_ssel_dec[1] = (m4_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m4_ssel_dec[2] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m4_ssel_dec[3] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m4_ssel_dec[4] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m4_ssel_dec[5] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m4_ssel_dec[6] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m4_ssel_dec[7] = (m4_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m5_ssel_dec[0] = (m5_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m5_ssel_dec[1] = (m5_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m5_ssel_dec[2] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m5_ssel_dec[3] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m5_ssel_dec[4] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m5_ssel_dec[5] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m5_ssel_dec[6] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m5_ssel_dec[7] = (m5_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m6_ssel_dec[0] = (m6_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m6_ssel_dec[1] = (m6_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m6_ssel_dec[2] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m6_ssel_dec[3] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m6_ssel_dec[4] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m6_ssel_dec[5] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m6_ssel_dec[6] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m6_ssel_dec[7] = (m6_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -assign m7_ssel_dec[0] = (m7_adr_i[aw -1 : aw - s0_addr_w ] == s0_addr); -assign m7_ssel_dec[1] = (m7_adr_i[aw -1 : aw - s1_addr_w ] == s1_addr); -assign m7_ssel_dec[2] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s2_addr); -assign m7_ssel_dec[3] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s3_addr); -assign m7_ssel_dec[4] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s4_addr); -assign m7_ssel_dec[5] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s5_addr); -assign m7_ssel_dec[6] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s6_addr); -assign m7_ssel_dec[7] = (m7_adr_i[aw -1 : aw - s27_addr_w ] == s7_addr); - -//assign i_ssel_dec[0] = (i_bus_m[mbusw -1 : mbusw - s0_addr_w ] == s0_addr); -//assign i_ssel_dec[1] = (i_bus_m[mbusw -1 : mbusw - s1_addr_w ] == s1_addr); -//assign i_ssel_dec[2] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s2_addr); -//assign i_ssel_dec[3] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s3_addr); -//assign i_ssel_dec[4] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s4_addr); -//assign i_ssel_dec[5] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s5_addr); -//assign i_ssel_dec[6] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s6_addr); -//assign i_ssel_dec[7] = (i_bus_m[mbusw -1 : mbusw - s27_addr_w ] == s7_addr); - - -endmodule - -- 2.47.2

    O>oW?a)FKYLTRompA&X4zwq8L9ZqJq!E)V1O z@FrILD1L8~yf``wa2W?;>Om)4A8YhKgP_!D*{`Hs_z*ST7qP~)t~%U%T;@@uOQ7`p>PYt)9>MF22(oYci0 zA~bUR4O(EC6rglZ9-Y5$KXH2C72vFZwLGVtAnYb606M&7TvgOF8mqb!+npR!fN8~U zPHJB!A9O_ExaAPfc5#s?35ehx=~D%sc{WmABqlhEYOQIGvw6|kv9Zx35xF;L&XHo_ zf>eXHYUyGXoij0cY=MSTaUys<_nqyc}l&CiIz zCII^rix|5h7{0K-r7<$UF^XSQPQ4ghG`ux&S#;SF*z^@Pf@eV5G=G9Pmf+HePQ=nI zVxk!VKdFYaKs~j7Yc^d;)}g{4L3=!=YlM-^b1|;A-61yAQ_k|%?=+5@Eil}HnEV7V z;rwgYFbN7xeAWNxg#Nv@W^!=pJyjA(yCYUw4RekYRE zc>4R!_CSg!sUS2eUusQ=MDV&SSdgKH%b2-Isg1J>A35!kT&u7=i@O#{!!&Lh zOuu}C&I`d_ShRN85wgBib{QG?96wjz=RyVZ3biNWoCcL=xmrlUH}AGXVv!{o+^@ZruxF~YG7�yO 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