Thanks for the updated files, the Quartus patches seem to work fine now!
I am having problems running the example files however (starting with a slightly modified bare example that should set an output pin to 1 lighting up an LED). If I merely create an Arduino library (as is suggested in the github readme), the Arduino IDE complains that FPGA is defined twice (once in the VidorFPGA.cpp file in the VidorPeripherals library and once in my test library). I can comment out the offending lines in either of the libraries, but I am not certain how to figure out which app.ttf gets loaded in the end.
I have not yet managed to turn the output LED on through code written in Quartus. It seems to me that no matter what app.ttf I try to load, the example sketches from VidorPeripherals (setting outputs to on and off) seem to work. This indicates to me that I am always just loading the pre-compiled FPGA code, am I misunderstanding something?
I have also tried running the blinking example sketch written by Philippe which was posted here earlier and while Quartus indicates that everything compiles fine, the LED connected to port 6 never blinks. Is there a way for me to debug whether I have a problem with my FPGA? (The VidorPeripheral examples work!)
EDIT: Turns out I had screwed up something during my early debugging attempts, restoring the bootloader (according to the other thread) fixed my issue.
alex5678:
Hello, what differences does the VHDL code/commands I write for a Xilinx have, comparing to the VHDL I am going to write for the MKRVidor4000?
FPGA is synthesized with Quartus Prime. They plan to use premade images for several usecase. If I remember right there was plan to do some web integration for fpga build.
Hardcore users download VidorBitstream repository and create own fpga bit files with Quartus Prime Lite or full version. When using nios console you can use provided shell scripts to build libraries for arduino ide.
It's just naming convention for interface signals.
You just use Verilog or VHDL with specific module interface that their upcoming web tool supports.
You can create FPGA image from scratch or use github templates for creating your own bitstream and library for arduino. For this you need Quartus Prime or Quartus Prime Lite.
fpga flash memory mapped is structured as follows: first 512k are used for fpga boot image, second 512k are used by application image (around 300k are used for fpga binary and the rest for nios application code). The remaining 1mb is going to be used for user applications.. we're actually developing a flash file system to store resources such as fonts, bitmaps, etc.
Is this ready and/or what is the ETA for release of the flash file system?
Also - is there a detailed memory map of the system? Would be great to see the absolute addresses of the system.
Hi John,
a memory map is not available simply because it depends on what you have instantiated in the FPGA.
the only firm thing is that we have reserved the first MB of flash for two FPGA images. since images are smaller than 512K we have set an arbitrary pointer in flash, after the flash images, to which the processor is jumping to execute code.
internally in the FPGA you can get a memory map of the peripherals connected to the processor by looking at the system.h file in the bsp directory generated by the toolchain in the build/software dir of the project
I have followed all instructions on how to build one of the provided projects, but I continuously receive an error when attempting to run "build_all.sh" from within NIOS II:
Error (12006): Node instace "u0" instantiates undefined entity "MKRVIDOR4000_peripherals_lite_sys". Ensure that required library paths are specified correctly, define the specified entity, or change the instantiation. If this entity represents Intel FPGA or third-party IP, generate the synthesis files for the IP. File: C:/intelFPGA_lite/18.1/VidorBitstream-release/projects/MKRVIDOR4000_peripherals/rtl/MKRVIDOR4000_peripherals_top.v Line: 399
This happens for both MKRVIDOR4000_peripherals as well as MKRVIDOR4000_graphics. Bare does not do this (I assume because there are no peripheral IPs included).
Quartus Prime Lite 18.1 is installed, patches script applied, Go installed, running build_all.sh from within project folder...not sure what else to try?
Apparently, the port of Adafruit GFX for VidorBistream needs some adjustments.
The code for filling the primitives will mostly use writeVLine() function, while SDRAM would much prefer the horizontal lines.
Apparently, the port of Adafruit GFX for VidorBistream needs some adjustments.
The code for filling the primitives will mostly use writeVLine() function, while SDRAM would much prefer the horizontal lines.
Also that's pretty slow if you have lite version NIOS II e. Recommend to use HW acceleration for H lines and BMP copy
I always get error from 'quartus_cdb' and 'quartus_asm', telling that I should run 'quartus_map' first with the top-level entity. Is it about the paths to database?
When I explicitly enter the /build subdir in the project, those steps are performed ok when done manually.
But then the entire 'update_fw.sh' won't run from within /build subdir.
Adding 'build/' path in front of $PROJECT_NAME in 'update_fw.sh' seemingly achieves the desired effect.
Limba:
I think you have to call build_all.sh in project folder. you have to add scripts folder to path env variable.
Well, the whole idea of 'update_fw.sh' is to update the data to be put in on-chip ram, without recompiling the entire fpga project.
Maybe it's not used by the devs at all, or wasn't adapted to the flow/environment that was published on github...