- This is an example core to show how to access BRAM from both c and vhdl
- 640x480 Resolution
- Tested with 14.6 ISE Design Suite
- Supports hard-coded 4 x 10-byte objects. Check
vga_fsl.vhdto change it - PORT B of a dual port BRAM is connected as the frame buffer, so that C code in SDK can write through PORTA and VHDL side from the ip reads from PORTB
- Checkout the project and add it to project repository so that it shows up under peripherals tab in EDK
- Drag and drop
AXI BRAM Controllerfrom IP Catalog to the project - From the configuration, under
AXIchooseAXI4LITEfor theAXI4 Protocoloption, and checkSlave Single Port BRAMoption, then hit OK - Hit
Hardware -> Configure Coprocessor vga_fslshould show up underAvailable Coprocessors. Hit it and hit<< Addthen hit Ok- Under
Bus Interfacestab expand both the newly generatedaxi_bram_blockandvga_fsl_0and connect PORTB's together - Go to
Portstab and expandvga_fsl_0choosehsync,vsync, andrgb, right click and hitMake External - Generate a 25 MHz clock from
clock_generator, and hook it up tovga_clkport - If it doesn't automatically, connect
FSL_Clkto the bus clock, andSYS_Rstto the bus reset undermicroblaze_to_vga_fsl_0 - Check
DefaultsunderPort Filterson the right, and underPortstab expand theaxi_bram_blockand connectBRAM_Clk_Bto the bus clock - Add the external pins to the
ucffile. Following is forDigilent Nexys3 board:
## VGA Pins for Digilent Nexys3 Board
NET vga_fsl_0_rgb_pin<7> LOC = "N7" | IOSTANDARD = "LVCMOS33"; # RED 2
NET vga_fsl_0_rgb_pin<6> LOC = "V7" | IOSTANDARD = "LVCMOS33"; # RED 1
NET vga_fsl_0_rgb_pin<5> LOC = "U7" | IOSTANDARD = "LVCMOS33"; # RED 0
NET vga_fsl_0_rgb_pin<4> LOC = "V6" | IOSTANDARD = "LVCMOS33"; # GREEN 2
NET vga_fsl_0_rgb_pin<3> LOC = "T6" | IOSTANDARD = "LVCMOS33"; # GREEN 1
NET vga_fsl_0_rgb_pin<2> LOC = "P8" | IOSTANDARD = "LVCMOS33"; # GREEN 0
NET vga_fsl_0_rgb_pin<1> LOC = "T7" | IOSTANDARD = "LVCMOS33"; # BLUE 1
NET vga_fsl_0_rgb_pin<0> LOC = "R7" | IOSTANDARD = "LVCMOS33"; # BLUE 0
NET vga_fsl_0_hsync_pin LOC = "N6" | IOSTANDARD = "LVCMOS33"; # HSYNC
NET vga_fsl_0_vsync_pin LOC = "P7" | IOSTANDARD = "LVCMOS33"; # VSYNC
- Generate bitstream and you should see the stuff in the bram on your monitor. (Well partial, and well black by default probably)
- Head into SDK to write some stuff to the BRAM to display it
- Check out
examples/framebufferdemo.cto see an example on how to write to BRAM from SDK - Check out
examples/system.mhsto see an example design - Download
examples/nexys3_vga_fsl_shared_bram_demo.bitto your Nexys3 board for the demo that displays bram content on the monitor connected through VGA