- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I modified the vhdl model to default the Configuration Register to QUAD mode. This bit is non-volatile. So, i wanted to have the chip default to what it would be in my system after having programmed that bit.
-- *** Configuration Register 1 ***
--SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := (others => '0');
SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := x"02";
I also modified the processes below to properly set the _pullup to a valid value if QUAD = '1' (not 0)
HOLD_PULL_UP : PROCESS(HOLDNegIn)
BEGIN
IF (QUAD = '0') THEN
IF (HOLDNegIn = 'Z') THEN
HOLDNeg_pullup <= '1';
ELSE
HOLDNeg_pullup <= HOLDNegIn;
END IF;
ELSE
HOLDNeg_pullup <= HOLDNegIn;
END IF;
END PROCESS HOLD_PULL_UP;
WP_PULL_UP : PROCESS(WPNegIn)
BEGIN
IF (QUAD = '0') THEN
IF (WPNegIn = 'Z') THEN
WPNeg_pullup <= '1';
ELSE
WPNeg_pullup <= WPNegIn;
END IF;
ELSE
WPNeg_pullup <= WPNegIn;
END IF;
END PROCESS WP_PULL_UP;
When I do a READ (QIOR4) the data that comes back is NOT what was preloaded in the memory.
I did set UserPreload to TRUE. Everything works fine when operating in QUAD=0 mode and doing a FAST_READ4. The proper data comes back.
I am using the s25fl512s.mem file and I am reading from address 0x0000000.
I should see 01 02 03 04 ... coming back.
From the .mem file:
@0000000
01
02
03
04
05
Instead I see:
10
01
32
22
FF
Any ideas what is going on? The .docx file may be easier to view and zoom in on.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for contacting Infineon Technology.
I would like to know whether you are running the simulations with SDF or not.
Thank you
Regards,
Bushra
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
We provide the testbench as is. The purpose is to demonstrate that the model is functional and can run tests.
Thank you
Regards,
Bushra
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am not exactly sure. I do point to a sdf file via the generics though.
-- For FMF SDF technology file usage
TimingModel => "./mem_files/s25fl512s_vhdl.sdf"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I believe I found the issue.
1) I was driving the chip select line via a pullup resistor. So the model was seeing 'H' and '0'. It does not like the 'H' - I needed to change that to a '1'. This still did not fix the the preloading issue though.
2) The model WILL NOT preload the user memory correctly when QUAD is defaulted to '1'. I changed the configuration register back to x"00" instead of x"02". It hen had to manually write the configuration register to have a value of x"02" (QUAD = 1). When I did a QIOR4 quad read the data came back correctly.
Why the data will not preload correctly when QUAD=1 does not make sense. I did not see where that would matter in that portion of the VHDL code.
The SPI flash behavior model should be updated to allow for 'H' or '1' on the chip select line. It should also be updated to allow for the preloading of the memory independent of the QUAD setting.