📜 ⬆️ ⬇️

MIPSfpga and SDRAM. Part 1

This week, I’ve finished work on adding SDRAM support to the MIPSfpga-plus project. Now, when working with MIPSFpga, in addition to block memory limited by FPGA resources, external RAM is also available.


This article consists of 2 parts:


Part 1. Brief description of the SDRAM access module. An example of use.
Part 2. A detailed description of working with memory, sufficient to ensure that a person who had not previously dealt with RAM chips could understand the module. Bibliography.


It is assumed that the reader at least:



If you are already an experienced developer, then Part 1 is to run your eyes diagonally, Part 2 - does not contain anything new for you. In this case, you can bring undoubted benefits to society if you add SDRAM support for another debugging board. At the moment, it is implemented only for Terasic DE10-Lite - one of 9 motherboards to which the MIPSfpga core was ported as part of the MIPSfpga-plus project.


General information


MIPSfpga is an academic licensed (free licensed for educational and research projects) industrial MIPS microAptiv microprocessor core. Yury Panchul wrote at one time about how to get access to the source codes of this kernel.


MIPSfpga-plus is a MIPSfpga-based system-on-chip design, in addition to the core, which includes some additional peripheral strapping. Initially, it was created for laboratory work on working with MIPSfpga, but nothing prevents you from taking it as the basis of your system. One of the main "chips" of the project: the ability to fill the program into the system's memory using usb-uart converters ($ 5), which are more available than Bus Blaster ($ 50).


system configuration


image


Basic parameters of the SDRAM access module ( mfp_ahb_ram_sdram.v )



Order of configuration and running a memory test


It is assumed that you already have MIPSfpga and MIPSfpga-plus deployed and compiled. If so, then to use SDRAM you need:



For simulation mode (SIMULATION)



When working with the board (SDRAM_64M, SDRAM_8M)



What else can you do


My goal was to create a solution that is as simple as possible, transparent and easily portable to other cards. The module is somewhat primitive in comparison with its "older" counterparts, this leaves room for modernization and increasing its performance:



I would be grateful for Pulrequests with bug fixes and new functionality.


Thanks


The author is grateful to the team of translators of the textbook by David Harris and Sarah Harris “Digital circuit design and computer architecture” , by Imagination Technologies, as well as personally by Yuri Panchul YuriPanchul .


')

Source: https://habr.com/ru/post/321530/


All Articles