10-17-2018 01:54 PM
I'm designing with the DDR3 IP core and using the Wizard to configure the memory.
I have selected the Memory Type = SODIMM and have supplied the memory part number.
One of the Wizard page ask to define the "Number of BANK machine"
Is this the same as the Bank address for the DDR3? If my DDR3 SODIMM datasheet has defined bank address(2:0)
then should I select from the Wizard for "Number of Bank Address" = 8 ?
Since the memory Part# is supplied to the Wizard already, why do I have to supply this Number of Bank Address?
Or is the Wizard asking for something else instead, seem like it means something else and not referring to the Bank address, not sure...... ...confusing.
10-19-2018 04:06 PM
Yes, the number of Bank Machines corresponds to the banks of the DDR3 device.
The IP usually defaults to 4 for larger devices and sometimes less for smaller devices. The reason it defaults to 4 is because adding more bank machines uses more FPGA resources which means you could have issues fitting the design and closing timing depending on your device and how full it is. For most applications users are able to high performance out of the MIG with 4 bank machines when they consider how to efficiently address the MIG through the app_addr and the "Memory Address Mapping Selection." Some users may have a more bursty and random access pattern where they could see efficiency improvements with more bank machines, but other times some customers see no benefit from more bank machines but used more FPGA resources and didn't see any benefit. My recommendation is to run simulations to see if you need or benefit from more bank machines.
UG586 talks about this starting on page 123.
10-22-2018 07:02 AM
OK, The number of bank chosen in the Wizard represents the max number of bank open at the same time by the MIG controller?
If the user send APP commands to the MIG controller sequentially where each command addresses a different Bank then this is where multiple Bank command should be less than the Wizard selected BANK?
10-24-2018 11:36 AM
Yes, that's correct on both counts.
If you only have 4 bank machines then your command sequence should only use 4 banks. If you want to cycle through more banks then you should increase the number of bank machines so they can all remain open.
11-02-2018 12:42 PM
I believed that the user has no control over the number of Bank to keep open.
After every user command issued, (APP_EN, APP_CMD, APP_ADDR) with corresponding Write command (APP_WDF_...).
The IP DDR memory controller seem to perform a bank close anyway at the end of every access before looking at the next set of APP_CMD.
Therefore the BANK is close before the next one is open. Since the user only control issuing APP command, he has no control over keeping multiple bank open.
So why is the number of bank selection for the DDR3 WIZARD is required, ....unless I'm missing something at the APP command level.
11-02-2018 01:10 PM
The MIG will keep the banks open if there's a command already accepted by the app_interface for that bank. If you have a highly efficient app_interface driver and you configure the MIG to have 8 GroupFSMs there are no issues generating traffic that will nicely interleave between all 8 of these. The same principle applies when you have 4 GroupFSMs.
11-02-2018 01:28 PM
Since the user only has access to control 3 set of user interface signals (CMD, EN and ADDR).
For example if five set of command signals are sent sequentially each with a different bank address, then the controller will open each bank sequentially, performs a read or a write then then close them at the end sequentially.
Then in this example, 5 banks are actually open, therefore the user is required to select Five from the during IP Wizard configuration?
11-02-2018 01:42 PM - edited 11-02-2018 01:44 PM
The DDR3 bank is delivered as part of the app_addr and it's position in the address is based on your address mapping setting. For instance if you have BANK_ROW_COLUMN addressing and lets say you have a 2Gbit x16 DDR3 part with 10 Column, 14 Row, and 3 Bank bits in your address.
If the MIG is configured for 8 bank machines and you issue this sequence of commands then the MIG will keep the banks open until the end of the 3 set of writes:
The user isn't required to set the number of Bank Machines to any specific value. The option is there if you want to have more bank machines which may give you better performance depending on your access pattern.
If you only select 4 Bank Machines and issue commands that go across 5 banks in one sequence then one bank will be closed before the last one is opened to service the 5th command.