CONTENTS
5
6 Lab task 4 - Custom Instructions 61
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.1 Huffman Coding . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.2 The Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2 Adding a New Instruction . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2.1 Making the Processor Understand . . . . . . . . . . . . . . . 62
6.2.2 Adding Special Purpose Registers . . . . . . . . . . . . . . . 62
6.2.3 Adding the Required Hardware . . . . . . . . . . . . . . . . 63
6.3 Proposed Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.1 Control Unit . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.2 Data Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.3 Store Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.4 Multi Cycle Instructions . . . . . . . . . . . . . . . . . . . . 64
6.3.5 Instruction Details . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Hardware Implementation . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.1 Constructing the Hardware . . . . . . . . . . . . . . . . . . . 65
6.5 Software Implementation . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5.1 Running the Instruction . . . . . . . . . . . . . . . . . . . . 65
6.5.2 Integration into jpegfiles . . . . . . . . . . . . . . . . . . . . 67
6.5.3 JPEG Markers . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6 Important Files For this lab task . . . . . . . . . . . . . . . . . . . . 68
6.7 Tips and tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.8 What to Include in the Lab Report . . . . . . . . . . . . . . . . . . . 69
6.9 Beyond tsea44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A Open RISC Reference Platform 73
A.1 Address map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
A.2 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
B The Wishbone specification 75
B.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
B.2 Interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.1 adr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.2 dat_o and dat_i . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.3 we . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.4 sel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.5 stb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
B.2.6 cyc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2.7 ack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2.8 cti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2.9 bte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2.10 err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.3 Wishbone classical cycles . . . . . . . . . . . . . . . . . . . . . . . . 77
B.4 Wishbone incrementing burst cycles . . . . . . . . . . . . . . . . . . 78
B.5 System Verilog Interface . . . . . . . . . . . . . . . . . . . . . . . . 79
C Tips & Trix 81
Commenti su questo manuale