Index: branches/v4/platforms/tsarv4_mono_mmu_ioc/desc.py
===================================================================
--- branches/v4/platforms/tsarv4_mono_mmu_ioc/desc.py	(revision 639)
+++ branches/v4/platforms/tsarv4_mono_mmu_ioc/desc.py	(revision 640)
@@ -14,4 +14,5 @@
             Uses('caba:vci_timer'),
             Uses('caba:vci_block_device_tsar_v4'),
+            Uses('caba:vci_framebuffer'),
             Uses('caba:vci_vgmn'),
             Uses('caba:vci_mem_cache_v4'),
Index: branches/v4/platforms/tsarv4_mono_mmu_ioc/segmentation.h
===================================================================
--- branches/v4/platforms/tsarv4_mono_mmu_ioc/segmentation.h	(revision 639)
+++ branches/v4/platforms/tsarv4_mono_mmu_ioc/segmentation.h	(revision 640)
@@ -20,3 +20,8 @@
 #define BD_SIZE     0x00000020 // 8 mapped-registers
 
+#define FB_XSIZE    640
+#define FB_YSIZE    480
+#define FB_BASE     0x20000000
+#define FB_SIZE     (FB_XSIZE * FB_YSIZE * 2)
+
 #endif
Index: branches/v4/platforms/tsarv4_mono_mmu_ioc/top.cpp
===================================================================
--- branches/v4/platforms/tsarv4_mono_mmu_ioc/top.cpp	(revision 639)
+++ branches/v4/platforms/tsarv4_mono_mmu_ioc/top.cpp	(revision 640)
@@ -33,4 +33,5 @@
 #include "vci_timer.h"
 #include "vci_block_device_tsar_v4.h"
+#include "vci_framebuffer.h"
 
 #include "vci_vgmn.h"
@@ -197,4 +198,5 @@
     maptabd.add(Segment("timer_d" , TIMER_BASE , TIMER_SIZE , IntTab(4), false));
     maptabd.add(Segment("bd_d"    , BD_BASE    , BD_SIZE    , IntTab(5), false));
+    maptabd.add(Segment("fb_d"    , FB_BASE    , FB_SIZE    , IntTab(6), false));
 
     std::cout << maptabd << std::endl;
@@ -268,6 +270,9 @@
             param.dsk_path); // mapped_file[, block_size=512, latency=0]
 
+    VciFrameBuffer<vci_param> fb("fb", IntTab(6), maptabd, FB_XSIZE, FB_YSIZE,
+            FbController::RGB_16);
+
     VciVgmn<vci_param> vgmnd("vgmnd", maptabd,
-            2, 6,       // #initiators, #targets
+            2, 7,       // #initiators, #targets
             2, 8,       // min_latency, FIFO depth
             IntTab(1)); // default target
@@ -313,4 +318,6 @@
     VciSignals<vci_param> signal_vci_ini_d_bd("signal_vci_ini_d_bd");
     VciSignals<vci_param> signal_vci_tgt_d_bd("signal_vci_tgt_d_bd");
+
+    VciSignals<vci_param> signal_vci_tgt_d_fb("signal_vci_tgt_d_fb");
 
     /*
@@ -364,4 +371,8 @@
     bd.p_vci_initiator(signal_vci_ini_d_bd);
     bd.p_irq(signal_bd_irq);
+
+    fb.p_clk(signal_clk);
+    fb.p_resetn(signal_resetn);
+    fb.p_vci(signal_vci_tgt_d_fb);
 
     vgmnd.p_clk(signal_clk);
@@ -375,4 +386,5 @@
     vgmnd.p_to_target[4](signal_vci_tgt_d_timer);
     vgmnd.p_to_target[5](signal_vci_tgt_d_bd);
+    vgmnd.p_to_target[6](signal_vci_tgt_d_fb);
 
     vgmnc.p_clk(signal_clk);
