|
News -
Latest
|
|
Thursday, 18 December 2008 11:12 |
Runtime partial reconfiguration
Runtime partial reconfiguration has been added to Mobius and XPSupdate.
The design flow is extremely simple:
- First the user creates a template PlanAhead project with partial reconfigurable regions (PRR) that will later be filled with Mobius-generated partial reconfigurable modules (PRM).
- Second the user creates Mobius source using the new keyword "region" to declare alternate PRM associated with a PRR (e.g. region PRMa,PRMb,PRMc:PRR1). A PRM is a procedure instance, and of course each PRM and PRR must have the same interface. An arbitrary number of PRRs are supported. Reconfiguration is simply an assignment statement (e.g. PRR1:=PRMb) allowing arbitrary user-specified reconfiguration strategies.
For example, below is Mobius source that displays a counter value on 8 LEDs. Procedure PRMa displays using msb-first while PRMb displays using lsb-first.
type uint5=uinteger(5);
type uint8=uinteger(8);
procedure PRMa(in c:chan of uint8; dataout oled:uint8);
var v:uint8;
while true do seq
c ? v;
oled:=v{7:-1:0} (* msb first *)
end;
procedure PRMb(in c:chan of uint8; dataout oled:uint8);
var v:uint8;
while true do seq
c ? v;
oled:=v{0:7} (* lsb first *)
end;
region PRMa,PRMb : PRR1(in c:chan of uint8; dataout oled:uint8);
procedure static(datain buttons:uint5; out c:chan of uint8);
var i:uinteger(32);
while true do
for i:=0:0x7fffffff do seq
case buttons then
1: PRR1:=PRMa;
2: PRR1:=PRMb
end;
c ! i{30:-1:23} (* send topmost bits to prm to display *)
end;
procedure top(in buttons:uint5; out leds:uint8);
var c:chan of uint8;
par
static(buttons,c);
PRR1(c,leds)
end;
- Next the user generates a custom makefile, and then builds the hw/sw PR system, including building the initialization *.ace and partial *.bit files.
mobius -make prdemo.mbs
make -f prdemo.make all
- Finally copy the generated image files to CompactFlash on a FPGA board that supports Xilinx SysAce.
The Mobius PR flow has been tested on Xilinx Virtex4 and Virtex5 platforms, and requires Xilinx ISE v9-10, Xilinx EDK v9-10, and Xilinx PlanAhead v10.
Coming soon to the next Mobius release!
|
|
Last Updated ( Saturday, 06 June 2009 13:51 )
|