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

Subversion Repositories t48

[/] [t48/] [tags/] [rel_1_1/] [README] - Blame information for rev 339

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 114 arniml
 
2
README for the T48 uController project
3
======================================
4 287 arniml
Version: $Date: 2008-04-30 22:32:11 $
5 263 arniml
$Name: not supported by cvs2svn $
6 114 arniml
 
7
 
8
Introduction
9
------------
10
 
11 181 arniml
The T48 µController core is an implementation of the MCS-48 microcontroller
12 114 arniml
family architecture. While being a controller core for SoC, it also aims for
13
code-compatability and cycle-accuracy so that it can be used as a drop-in
14
replacement for any MCS-48 controller.
15
It can be configured to better suit the requirements and characteristics of
16
the integrating system. On the other hand, nearly the full functionality of a
17
stock 8048/8049 is available.
18
 
19
 
20
Download
21
--------
22
 
23
Download the latest stable release from the project homepage at OpenCores.org:
24
 
25
  http://www.opencores.org/projects.cgi/web/t48/overview/
26
 
27
You can get the latest version of the design files from CVS:
28
 
29
  http://www.opencores.org/pdownloads.cgi/list/t48
30
 
31
Please keep in mind that this is work in progress and might contain smaller or
32
bigger problems.
33
You should also check the Tracker for known bugs and see if they affect your
34
work.
35
 
36
 
37
Installation
38
------------
39
 
40
Once the directory structure is generated either by check-out from CVS or by
41
unpacking the tar-archive, the central project initialization file should be
42
set up. A template called init_project.template.sh is located in the sw
43
directory where a copy can be edited. Normally, only the definition for the
44
variable PROJECT_DIR has to be adjusted to the path where the directory
45
structure is located.
46
The commands for setting the necessary variables assume a bash/sh-like
47
shell. In case you run a different shell like csh or ksh, you should adjust
48
these commands as well.
49
 
50
The meaning of the variables is as follows:
51
 
52
  * PROJECT_DIR
53
    Points to the root of the project installation. All further references are
54
    derived from its setting.
55
 
56
  * VERIF_DIR
57
    Location of the verification suite.
58
 
59
  * SIM_DIR
60
    Directory for running simulations.
61
 
62
These variables must be properly set whenever scripts or makefiles of the T48
63
project are executed. Otherwise, you will most likely encounter error
64
messages.
65
 
66
NOTE: The concepts of the mentioned shells require that the init_project.sh is
67
      run in the context of the shell. I.e. you should 'source' the script
68
      instead of executing it like a command. This will make sure that the
69
      variable settings are really effective in the calling shell instance.
70
 
71
 
72
Directory Structure
73
-------------------
74
 
75
The project's directory structure follows the proposal of OpenCores.org.
76
 
77
t48
78
 |
79
 \--+-- rtl
80
    |    |
81
    |    \-- vhdl           : VHDL code containing the RTL description
82
    |         |               of the core.
83 263 arniml
    |         +-- system    : RTL VHDL code of sample systems.
84
    |         |
85
    |         \-- t8243     : RTL VHDL code of 8243 core.
86 114 arniml
    |
87
    +-- bench
88
    |    |
89
    |    \-- vhdl           : VHDL testbench code.
90
    |
91
    +-- sim
92
    |    |
93
    |    \-- rtl_sim        : Directory for running simulations.
94
    |
95 280 arniml
    +-- syn
96
    |    |
97
    |    \-- t8048          : T8048 toplevel example synthesis.
98
    |         |
99
    |         +-- b5x300    : for SpartanIIe 300.
100
    |         |
101
    |         \-- jopcyc    : for Cyclone EP1C12.
102
    |
103 114 arniml
    \-- sw                  : General purpose scripts and files.
104
         |
105
         +-- i8039emu       : An MCS-48 emulator written in C.
106
         |
107
         \-- verif          : The verification suite.
108
              |
