[J-core] Ho to make a J-core board open sourced properly?

Daniel V daniel.viksporre at gmail.com
Wed Aug 31 17:15:18 EDT 2016

I was thinking of making a open source PCB design with FPGA for making
computer and CPU, and GPU design, and Hardware development. But I'm
only prospecting at the moment.

And I have some questions of going open source as much as possible,
like engineering tools, and to be able to use that with open source
software. And what licenses to use for each part in the chain from
developing hardware firmware and software.

I'm thinking of what tools you use to actually program the devices
with firmware, and hardware tools for debugging, like jtag logical
analyzers oscilloscopes. And what open source stuff that there is to
use. And tools for PCB design.

My spontaneous thought was to make a PCB design in kicad. Will that
do? or is there alternative tools to make a PCB in a open source

What physical interfaces is available for a full open source hardware.
Can you use is USB and is JTAG suitable? Is there a licence on JTAG?
And for USB there is a licence on hadware? And is there ways to go
around this with modifications? For example could Linux support a USB
compatible custom devices, or is that not "legal". Or could you use
USB standard devices and make a hardware for that in an ASIC? And what
about JTAG? If it's not possible to use them what can be used?

If you look at open source hardware accessing hardware they tend to
use a MCU or a USB to serial converter chip as a front-end. But is
there a alternative open source alternative? What about MCU:s with
USB, can they be open source designs?

I'm asking some key questions here. What I'm thinking about, is if
it's time to make an open source hardware connector, and if there is a
need of one. And could it be based on LVDS an SERDES? And what
physical connectors is suitable for hotswap. It would be time to make
a connector and a ASIC to be able to program stuff like Arduino, and
MCU:s and eeprom or flash. And what about coming stuff like varistor,
or ferro based memories. Is there open source connectors with
autoconfig stuff to them? or is that something someone could do that
open source folks would support? Maybe some sort of open source
standard can be made for this if there is a need?

What xilinx parts is reasonable to use when looking at, speed, cost,
and possible HDL design size? and what about other manufacturers like
ALTERA with SDRAM hardware blocks? Using hardware blocks in a FPGA,
have some of the implications like a design that uses a MCU or a USB
to serial converter.

One "problem" is what memory to use for a CPU design. If you use
xilinx parts, would is be preferable to use SRAM on that board? I
guess that if you use SDRAM that will limit the read speed to make it
about 4 times slower from SDRAM? or am I mistaken, may it be even
slower? or do you compensate that with wider SDRAM insterfaces and
longer pipelines, or cache? Or do you use a FPGA with a hard SDRAM
block? Or blocking the CPU until the data arrives?

What about giving it 2 separate SRAM interfaces, and one SDRAM
interface? In the 90s, cpu-designs started to use modified harvard
architectures with separate caches for data and programs. If you have
2 SRAM, and one SDRAM, you could use SRAM as two separate caches, and
use the SDRAM as a main memory. Is J-core a modified harvard
architecture, or is it von-neuman?

And when it comes to a "BIOS" do you plant that in the configuration
memory for the FPGA? Or is there a better way? Is it preferable to be
able to load that from sd card?

And is there any open source hardware (with software) to load data to
and from configuration memory. I'm thinking of being able to change
the "BIOS" without making a new bit file for the FPGA. And how do you
do that, should there be a black box proprietary MCU or USB/Serial
converters on the board?

What I'm thinking about, is how to chose parts for a development
board, that is as clean as possible form proprietary stuff. And that
could be used to aid the development to bypass the use of proprietary
stuff in the future. If we could point out what we are lacking in the
chain, maybe there is more chance that someone goes out there and make
it, if they know what parts that are missing, and can get a
comprehensive overview.

For example is the a need for now file formats that can be used with
Git, for hardware development or is there stuff missing. And then I'm
talking about everything from debugging hardware, developing hardware,
programming firmware, debugging software with support for setting up
breakpoints in hardware, like with JTAG.

A loads of interesting stuff can be done in a FPGA, for debugging.
Like integrating a logic analyzer or build other hardware in HDL to
aid your design and software development. One interesting thing that
they had back in 70s to develop 6502 code, was that they could, step
backwards in time in their debugger. I know that whey have slow tools
for that on Linux. But what about hardware support for it? But how did
they do that back in the days with PET computers? but I'm not sure if
it was on PET, it may have been on the KIM-1 computer.

If you take every part of development in considerations, is there
steps that could be eliminated, if other thing was in place so that it
was possible to develop things faster.

When it comes to hardware development there is a Logic analyzer...
and a oscilloscope...
...is the others?

Just some food for thought

// Daniel V.

More information about the J-core mailing list