| 1 | [wiki:Component SocLib Components General Index] |
| 2 | |
| 3 | '''UNDER DEVELOPMENT''' |
| 4 | |
| 5 | = ARM7TDMI Processor Functional Description = |
| 6 | |
| 7 | This hardware component is a ARM7TDMI processor core. This is only an ISS, which should be wrapped with an [wiki:Component/IssWrapper IssWrapper]. |
| 8 | |
| 9 | The simulation model is actually an instruction set simulator with an ARM7TDMI pipeline. |
| 10 | |
| 11 | Currently it only exists in bigendian form. |
| 12 | |
| 13 | = Component definition = |
| 14 | |
| 15 | Available in source:trunk/soclib/soclib/lib/arm7tdmi/metadata/arm7tdmi.sd |
| 16 | |
| 17 | == Usage == |
| 18 | |
| 19 | ARM7TDMI has no parameters. |
| 20 | {{{ |
| 21 | Uses('iss_wrapper', iss_t = 'common:arm7tdmi') |
| 22 | }}} |
| 23 | |
| 24 | Before compiling any SoClib simulator using the ARM7TDMI you will need to download the UNISIM ([http:\\www.unisim.org]) library. |
| 25 | To do so just download it using svn from [https://unisim.org/svn/devel/unisim_lib] with the following command: |
| 26 | svn import https://unisim.org/svn/devel/unisim_lib |
| 27 | You will have to enter a username and password. If you do not have access to the UNISIM development, you can simply use 'guest'/'guest' for username and password respectively. |
| 28 | |
| 29 | = ARM7TDMI Processor ISS Implementation = |
| 30 | |
| 31 | The implementation is in |
| 32 | * source:trunk/soclib/lib/arm7tdmi/include/iss/arm7tdmi.h |
| 33 | * source:trunk/soclib/lib/arm7tdmi/src/iss/arm7tdmi.cpp |
| 34 | |
| 35 | The previous files use the ARM7TDMI implementation provided in the UNISIM library. |
| 36 | |
| 37 | |
| 38 | == Template parameters == |
| 39 | |
| 40 | This component has no template parameters. |
| 41 | |
| 42 | == Constructor parameters == |
| 43 | |
| 44 | {{{ |
| 45 | MipsElIss( |
| 46 | sc_module_name name, // Instance Name |
| 47 | int ident); // processor id |
| 48 | }}} |
| 49 | or |
| 50 | {{{ |
| 51 | MipsEbIss( name, ident); |
| 52 | }}} |
| 53 | |
| 54 | == Visible registers == |
| 55 | |
| 56 | The following internal registers define the processor internal state, and can be inspected: |
| 57 | * r_pc : Program counter |
| 58 | * m_ins : Instruction register |
| 59 | * r_gpr[i] : General registers ( 0 < i < 32) |
| 60 | * r_hi & r_lo : Intermediate registers for multiply / divide instructions |
| 61 | * r_cp0[i] : Coprocessor 0 registers (0<=i<32). Implemented values: |
| 62 | * 8: BAR : Bad address register |
| 63 | * 12: SR : Status register |
| 64 | * 13: CR : Cause register |
| 65 | * 14: EPC : Exception PC register |
| 66 | * 15: INFOS : CPU identification number on bits ![9:0] |
| 67 | |
| 68 | == Interrupts == |
| 69 | |
| 70 | Mips defines 6 interrupts lines. ~~Le lowest number has the hiest priority.~~ |
| 71 | The handling and prioritization of the interrupts is deferred to software. |
| 72 | |
| 73 | == Ports == |
| 74 | |
| 75 | None, it is to the wrapper to provide them. |