Project: memory_sizer

Overview | People | Documentation | Download | OpenCores Mail list | Contact me

Download

Allright, here are "the goods!"

Downloads:

memory_sizer.v. This file contains the memory_sizer module Verilog code.

memory_sizer_dual_path.v. This file contains the memory_sizer_dual_path Verilog code.

b10_safe_12_18_01_single_path.zip. This file contains an example of the memory_sizer module in use. It uses tri-state buffers to switch buses, so it re-uses the same byte reversal and byte steering logic for both reads and writes. It consumes about 200 Xilinx Virtex slices. It has been tested at 12.5 MHz. (The writing works well even at 25 MHz, but the read operation would not operate that fast on my Xilinx XC2S200...) DPRAMs are used, so that the operation of the module can be verified (by looking at the contents of the same memory on the other port of the dual ported RAM.)

b10_safe_12_18_01_dual_path.zip. This file contains an example of the memory_sizer_dual_path module in use. It has separate byte reversal and byte steering logic for both reads and writes. It consumes about 300 Xilinx Virtex slices and it has been tested at 25 MHz. (The synthesis tools reported about 10 MHz maximum usable clock frequency, but that was without any timing constraints at all. I didn't want to take the time to synthesize with constraints, because it makes my tools "dog-slow." Instead, I just figured that the "critical path" found by the tool was a false one, and decided to test it at 25 MHz. It worked just fine.) DPRAMs are used, so that the operation of the module can be verified (by looking at the contents of the same memory on the other port of the dual ported RAM.

NOTE: In order to get these examples to work on your own board, you will need to generate a correct BAUD clock on your board -- see the file "serial.v" for details. Also, you will need some "level translating" circuit to change the LVTTL level signals coming out of the Xilinx chip into RS232 levels for connection to your computer's serial port. Be sure to re-assign the IO constraints to match the desired pinouts on your board, and add debug outputs if you like, so that you can view what is happening on a logic analyzer... Or, you could also simulate these modules!