J1Sc
J1Sc copied to clipboard
Documenting the Files
There are many files in J1Sc/src/main/scala defining the circuit. This documentation is an overview of what those files do. For simplicity I deleted the .scala from the file names.
J1: This is the highest level of the J1, defining interfaces to the outside.
J1Core: Defines signals towards the inner part of the J1.
INNER WORLD
J1Stack: Basic stack definitions and logic.
J1RStack: Return stack definition and logic, all in one place.
J1DStack: Data stack definition and logic.
J1Decoder: Decides the instruction. Just decides if it is a literal, call, jump, conditional jump or instruction.
MainMemory: Defines the main memory assuming multiple smaller blocks (???)
J1PC: Program counter
Timer: Sets alarms
J1Alu: Does the basic operations (Words).
J1Bus: I think that there are multiple busses, but I am not yet sure. One for the LEDs, one for the GPIO, PWM, LEDs, and SSD.
J1BusSlaveFactory:
OUTER WORLD
DBPinArray: debounced Pin array. Input Pins, Debounced Pins, a timer, and some kind of bus.
GPIO: Define the GPIOs. Assumes that we are using PMODs.
LEDArray: A register of LED values which you can read and write to. Why does in mention PWM?
InterruptCtrl: Defines the interrupts. I did not fully understand this part.
PWM: Pulse Width Modulation is for control of motors. The width has to be a power of 2.
SSD: For driving a Solid State Drive.
JTAG FOR SINGLE STEP DEBUGGING
J1Jtag: J1JtagData: SingleStepUnit:
Board Definitions
Here is where you customize things.
J1Config: Configure IRQ, JTAG. Timer, Instruction set and the J1 itself. Includes instruction set tests. CoreConfig.: Configure UART, LEDs, PWM, and GPIO for various boards. *J1Ice.**: Define a J1 for the Ice Board. J1Ico Define a J1 for the Ico board.
J1Nexys4X: Define a J1 for the Nexys4X board.
If you like this I can create a pull request.