leon2 mo801/mc912. características básicas processador risc padrão sparc v8 (ieee-1754) palavra...

23
Leon2 MO801/MC912

Upload: internet

Post on 21-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Leon2

MO801/MC912

Page 2: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Características Básicas

• Processador RISC

• Padrão SPARC V8 (IEEE-1754)

• Palavra de 32 bits

• Descrição em VHDL-87

• Barramento AMBA (AHB e APB) para interligação de periféricos

• Controlador de memória (SRAM e DRAM)

Page 3: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Configuração do Processador

• Duas alternativas– Interface gráfica

make xconfig (Linux)

make wconfig (Windows + cygwin)

– Edição manual dos arquivos device.vhd e target.vhd

Page 4: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Interface Gráfica

• Interface de configuração similar ao do kernel do Linux

Page 5: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Opções de Síntese

Page 6: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Processador e Cache

Page 7: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Unidade de Inteiros

Page 8: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Configuração Manual

• target.vhd– Declara as estruturas de configuração

• device.vhd– Cria a estrutura conf que armazena a

configuração do leon

• A constante tkconfig é gerada automaticamente pela interface gráfica.

Page 9: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Síntese

• O diretório syn possui scripts de síntese para diversas ferramentas

• Arquivo para Leonardo: leon.tcl (sem informações sobre tecnologia)

read -dont_elaborate ../leon/amba.vhdread -dont_elaborate ../leon/target.vhdread -dont_elaborate ../leon/device.vhdread -dont_elaborate ../leon/config.vhdread -dont_elaborate ../leon/sparcv8.vhdread -dont_elaborate ../leon/iface.vhdread -dont_elaborate ../leon/macro.vhd...read -dont_elaborate ../leon/mcore.vhdread -dont_elaborate ../leon/leon.vhdelaborate leon -architecture rtl

Page 10: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Síntese (cont.)

• Informações sobre tecnologia no início do arquivo– FPGA Xilinx XCV800 do kit da XESS

set part v800hq240

set process 4

set wire_table xcv800-4_wc

load_library xcv

Page 11: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Síntese (cont.)read -dont_elaborate ./xsv800.vhd

elaborate xsv800 -architecture rtl

set xilinx_exec_path /home/lsc/xilinx/bin/sol

set edif_write_arrays FALSE

# Comandos para contornar incompatibilidades com a Xilinx

set register2register 80

set input2register 80

set register2output 80

optimize .work.xsv800.rtl -target xcv -chip -delay -effort quick

optimize_timing .work.xsv800.rtl

# Output

report_area xsv800.area -cell_usage -all_leafs

report_delay xsv800.delay -num_paths 1 -critical_paths -clock_frequency

auto_write -downto xcv xsv800.edf

Page 12: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Ferramentas da Xilinx

• Ferramentas de linha de comando:ngdbuild -p xcv800-4-hq240 -uc xsv800.ucf xsv800.edf

xsv800.ngd

map -p xcv800-4-hq240 -o xsv800.ncd xsv800.ngd xsv800.pcf

par -w xsv800.ncd xsv800.ncd xsv800.pcf

trce -skew xsv800.ncd xsv800.pcf -o xsv800.twr -xml xsv800.twx

bitgen xsv800.ncd -d -w

Page 13: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Simulação

• Utilizando o ModelSim basta executar o comando make no diretório raiz da distribuição e chamar o simulador

• Diretórios:– tbench: Código VHDL do Test Bench do Leon– tsource: Código em C para teste do

processador– leon: Descrição VHDL do processador

Page 14: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Kit da XESS

• Utilitários com interface gráfica para Windows e versões de linha de comando para Linux– gxsload ou xsload: Transferência de arquivos

para a placa através da interface paralela– gxsetclk ou xsetclk: Altera a freqüência do

clock da placa (entre 10KHz e 100MHz)

Page 15: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Características SPARC

• Conjunto maior de instruções– Mais instruções de salto– Instruções para ativar código de condição (cc)

• Suporte a regiões específicas de memória (ASI – Address Space Identifier)

• Imediato de 30 bits no CALL

• Big endian

Page 16: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Formato das Instruções0 1 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x

CALLop disp30

i1 0 x x x x x 0 0 0 0 0 0 x x x x x 0 0 0 0 0 0 0 0 0 x x x x x

ADDop rd op3 rs1 unused rs2

i1 0 x x x x x 0 0 0 0 0 0 x x x x x 1 x x x x x x x x x x x x x

ADDop rd op3 rs1 simm13

1 0 x x x x x 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 x x x x xunused opf rs2

FADDsop rd op3

