[Oberon] FPGA - LONG WORD memory access
Tomas Kral
thomas.kral at email.cz
Sun Apr 30 11:31:32 CEST 2017
Hi Joerg,
Thank you for the example, it nicely confirms what I observed without
much knowing while toying with Bitmaps.
Few more questions.
[a] Is there a timing penalty for accessing bytes rather than longs?
[b] Oberon, structures, memory blocks, strings, etc, are aligned on
long word (integer) boundary? Filling and padding over non MOD 4 parts?
[c] Words as such are not implemented (possibly they are not really
needed), programatically that would require reading longs, and
* {0..15} masking upper or * {16..31} lower parts, plus some shifts
ASR/ASL. As that would complicate type conversions.
Tomas
On Thu, 27 Apr 2017 17:50:45 +0200
Jörg <joerg.straube at iaeth.ch> wrote:
> Tomas
>
> If you want to understand how the RISC5 accesses the memory, you can
> look at the Verilog files.
> - The RISC5.v implements the CPU
> - RISC5Top.v implements the CPU's environment (memory, peripherals...)
>
> The CPU (RISC5.v) outputs the variable "adr" to RISC5Top. The task of
> RISC5Top.v is to read the memory at address "adr". The following
> statement calculates the address for the static RAM:
>
> assign SRadr = dspreq ? vidadr : adr[19:2];
>
> As you can see, the last two bits adr[1:0] are ignored, so "SRadr" is
> only a multiple of 4 even in case the "adr" is odd.
>
> You can verify this with the following program
>
> MODULE Test;
> IMPORT S := SYSTEM, Out;
> VAR
> p, i: INTEGER;
> BEGIN
> p := S.ADR($0001020304050607$);
> S.GET(p, i); Out.Int(i, 10); Out.Ln; INC(p);
> S.GET(p, i); Out.Int(i, 10); Out.Ln; INC(p);
> S.GET(p, i); Out.Int(i, 10); Out.Ln; INC(p);
> S.GET(p, i); Out.Int(i, 10); Out.Ln; INC(p);
> S.GET(p, i); Out.Int(i, 10); Out.Ln; INC(p);
> END Test.
>
> Four times the same value is printed (as "p" is handled MOD 4) and
> only the last line prints the next value in the ARRAY.
>
> Jörg
>
>
> -----Original Message-----
> From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of
> Chris Burrows
> Sent: Donnerstag, 27. April 2017 14:16
> To: 'ETH Oberon and related systems' <oberon at lists.inf.ethz.ch>
> Subject: Re: [Oberon] FPGA - LONG WORD memory access
>
> > -----Original Message-----
> > From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of
> > Tomas Kral
> > Sent: Thursday, 27 April 2017 6:34 PM
> > To: Oberon@
> > Subject: [Oberon] FPGA - LONG WORD memory access
> >
> > Hi,
> >
> > Is allowed to address 4byte integers on odd memory address, or does
> > it have to be on even boundaries only, aligned on MOD 4?
> >
> > I remember from other platforms, namely 68K, words or longs on even
> > address only.
> >
>
> Your question is answered in Section 17.1 "The SRAM memory" of the
> project Oberon documentation i.e:
>
> "The selection of the byte affected is determined by address bits 0
> an 1 (which are ignored in the case of word-access)."
>
> Regards,
> Chris Burrows
> CFB Software
> http://www.astrobe.com
>
>
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
More information about the Oberon
mailing list