109
              +-- include   : Global includes and makefiles.
110
              |
111
              +-- black_box : Black-box verification tests.
112
              |
113
              +-- white_box : White-box verification tests.
114
              |
115
              \-- gp_sw     : General purpose software.
116 115 arniml
 
117
 
118
Compiling the VHDL Code
119
-----------------------
120
 
121
VHDL compilation and simulation tasks take place inside in sim/rtl_sim
122
directory. The project setup supports only the batch mode of certain
123
simulators. However, there should be no problems to integrate the testbench
124
and RTL code into arbitrary simulation environments.
125
 
126
The main file for compilation is Makefile.hier which contains all information
127
regarding the dependencies of the source files and their compilation
128
order. There is a dedicated file for each supported simulator that maps the
129
generic information of Makefile.hier to object files specific to the given
130
simulator.
131
 
132
Compilation is based on the make-utility, thus invocation looks like this:
133
 
134
$ make -f Makefile.
135
 
136
where  denotes one of the supported simulators:
137
 
138
  * Makefile.ghdl
139
    Tristan Gingold's GHDL simulator/compiler, a VHDL front-end for gcc.
140
    http://ghdl.free.fr/
141
 
142
  * Makefile.simili
143 244 arniml
    DISCONTINUED
144 115 arniml
    VHDL Simili, a VHDL simulator by Symphony EDA
145
    http://www.symphonyeda.com/
146
 
147
Make will analyze all VHDL files (RTL and testbench code) and elaborate all
148
three testbench top-levels if appropriate for the chosen simulator:
149
 
150
  * tb_behav_c0
151
    The main testbench for regression testing.
152
    Instantiates the plain t48_core and provides internal RAM (256 bytes) and
153
    ROM (2k bytes) plus 2k bytes of external ROM.
154
 
155
  * tb_t8048_behav_c0
156
    The testbench for the t8048 sample system.
157
 
158
  * tb_t8039_behav_c0
159
    The testbench for the 8039 sample system.
160
 
161 263 arniml
  * tb_t8243_behav_c0
162
    Testbench containing the t48_core and the synchronous t8243 flavour.
163
 
164
  * tb_t8048_t8243_behav_c0
165
    Testbench containing the t8048 and the asynchronous t8243 toplevel.
166
 
167 137 arniml
Each Makefile has a 'clean' target to delete all intermediate data:
168 115 arniml
 
169
$ make -f Makefile. clean
170
 
171 137 arniml
The basic simple sequence list can be found in COMPILE_LIST. This can be
172
useful to quickly set up the analyze stage of any compiler or
173
synthesizer. Especially when synthesizing the code, you want to skip the VHDL
174
configurations in *-c.vhd and everything below the bench/ directory.
175 115 arniml
 
176
Preparation of the ROM Files
177
----------------------------
178
 
179
All testbenches listed above need two files in hex-format. They contain the
180
program for the T48 core and are loaded into internal and external ROM at
181
simulation startup. Their existance is mandatory as they are referenced in the
182
VHDL code of the ROM model lpm_rom.vhd. In case they are missing, the
183
simulation will stop immediately after elaborating the design.
184
 
185
These files are:
186
 
187 263 arniml
  * rom_t49.hex
188
    Internal ROM contents for 8x49 derivatives,
189
    address range 000H to 7FFH.
190 115 arniml
    Intel hex format, starting at address 000H.
191
 
192 263 arniml
  * rom_t49_ext.hex
193
    External ROM contents for t8x49 derivatives,
194
    address range 800H to FFFH.
195
    Intel hex format, starting at address 800H.
196
 
197
  * rom_t48.hex
198
    Internal ROM contents for t8x48 derivatives,
199
    address range 000H to 3FFH.
200 115 arniml
    Intel hex format, starting at address 000H.
201
 
202 263 arniml
  * rom_t48_ext.hex
203
    External ROM contents for t8x48 derivatives,
204
    address range 400H to FFFH.