1 0 x x x x x 1 1 0 1 1 0 x x x x x x x x x x x x x x x x x x xrs1 opc rs2

CPop1op rd op3

a0 0 x 0 0 0 1 0 1 0 x x x x x x x x x x x x x x x x x x x x x x

BEop cond op2 disp22

i1 1 x x x x x 0 0 0 0 0 0 x x x x x 0 0 0 0 0 0 0 0 0 x x x x x

rd op3 rs1 asi rs2LD

op

i1 0 x x x x x 0 1 0 0 0 0 x x x x x 0 0 0 0 0 0 0 0 0 x x x x x

ADDccop rd op3 rs1 unused rs2

Page 17: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Instruções (notação)

• rs1 e rs2 são as origens

• rd é o registrador destino

• ADD rs1, rs2, rdrd = rs1 + rs2

Ex.: ADD %i3, %i4, %o0

• ADD rs1, 100, rdrd = rs1 + 100

Ex.: ADD %i3, 100, %o0

Page 18: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Registradores

• Banco de registradores organizado em janelas

r[24]..r[31] (in)

r[16]..r[23] (local)

r[08]..r[15] (out) r[24]..r[31] (in)

r[16]..r[23] (local)

r[08]..r[15] (out) r[24]..r[31] (in)

r[16]..r[23] (local)

r[08]..r[15] (out)

r[0]..r[7] (global)

CWP + 1

CWPCurrent Window

CWP - 1

Restore,RETT

SAVE,trap

Page 19: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Registradores (convenções)Registrador Uso

%i7 = %r31 Endereço de retorno

%fp = %i6 = %r30 Frame pointer

%i0 = %r24 Primeiro parâmetro de entrada e valor de retorno

%o7 = %r15 Endereço do CALL

%sp = %o6 = %r14 Stack pointer

%o0 = %r8 Primeiro parâmetro de saída e valor retornado

%g7, %g6, %g5 Reservados

%g1 = %r1 Valor temporário

%g0 = %r0 0 (zero

Page 20: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Memória do LeonIntervalo Tamanho Conteúdo Controlador

0x00000000 – 0x1FFFFFFF 512Mb PROMControlador de

Memória0x20000000 – 0x3FFFFFFF 512Mb I/O em Memória

0x40000000 – 0x7FFFFFFF 1Gb SRAM e/ou SDRAM

0x80000000 – 0x8FFFFFFF 256Mb Registradores on-chip Barramento APB

0x90000000 – 0x9FFFFFFF 256Mb Unidade de depuração DSU

Page 21: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Alguns Registradores on-chipEndereço Significado0x80000000 Memory Configuration Register 1

0x80000004 Memory Configuration Register 2

0x80000008 Memory Configuration Register 3

0x80000010 AHB Status Register

0x80000014 Cache Control Register

0x80000018 Power-down Register

0x800000024 Leon Configuration Register

0x800000040 Timer 1 Counter Register

0x800000044 Timer 1 Reload Register

0x800000048 Timer 1 Control Register

0x800000070 UART 1 Data Register

0x800000074 UART 1 Status Register

0x800000078 UART 1 Control Register

0x80000007C UART 1 Scalar Register

Page 22: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Leon Configuration RegisterBit Significado30 Debug suport unit present

29 SDRAM controller present

28:26 Number of implemented Watchpoints

25 UMAC/SMAC instruction implemented

24:20 Number of register windows – 1

19:17 Log2(instruction cache size) in Kb

16:15 Log2(instruction cache line size) in 32bit words

14:12 Log2(data cache size) in Kb

11:10 Log2(data cache line size) in 32bit words

9 UDIV/SDIV instruction implemented

8 UMUL/SMUL instruction implemented

7 Watchdog present

6 Memory status and failing address register present

5:4 FPU type (00 = none, 01 = Meiko)

3:2 PCI core type (00 = none, 01 = InSilicon, 10 = ESA, 11 = Other)

1:0 Write protection type (00 = none, 01 = standard)

Page 23: Leon2 MO801/MC912. Características Básicas Processador RISC Padrão SPARC V8 (IEEE-1754) Palavra de 32 bits Descrição em VHDL-87 Barramento AMBA (AHB e

Código Fonte

• Configuração – target.vhd– device.vhd– config.vhd

• Interfaces– iface.vhd

• Módulo principal– leon.vhd, leon_eth.vhd,

leon_pci.vhd, leon_eth_pci.vhd

• Controlador de Memória– mctrl.vhd

• Processador– mcore.vhd

• Unidade de Inteiros– iu.vhd

• Biblioteca de tecnologia– tech_virtex.vhd,

tech_virtex2.vhd

• AMBA– amba.vhd