OpenCores
Issue List
XRAMAddressWidth=0 prevents write on Wishbone bus #2
Open crazor opened this issue about 15 years ago
crazor commented about 15 years ago

If I get the Wishbone specs right, during a write-cycle, Strobe, Cycle and Write Enable should be asserted (see 3.2.2. SINGLE WRITE cycle). This is not the case when I instantiate the core without any internal XRAM by setting XRAMAddressWidth to zero.

The external Wishbone signals are defined like this: XRAM_CYC_O <= ext_ram_en and ram_access; XRAM_STB_O <= ext_ram_en and ram_access; XRAM_WE_O <= RAM_Wr;

Tracing ext_ram_en to its driver: zeros <= (others => '0'); g_rams0 : if XRAMAddressWidth > 15 generate ext_ram_en <= '0'; -- no external XRAM end generate;

g_rams1 : if XRAMAddressWidth < 16 and  XRAMAddressWidth > 0 generate -- >= ??
	ext_ram_en <= '1' when XRAM_Addr(15 downto XRAMAddressWidth) /= zeros else 
	              '0';
end generate;

One can see that when XRAM_AddressWidth is zero, ext_ram_en is never driven high. The fix is already in the code above, in form of a comment. So the line in question should be:

g_rams1 : if XRAMAddressWidth < 16 and  XRAMAddressWidth > =0 generate

While looking at the code, I wondered if XRAM_WE_O should also be qualified with ext_ram_en (and probably ram_access?) like so XRAM_WE_O <= ext_ram_en and RAM_Wr;


Assignee
No one
Labels
Bug