205
    Intel hex format, starting at address 000H.
206
 
207
  * rom_t3x.hex
208
    Internal ROM contents for t803x derivatives,
209
    empty.
210
 
211
  * rom_t3x_ext.hex
212
    External ROM contents for t803x derivatives,
213
    address range 000H to FFFH.
214
    Intel hex format, starting at address 000H.
215
 
216
The verification flow for the T48 project generates these files
217 115 arniml
automatically from the assembler source files.
218
 
219
All regression tests and the general purpose software is organized in a cell
220
structure. Currently, this means that the software for a cell is contained in
221
a dedicated directory where the assembler run takes place. In the future,
222
there will be more aspects to a cell.
223
 
224
Assembling, linking and putting the hex-files in place is under the control of
225
the make-mechanism. E.g. to assemble the source code of a cell, issue the
226
following command:
227
 
228
$ make -f $VERIF_DIR/include/Makefile.cell
229
 
230
This generates the linker file (test.p) and distributes its contents to the
231
required ROM files for internal and external program ROM. The target 'simu'
232
copies these files automatically to the simulation directory. So most likely,
233
for running a test case or any other software, you will want to issue:
234
 
235 281 arniml
$ make -f VERIF_DIR/include/Makefile.cell all clean
236 115 arniml
 
237 281 arniml
The 'all' target generates hex files for all supported testbenches.
238
 
239 115 arniml
The only supported assembler is Alfred Arnold's macroassembler AS. See
240
 
241
  http://john.ccac.rwth-aachen.de:8000/as/
242
 
243
 
244
Verification Environment
245
------------------------
246
 
247
The verification environment consists of a number of test programs. They are
248
all self-checking. I.e. after testing the targeted functionality, they emit a
249
pass/fail information. This information is detected by the testbench which
250
stops the simulation and prints out the simulation result. This is the default
251
mechanism for stopping the VHDL simulation.
252
 
253
Pass/fail is signalled by a certain sequence of the accumulator contents:
254
 
255
  1) Accumulator contains AAH
256
  2) Accumulator contains 55H
257
  3) Accumulator contains 01H   -> Pass
258
     Accumulator contains 00H   -> Fail
259
 
260
The detection is modelled like a state machine and in case the sequence is of
261
bytes inside the accumulator does not match, the detection process restarts
262
from the beginning. This mechanism is part of all verification tests.
263
 
264
The complete regression suite can be executed with the run_regression.pl
265
script. For each test cell, it steps through the sequence
266
 
267
  1) Assemble the source code
268
  2) Run the compiled VHDL design (currently only GHDL)
269
  3) Optionally perform a dump compare against the C-model
270
 
271
It is highly recommended to redirect the output of run_regression.pl into a
272
file. Otherwise, analyzing the messages related to each test cell is almost
273
impossible.
274 287 arniml
 
275
 
276
FPGA Implementation
277
-------------------
278
 
279
All of the design files contain pure RTL code. Also the RAM for the data
280
memory is described by generic RTL code. It should be translated automatically
281
by the tool chain to a technology specific RAM macro.
282
 
283
There is a generic method for the program memory ROM as well, although this
284
project uses a flow where hex-files are loaded by lpm_rom.vhd as the default
285
method. Convert the ROM image to an RTL VHDL file with one of the two
286
following commands (either from hex or bin format):
287
 
288
  $ hex2rom -b [rom image file] rom_t48 10l8s > rom_t48.vhd
289
  $ hex2rom -b [rom image file] rom_t49 11l8s > rom_t49.vhd
290
 
291
The option -b specifies that [rom image file] contains binary data. Skip this
292
option to process a file in hex format.
293
 
294
These resulting RTL representations are instantiated by t48_rom-struct-a.vhd
295
and t49_rom-struct-a.vhd. Altera and Xilinx design tools will detect and
296
extract the ROM and turn it into a memory macro.

powered by: WebSVN 2.1.0

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