o processador leon rodolfo jardim de azevedo. roteiro características básicas configuração...
Post on 17-Apr-2015
107 Views
Preview:
TRANSCRIPT
O Processador Leon
Rodolfo Jardim de Azevedo
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)
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
Interface Gráfica
• Interface de configuração similar ao do kernel do Linux
Opções de Síntese
Processador e Cache
Unidade de Inteiros
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.
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
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
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
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
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
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)
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
Formato das Instruções
0 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 xCALL
op 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
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
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
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)
Memória do Leon
Intervalo Tamanho Conteúdo Controlador0x00000000 – 0x1FFFFFFF 512Mb PROM
Controlador de Memória
0x20000000 – 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
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
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)
top related