Hyper RAM Forum Discussions
1. The timing diagram show a referesh collision during a write cycle. RWDS changes mid command. Is this expected behavior or a simulation bug? Where is the ideal point to sample RWDS for extended latency? It is not clear in the datasheet.
2. In past posts, my questions resulted in updates to the verilog model with respect to refresh collisions. I recently downloaded the most recent model, labelled 4.0, and find that it is not the most recent model I was personally given by infineon on this forum.
Show LessHi Dear Authorized,
I am trying to use HyperRAM over FlexSPI Interface and some errors occured during test on my custom board which suited by NXP IMXRT1064 MCU. After some research, I learned that LUT Instraction Set is required for LUT Installation to use FlexSPI. Therefore, I need LUT Instraction Set for S27KS0641DPBHV020. For example, there are some rams which is used by NXP Users for IMX MCUs like below. Their datasheets contains Instruction Set Table but I can't find for my product.
Here is my test link which research the solution for Custom Board: https://community.nxp.com/t5/i-MX-RT/IMXRT1064-HyperRAM-Usage/m-p/1760772
Could you please help me?
Show Less
Hello,
Could you provide the comparison chart of "Hyper bus" vs "octal SPI" used in Hyper RAM ?
We would like you to create with forcing on the deference of each protocol.
Best regards,
Show Less
Hello,
I am looking for S70KL1283 IBIS models for simulations, but I cannot find it.
The model I need is S70KL1283DPBHV020
Thank you.
Show LessHello,
I am looking for advice in using an Infineon S27KS0642 64Mb HyperRAM chip on a STM32L4R5Z and configured via CUBE.
I have it working, so I am pretty sure that the hardware is connected correctly and I can read and write successfully to it. However, if I leave it for a while and then read again, the stored data is being corrupted (usually just single bits) and it gradually gets worse, as if the refresh isn’t working correctly.
My OctoSPI init function is shown below and I have a Peripheral SPI clock of 120Mhz. Any advice would be very welcome.
Thanks
/* OCTOSPI1 init function */
void MX_OCTOSPI1_Init(void)
{
/* USER CODE BEGIN OCTOSPI1_Init 0 */
// release the beast...
HAL_GPIO_WritePin(RAM_RST_GPIO_Port, RAM_RST_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RAM_RST_GPIO_Port, RAM_RST_Pin, GPIO_PIN_SET);
/* USER CODE END OCTOSPI1_Init 0 */
OSPIM_CfgTypeDef OSPIM_Cfg_Struct = {0};
OSPI_HyperbusCfgTypeDef sHyperBusCfg = {0};
/* USER CODE BEGIN OCTOSPI1_Init 1 */
/* USER CODE END OCTOSPI1_Init 1 */
hospi1.Instance = OCTOSPI1;
hospi1.Init.FifoThreshold = 1;
hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;
hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_HYPERBUS;
hospi1.Init.DeviceSize = 23;
hospi1.Init.ChipSelectHighTime = 7;
hospi1.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;
hospi1.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;
hospi1.Init.ClockPrescaler = 3;
hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE;
hospi1.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_ENABLE;
hospi1.Init.ChipSelectBoundary = 0;
hospi1.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_USED;
if (HAL_OSPI_Init(&hospi1) != HAL_OK)
{
Error_Handler();
}
OSPIM_Cfg_Struct.ClkPort = 1;
OSPIM_Cfg_Struct.DQSPort = 1;
OSPIM_Cfg_Struct.NCSPort = 1;
OSPIM_Cfg_Struct.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
OSPIM_Cfg_Struct.IOHighPort = HAL_OSPIM_IOPORT_1_HIGH;
if (HAL_OSPIM_Config(&hospi1, &OSPIM_Cfg_Struct, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
Error_Handler();
}
sHyperBusCfg.RWRecoveryTime = 7;
sHyperBusCfg.AccessTime = 7;
sHyperBusCfg.WriteZeroLatency = HAL_OSPI_LATENCY_ON_WRITE;
sHyperBusCfg.LatencyMode = HAL_OSPI_FIXED_LATENCY;
if (HAL_OSPI_HyperbusCfg(&hospi1, &sHyperBusCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN OCTOSPI1_Init 2 */
OSPI_HyperbusCmdTypeDef sCommand = {0};
OSPI_MemoryMappedTypeDef sMemMappedCfg = {0};
// Memory-mapped mode configuration
sCommand.AddressSpace = HAL_OSPI_MEMORY_ADDRESS_SPACE;
sCommand.AddressSize = HAL_OSPI_ADDRESS_32_BITS;
sCommand.DQSMode = HAL_OSPI_DQS_ENABLE;
sCommand.Address = 0;
sCommand.NbData = 1;
if (HAL_OSPI_HyperbusCmd(&hospi1, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
Error_Handler();
}
sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_DISABLE;
//sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_ENABLE;
sMemMappedCfg.TimeOutPeriod = 1;
if (HAL_OSPI_MemoryMapped(&hospi1, &sMemMappedCfg) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END OCTOSPI1_Init 2 */
}
Show LessHi,
In our design we want to connect a Hyperam S27KS0643GABHV020 to FlexIO port1 of NXP Processor RT1176.
Can you please share if there are any test result details of this interface is already validated?
Can we use this hyperam at 166MHz with single ended clock at 3.0V operation?
Regards
Abhishek
Show LessOn HyperBUS specification it is shown that slave devices can be paralleled on the same bus however in e.g. HyperRAM layout guidelines there is no guideline on any routing topology when paralleling memories on the same bus.
What are the guidelines for routing paralleled memories? Signals should be routed in T-shape, Y-shape etc. or does it matter? Can we route paralleled memories in a way that from master the bus is routed to first memory and from the first memory the bus will continue to second memory? Or should we ensure that the bus routing length to both memories will be as close as possible each other (from Master)?
Show LessDatasheet Info :
Name – S80KS5122 512 Mb: HYPERRAM™ self-refresh dynamic RAM (DRAM) with HYPERBUS™ interface 1.8 V
Revision - 002-31338 Rev. *B
Date – 2021-09-27
Calculating addresses from Datasheet, we are getting below address:
Identification Register 0 Read – Die 1 :- 400000h
Identification Register 1 Read – Die 1 :- 400001h
Configuration Register 0 Read – Die 1 :- 400800h
Configuration Register 1 Read – Die 1 :- 400801h
Die 0 Address Range : [0h, FFFFFFh]
Die 1 Address Range : [1000000h, 1FFFFFFh]
Doubt :- Above mentioned 4 register’s address lies in Die 0 address range but registers are used for Die 1. Can you please confirm what are the correct values ?
Our expected address values are given below:
Identification Register 0 Read – Die 1 :- 1000000h
Identification Register 1 Read – Die 1 :- 1000001h
Configuration Register 0 Read – Die 1 :- 1000800h
Configuration Register 1 Read – Die 1 :- 1000801h
System Address[26:19] and CA Bits [39:32] - 20h
Show LessHello,
we had to replace the S70KL1281 with the S70KL1283 due to availability. Unfortunately that did not work. Now we have seen in the data sheet that for the S70KL1282 "hyperbus" is specified and for the S70KL1283 "octal". Just to be sure: Does this mean that the S70KL1283 does not support hyperbus?
We use the memory with a STM32H7 and have tried to adapt the software (without hyperbus). But that did not work properly either. Are there any examples of use, or hints on how to make the settings.
Thanks!
Show Less