[J-core] Is a small Linux distribution available for J2 on Numato Mimas?

Geoff Salmon gsalmon at se-instruments.com
Fri Aug 12 10:45:17 EDT 2016


On 16-08-07 11:56 PM, Robert Ou wrote:
> It is pretty straightforward to make J2 little endian in a hard-coded
> and non-configurable way. An example of doing so is on my GitHub
> (https://github.com/rqou/myhdl-vhdl-verilog-test/commit/ed8be57aafd712a4b6b653bb076bdbcc228e3741).

Hi Robert

I've been mulling this patch over and how its division of changes 
between the cpu (datapath.vhm) and the memory (top.py) would work for 
other peripherals. My first instinct for supporting little-endian was to 
flip the write-enable and data byte-order of the data bus ports of the 
cpu, but I think your way is more clever and requires fewer changes to 
peripherals.

Do I have the following right?

Your patch does 2 things to the cpu:
1. flip the order of the write-enable bits
2. change which byte or which 2 bytes are placed on the w-bus from the 
32 bits returned during 8 and 16 bit reads

And 4 things to the simulated memories in top.py:
1. flip the 2 bytes in each 16 bit instruction read
2. flip the 4 bytes in each 32 bit data read
3. flip the 4 bytes when writing to simulated ram
4. look at the flipped write-enable for writes to the simulated debug 
port and avr reset peripherals (although the avr reset is always written 
with mov.l so that doesn't matter)

For other peripherals, if we define the various memory-mapped status and 
control registers to be 32-bit values in native byte order, then your 
changes to datapath.vhm require no changes in the peripheral. 32-bit 
reads and writes work as before, and 8 and 16 bit reads/writes would 
access the bytes one expects on a little-endian cpu.

Some peripherals would still need changes though. It's not in the 
existing release, but the ethernet mac has rx and tx memory buffers. A 
mov.b to or from address 0 in the buffers should be accessing the first 
byte in a packet. With this datapath.vhm change, does every peripheral 
exposing arrays of values that support being read or written 
byte-by-byte need to internally flip the byte order for reads and writes 
to those address ranges?

I'm also wondering what affect this will have on the dma. The dmac 
(again, not in the released vhdl yet) accesses peripherals through the 
same data bus ports. The dmac may need similar changes to the 
datapath.vhm so that the byte order of its reads matches the cpus and 
the peripherals expectations.

- Geoff


More information about the J-core mailing list