MIMI Flight Software

The Scalable Configurable
Instrument Processor
John R. Hayes
Johns Hopkins University
Applied Physics Laboratory
[email protected]
Hayes
1
MAPLD 2005/135
Introduction
• Instrument processors require low power,
small footprint, etc.
• Few processors meet these requirements
• Design our own using VHDL and FPGAs
• Architectural influences:
– APL’s FRISC (Freja, Flare Genesis)
– Harris RTX2010 (NEAR, ACE, MESSENGER,
New Horizons, etc.)
Hayes
2
MAPLD 2005/135
SCIP Processor Features
•
•
•
•
•
•
•
•
Stack Architecture: N op T->T (RTX)
16 or 32-bit Internal Data Path
16-bit Instruction OpCode
ALU/Condition Architecture (FRISC3/4)
Multiply/Divide Steps (FRISC4)
Barrel Shifter (FRISC4)
Stack Caches (FRISC3/4)
Memory-Mapped I/O
Hayes
3
MAPLD 2005/135
Scalability
• Data path, i.e. buses, ALU, barrel shifter
can be 16 or 32 bits wide
• Buses scale trivially in VHDL:
– bus_x: in unsigned(DBITS-1 downto 0);
• ALU based on function blocks with 1-level
of carry look-ahead scales easily
• Multiplier would not scale well; instead use
Booth multiply step; “scaling” done in
software
Hayes
4
MAPLD 2005/135
More Scalability
• Barrel shifter (based on funnel shifter) uses
N*log(N) resources
-- Funnel shifter.
process(a, b, count)
variable t: unsigned(2*DBITS-1 downto 0);
begin
t := a & b;
for i in 0 to DLBITS-1 loop
if count(i) = '1' then
t := to_unsigned(0, 2**i) &
t(2*DBITS-1 downto 2**i);
end if;
end loop;
result <= t(DBITS-1 downto 0);
end process;
Hayes
5
MAPLD 2005/135
Configurability
• SCIP library
– SCIP (DBITS=16 or 32, ABITS=up to 32)
– Clock generator (WBITS)
– AMBA APB bridge (ABITS, DBITS)
• AMBA APB component library
–
–
–
–
Hayes
Interrupt controller (INTS)
UART (DATABITS, STOPBITS, DIV)
Parallel ports (BITS)
Others: I2C-subset, watchdog, etc.
6
MAPLD 2005/135
Configuring a System on a
Chip (SoC)
• All components except decoders and
memory controller are from libraries
• A basic SoC, processor, interrupt controller,
and UART, is ~500 lines of VHDL
Hayes
7
MAPLD 2005/135
Instruction Set
Instruction
Call
CallL
Branch
Qbranch
ALUImm
ALUImmL
ALUStep
ALUOp
ALUOpEx
ALUTs
ALUTsEx
ALURdRg
ALUWrRg
Shift
ShiftIm
Load
Store
Special
Hayes
Forma t
0DDDDDDDDDDDDDDD
1000DDDDDDDDDDDD
DDDDDDDDDDDDDDDD
10010BBFFFFFFFFF
10011BBFFFFFFFFF
1010RSSIIIIIAAAA
1011RSS000 LAAAA
iiiiiiiiiiiiiiii
1011RSS001 aaaa
1011RSS010 AAAA
1011RSS011
1011RSS1CCCCAAAA
1100RSS0CCCCAAAA
1100RSS1CCCCAAAA
1101RSS0rrrrAAAA
1101RSS1rrrrAAAA
1110RSS
OO00
1110RSSIIIIIOO01
1110RSSIIIIIMM10
1110RSSIIIIIMM11
1111
s
Function
call
call long (32-bit only)
branch
branch if Fl=0
imm op T -> T
longimm*scale op T -> T
N op T:MD:Fl -> T:MD:Fl
N op T -> T
N op T -> T; cond -> Fl
N op T ->; cond -> T
N op T ->; cond -> Fl
Reg op T -> T
N op T -> Reg
N shift T -> T
imm shift T -> T
*(imm + T) -> T
*(imm + T) <- T
special
8
MAPLD 2005/135
16-Bit Version
• Adds Code Page and Data Page Registers to
supply upper address bits
• Adds far/near mode bit and special
instructions to set/reset mode
• Not compatible with RTX object code, but
most RTX source code runs
– Most I/O routines must be rewritten
– APL’s common instrument software library has
been ported
Hayes
9
MAPLD 2005/135
32-Bit Version
• Adds Long Subroutine Call instruction
• Adds 32-bit option to Load/Store
instructions
• Adds scale to Long Immediate instruction;
any 32-bit literal can be constructed with at
most two instructions
Hayes
10
MAPLD 2005/135
Implementation: Simulation
• Port cross-compilers to SCIP, 16-bit and 32bit versions
• Write architectural simulator in C
• Validate architecture, compiler, and
simulator
• Translate C into VHDL
• Use simulator to generate VHDL test bench
• Simulate VHDL test bench to validate
translation
Hayes
11
MAPLD 2005/135
Implementation: SCIP
Synthesis Area Usage
• Synthesize processor using Synplify Pro
• Synthesize 16-bit SCIP and 32-bit SCIP for
three similar parts
Hayes
12
MAPLD 2005/135
Implementation: Xilinx
• Xilinx Spartan-3 Starter Kit Board
• Board has 3S200 FPGA and 1 MB SRAM
• SCIP-16 with UART
– Usage: 8% (+ RAM) / 39%
• SCIP-32 with UART
– Usage: 14% (+ RAM) / 65%
• Runs all test programs
Hayes
13
MAPLD 2005/135
Implementation: New
Horizons (NH) Demo
• Build-up flight-spare NH processor board
• Remove RTX2010 processor
• Replace NH Actel (SX72) with:
– SCIP-16, clock gen., memory I/F, etc
– NH S/C I/F, watchdog, I2C subset, etc.
– Interrupt control, test port UART, etc.
• Measure power, etc.
Hayes
14
MAPLD 2005/135
Implementation: NH RTX
Processor Board
Hayes
15
MAPLD 2005/135
Implementation: NH SCIP
Processor Board
Hayes
16
MAPLD 2005/135
Implementation: NH SCIP
Results
• Actel (SX72) usage: 59 / 60%
• Running at 6 MHz (instruction rate)
• Board powered from external 5V (Actel
core 2.5 V from on-board regulator)
Hayes
17
MAPLD 2005/135
Implementation: V-Slit
Demo
• Redesign of NH RTX processor board
• Replace RTX2010 with QuickLogic
QL6325:
– SCIP-16, clock gen., memory I/F, etc
– QL6325 -> Aeroflex UT6325 path to flight
• Replace Actel SX72 with SX32:
– NH S/C I/F, etc.
– Interrupt control, test port UART, etc.
•HayesMeasure power, etc. 18
MAPLD 2005/135
Implementation: V-Slit
SCIP Processor Board
Hayes
19
MAPLD 2005/135
Implementation: V-Slit
Results
• QuickLogic (QL6325) usage: 52 / 45 %
• Running at 6 MHz (instruction rate)
• Board powered from external 3.3 and 2.5V
(QuickLogic and Actel share 2.5 V)
Hayes
20
MAPLD 2005/135
Summary
• Architecture validated
• Implementations on Xilinx, Actel, and
QuickLogic tested
• SCIP-16 provides replacement for
RTX2010; SCIP-32 provides growth path
• SCIP use planned on several upcoming
flight instruments
Hayes
21
MAPLD 2005/135