OpenCores
URL https://opencores.org/ocsvn/sxp/sxp/trunk

Subversion Repositories sxp

[/] [sxp/] [trunk/] [doc/] [README.txt] - Blame information for rev 59

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 33 samg
How to understand the SXP architecture.
2
--------------------------------------
3
A graphic showing the architecture diagram will
4
be supplied very soon.
5
 
6
The processor is a pipelined processor which means
7
that instructions are processed like an assembly line.
8
 
9
The pipeline is broken into stages that do specific
10
things with each instruction.
11
 
12
The stages for the SXP are as such.
13
 
14
Fetch - Get instructions from memory and control program counter
15
Reg File - local register storage and look up
16
ALU - Arithmetic logic unit / data munging
17
WB - Determine where the data from the ALU/MEM READ/EXT BUS gets written back to.
18
 
19
Please see the instr.txt document to see how instructions are built but
20
basically an instruction is broken up into control fragments for each
21
one of these mentioned stages. That is why is was mentioned
22
that the instructions are non conventional and we get the added
23
bonus of no Decoder stage and thus a faster pipeline. Each stage
24
is responsible for reading a small section of the instruction and
25
figuring out what to do with the rest of the data in the instruction or
26
in the pipeline from the previous stage.
27
A conventional processor with standard instructions needs a decoder to
28
turn the instructions into microcode (possibly) the then a controller
29
to turn the microcode into fragments that control each pipeline when
30
necessary.
31
 
32
This is a very simple processor. Right now it is not intended to
33
be a processor with diferent modes and other high level functions.
34
(Although those features can be added at a later time or in another
35
version.)
36
There is a need for both low level microcontrollers and the feature
37
filled microprocessors. It is just a question of scope and intended
38
design goals.
39
 
40
 
41
 
42
Sections of the SXP code
43
------------------------
44
Verilog simulation of the SXP:
45
  The SXP processor was written in Verilog code and tested with the
46
  GPL'ed Icarus verilog simulator. If you want to follow this path
47
  then please get the latest development snapshot. I have tested
48
  the current realease on Icaurus and everything works as
49
  expected.
50
 
51
SXP C++ Model
52
  The C++ model is an attempt to simulate the operation of the
53
  SXP in C++ code. It is not perfect but the current implementation
54
  will simulate ok.
55
 
56
Visual Instruction Development tool - coder.tcl
57
  coder.tcl is a TK/TCL tool that help to develop
58
  small assembly language programs.
59
 
60
Assembly language verilog files.
61
  All assembly language files are in verilog memory format.
62
  This is done for easy simulation in verilog. Tools can later
63
  be written to translate verilog memory files into binary
64
  files.  (This will be useful if the SXP is synthesized into
65
  an FPGA.)
66
 
67
 
68
 
69
Directory structure
70
-------------------
71
 
72
- /doc
73
    instr.txt - Assembly Instruction Documentation
74
    int_cont.txt - Interupt documentation
75
    README.txt - This file
76
 
77
- /sim
78
    test_sxp.v  -  Testbench for SXP processor
79
    test.sxp - Assembly language instructions file
80
    (Written in verilog memory format. Loaded into instruction RAM)
81
 
82
- /src
83
    sxp.v - SXP processor top level verilog
84
 
85
- /fetch
86
    /src
87
      fetch.v - fetch module code
88
    /sim
89
      test_fetch.v - testbench for fetch module
90
 
91
- /dpmem
92
    /src
93
      dpmem.v - behavioral dual port memory
94
    /sim
95
      test_mem.v - Testbench for behavioral dual port memory
96
 
97
- /tcl
98
    coder.tcl - TCL/TK Visual Instruction Development Tool
99
 
100
- /int_cont
101
    /src
102
      int_cont.v - interupt controller module verilog code
103
    /sim
104
      test_int_cont.v - testbench for interupt controller
105
 
106
- /regf
107
    /src
108
      mem_regf.v - memory based reg file
109
      sync_regf.v - syncronous reg file
110
      regf_status.v - scoreboard module for reg file
111
    /sim
112
      test_regf.v - testbench for reg file
113
 
114
- /timer_cont
115
    /src
116
      timer_cont.v - timer controller module verilog source
117
    /sim
118
      test_timer.v - testbench for timer controller
119
 
120
- /csim - C++ model of SXP processor
121
- /csim/alu/alu.cc - alu c++ model
122
- /csim/ext/ext.cc - ext bus c++ model
123
- /csim/fetch/fetch.cc - fetch module c++ model
124
- /csim/memory/memory.cc - memory c++ model
125
- /csim/reg_file/reg_file.cc - register file c++ model
126
- /csim/sxp/sxp.cc - SXP processor main class for processor
127
    run_sxp - executable script to run the c++ model
128
    sxp_sim.cc - c++ simulation file (instantiates the processor and runs code)
129
    test.sxp - Assembly language code (Verilog based memory file)
130
 
131
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.