Search the Community

Showing results for tags 'ZPUino'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Community
    • Gadget Factory Reboot 2022
    • Gadget Factory
    • Documentation
    • FPGA Discussions
    • Community Projects
  • Soft Processors
    • Migen/LiteX/Risc-V
    • ZPUino
    • J1 Forth
    • AVR8 Soft Processor
  • Electronics
    • Modules
  • Papilio Platform (Retired)
    • Papilio General Discussion
    • Papilio Pro
    • Papilio One
    • Papilio DUO
    • Papilio Wings
    • DesignLab IDE
    • DesignLab Libraries
    • RetroCade Synth
    • Papilio Arcade
    • Papilio Loader Application
    • Papilio Logic Sniffer
    • Pipistrello
    • Retired
  • Open Bench (Retired)
    • Open Bench Logic Sniffer at Dangerous Prototypes
    • OpenBench Logic Sniffer at Gadget Factory
  • GadgetBox Universal IoT Hardware (Retired)
    • GadgetBox General Discussion
  • Gadget Factory Internal Category


  • Papilio Platform
    • Papilio One
    • Papilio Plus
    • Papilio Wings
    • LogicStart MegaWing
    • ZPUino
    • Papilio Pro
  • Papilio Arcade
  • RetroCade Synth
  • Logic Sniffer
  • FPGAs
  • DesignLab
    • Example Projects
    • Libraries


  • Papilio FPGA
    • Papilio UCF (User Constraint) Files
    • Papilio Bit Files
  • Papilio Arcade
  • RetroCade Synth
  • General
  • Beta (Test) Releases
  • Books

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 21 results

  1. I just uploaded a small video demoing Linux running inside ZPUino (simulator). Things are really going smooth. Now, hardware must be slightly adapted in order to achieve a "decent" performance. ZPUino running Linux 3.4.0 (uclinux/Linux MMU-less) with uClibc 0.9.29 and busybox 1.20.2. Alvie This post has been promoted to an article
  2. Dear Altruists, I'm new to Papilio Pro FPGA. I designed my circuit with VHDL and also synthesized it, and it is ready to be loaded in the papilio pro fpga. My circuits interface has an input of 64 bits and output of 1 bit. I need only to send this 64 bit data from my pc to FPGA and receive the output of 1 bit ( please check the uploaded circuit interface). I already watched most of the learning videos. I have already contacted Mr. Alvie and thanks to him he reply with an answer, but it was a little difficult for me to understand as I am new to FPGA. His answer was that I should connect my circuits to one of wishbone ZPUino slots, and use ZPUino to interface with the USB/serial using software moving data to and form my circuits. However, the things that I don't understand are that: 1. Should i connect my circuits to wishbone bridge and then connect my circuits to the wishbone slots as you did here ( If the answer yes, should I connect the the both input and output to the wishbone bridge. If answer no, then should I interface my circuits directly to the ZPUino wishbone slots. 2. If I connect my circuits to ZPUino wishbone slots. The input 64 bits and the output 1 bit should be connected to what to the slots or Paplilio Pro Pins. 3. Mr. Jack illustrate in the learning site videos that ZPUino should be loaded to the SPI not to the FPGA Spartan6. So, If I am going to interface my design to ZPUino how can I load the circuits to the FPGA. 4. If I am going to make an interface of the UART I think I just need to follow as same as Mr. Jack did in this video( ) Please forgive my shortcomings. I am new to these things. Any help will be highly appreciated. Thanks
  3. hi, i'm using designlab 1.0.8 with ise 14.7 on ubuntu 17.04 amd64, targeting a papilio pro/spartan 6 with the zpuino soft processor. i've got a working proof-of-concept design which combines a few bits and pieces, namely the whirlyfly (whirlygig) random number generator (, a couple wishbone uart's (COMM_zpuino_wb_UART.vhd), and a wishbone watchdog peripheral written in verilog that i've been trying to integrate ( the rng and uart components appear to be working fine, giving me up to 280KB/s or so of random data when polling both wishbone uart's sequentially at 3mbit/s. i'm then using the reference blake2s hash implementation ( to further "whiten" the output of the rng's. this slows down the output to about 30KB/s which is fine considering it's a complex operation. that's not the issue. anyhow, the wishbone peripherals included in designlab, as well as the schematic representation of the zpuino 2.0 soft processor bundle the input and output wires into the wishbone_in/wishbone_out connections, which i assume is for simplicity when placing components using the schematic editor in ise. the watchdog.v implementation linked previously is designed with all of the wishbone wires broken out like: module watchdog(wb_clk_i, wb_rst_i, wb_dat_i, wb_dat_o, wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_int_o); i've been trying unsuccessfully now for a while to modify the watchdog.v to present the same interface, so i can easily attach it to the zpuino using the schematic editor gui (i.e. Papilio_Pro.sch) in ise. without knowing how to modify the schematic symbol after generating it, i just took the one from the wishbone uart included in designlab, replaced the relevant variables and removed the tx/rx, and overwrote the existing watchdog.sym in the project directory. that seemed to work fine and let me drag & drop the watchdog onto an open wishbone port on the zpuino. the issue i'm having is that i can't seem to get the pre-synthesis rtl schematic viewer in planahead to "alias" the slices of wishbone_in/wishbone_out to the friendly-named wires representative of their function within the wishbone bus (e.g. wire [31:0] wb_dat_i; assign wb_dat_i [31:0] = wishbone_in [59:28];). the design does synthesize fine, but i haven't bothered trying to write C code for the zpuino to interface/write with the watchdog peripheral because of the apparent brokenness being shown in planahead. here's a simplification of what i've been doing unsuccessfully to create the "friendly" aliases of wishbone_in/wishbone_out: // original, simplified module watchdog(wb_clk_i, wb_rst_i, wb_dat_i, ...); parameter Tp = 1; input wb_clk_i; input wb_rst_i; input [`WDT_WIDTH - 1:0] wb_dat_i; ... // new, simplified module watchdog(wishbone_in, wishbone_out); parameter Tp = 1; input [100:0] wishbone_in; output [100:0] wishbone_out; wire wb_clk_i = wishbone_in [61]; wire wb_rst_i = wishbone_in [60]; wire [31:0] wb_dat_i; assign wb_dat_i [31:0] = wishbone_in [59:28]; ... // mutual code between original & new ... always @(posedge wb_rst_i or posedge wb_clk_i) if (wb_rst_i) begin stb <= #Tp 1'b0; we <= #Tp 1'b0; dat_ir <= #Tp `WDT_WIDTH'h0; end else begin stb <= #Tp wb_stb_i && wb_cyc_i; we <= #Tp wb_we_i; dat_ir <= #Tp wb_dat_i; end ... attached are abridged screenshots of what planahead shows for the unmodified verilog code straight from the aforementioned github repo (top image), and the seemingly broken output from my modified version where i try to bundle up the wires into wishbone_in/wishbone_out. the dat_ir is where wb_dat_i is showing a single wire instead of [31:0]. also attached is the work-in-progress modified watchdog.v. please keep in mind that these are the first lines of vhdl/verilog i've ever written so my knowledge of syntax/terminology is very limited. thanks! watchdog.v
  4. Hi everyone, I have a papilio pro working successfully with designlab but I want to use a custom board (like papilio one) with it. I've selected papilio one 250k and "Load circuit" seems to be ok, but when I tried to upload... the output is attached: "Cannot get programmer version, aborting". I've checked COM port, FTDI configuration EEPROM is empty (with FT_prog), papilio drivers are loaded... I also tried to change some values in the FPGA (HSWAP is '0' so every pin will be pullup, but I've pulled up M0 and M2, and M1 to GND. Also "Done" and "init b" pulled up.)... Any help? My XC3S250E has different IDCODE so I've added this line to the devlist.txt file: Papilio-prog seems to work good. What is the problem? Thanks
  5. Version 2.0.0


    Preliminary ZPUino dcache (v2)
  6. Version 1.0


    ZPUino Soft Processor Source Code, use this to synthesize your own custom versions of the ZPUino Soft Processor with the peripherals that you want! Quick Links: ZPUino Home Page ZPUino User Guide for use with Papilio
  7. I am trying to use an external interrupt on the ZPUino to report status of an 8-bit counter via the USB port. I have the code working on a Arduino Mega. I want to port the code over to a Papilio One 250 and utilize the FPGA to handle some external output signals. Basically I am looking for the equivalent to the following Arduino code: attachInterrupt(0, capture_bearing, RISING); Any help would be greatly appreciated.
  8. I recently purchased a Papilio Pro together with a Logic Start board. Whenever I try to send a compiled example program to the board I get the following error message; Board: GadgetFactory Papilio Pro LX9 @ 96000000 Hz (0xa4041700) Board mismatch!!!. Board is: 0xa4041700 'GadgetFactory Papilio Pro LX9' Sketch is for: 0xb4041700 'GadgetFactory Papilio Pro LX9 (ZPUino 2.0)' My conclusion is that the supplied board has version 1 of the ZPUino installed and not the latest version as I would have expected. How do I install ZPUino version 2.0.
  9. Hi, I know that in general the configuration memory of FPGAs can be accessed and used with some limitations. And as the ZPUino loads it's program from the FLASH I would be very interested to know if it's possible to store and read some values from the sketch? Thanks, Tobias
  10. Hi, First of all: I started working with my Papilio Pro again and I really like how things developed here! I really like the DesignLab and how easy it easy to connect things to your own blocks! Thanks. To verify some custom hardware connected to the board I need to create some square wave signal with some MHz. As neither analogWrite nor the PWM functions in the Timer class are working / present I tried writing to the registers directly (inspired by some forum post here) also does not toggle the PIN (WB12): #include "register.h" #define FREQUENCY 100000#define SW1 WB12void setup(){ pinMode(SW1, OUTPUT); pinModePPS(SW1, HIGH); outputPinForFunction(SW1, IOPIN_TIMER0_OC); TMR0CNT = 0; TMR0CMP = (CLK_FREQ / FREQUENCY) - 1; TMR0CTL = _BV(TCTLENA)|_BV(TCTLDIR)|_BV(TCTLCCM); TMR0PWMLOW(0) = 0; TMR0PWMHIGH(0) = 200; TMR0PWMCTL(0) = 1;} But for now the pin stays low...
  11. Is it possible to add more Wishbone Slots to the ZPUino?
  12. mono

    FreeRTOS on ZPUino

    hi there, im new to the forum. i am playing around with the zpuino for about a month now in zap and vhdl. it runs on the papilio pro. the papilio 250k is nice as well, but its too small for my project. mainly i like it, because i needed 8 serial ports for my project. so far everything works just fine! :-) the 8 serial ports & spi work as expected. as my project gets bigger, i was wondering, if there is a port for freertos available, which ive used before on stm32-mcus. ideally i could do with a freertos-version within the zap-ide. the only thing i spotted on the net is this on here: unfortunately the freertos-files are not included. im using freertos 7.52 and in the path i can't find the zpu-folder. can anybody advise me in regards to freertos on the zpuino ? best regards, mOnO Edit: its not included in FreeRTOS V5.30. its also not included in the current FreeRTOS 8.12...
  13. Although current ZPUino timers implement a very complex and capable PWM system, we are struggling a bit to integrate PWM and Timer support at same time in ZPUino code. It's rather hard to mix both in a sensible way, because timers can have been claimed for other modules, and PWM may not always be able to map the correct pin, or map the correct timer, and fixing this in software will end up with a bit mess of code and bugs. So, after a quick chat with Jack a few days ago, we concluded that it would be better to have a separate PWM module from now on. But we are not entirely sure of what you users may need/want from such a module. I have spent last couple of days thinking about this, and I have come to a preliminary design which I'd like you to comment on. This design is based on my previous experience with a very PWM-capable generator - the Texas Instruments TMS320F series. I have borrowed some ideas from them, and my plan is roughly to have something like this (I have already implemented most of it, actually): -- Overall Module view - 16-bit counter, 8-bit prescaler. Up to 4 PWM compare/output blocks. - Each output block has 2 outputs. - Sync-in/Sync-out support for cascading more modules (if for example different timebases are needed) and to keep them perfectly synchronized. - Interrupt support. - Clocking block - 8-bit prescaler. Can divide the main clock by anything from 1 to 255. - Only meant to be programmed once. Subsequent programming may lead to glitches. - Per-module clock enable/disable. - Counter block - Three modes: count-up, count-down, and count-up-down - 16-bit period, with shadow register configurable. Phase counter for sync-in. - Compare block (up to 4 blocks per module) - 2 comparators (A and with 16-bit comparator. - Shadowing support - Output module (up to 4 blocks per module) - 2 outputs. - Each output configurable to both A/B comparators, zero or overflow. Can either set, clear, toggle or no-op on output pin. Comments ? Alvie
  14. Hi All, I've been getting back into some Papilio development again lately and have been very happy to see all the improvements to the SoC ecosystem. I've been able to reproduce the pwn tutorial (very helpful!) and now want to add a toy 'adder' (add two registers and store the result in a third) component. I'm struggling to understand the behavior of async vs sync from the perspective of software running on zpuino. With an async result do you poll for a ready bit, vs having the cpu block on sync? Are there software examples of the two, or best practices to follow? The default template is async, and the vhdl code makes sense, I'm just wondering… for the adder component described above, should I be using sync? (I've seen the examples of that in another thread). Thanks in advance, -Greg
  15. Hello, I'm also getting the "Cannot get programmer version, aborting" message when trying to upload a sketch to my Pro. I've tried the suggestions provided to others but continually get the same message. To date I've tried the following with no luck: - Ensuring that I have the correct port selected (tried again after removing every last trace of FTDI software from my Win7 pc). - Changing cables and ports on my pc. - The Zap 2.2.0 IDE bootloader approach as well as the approach described in the "LogicStart MegaWing Example" sketch. - Looking at it sternly to try and guilt it into working. - Ensured that Papillio Programmer is selected as the programmer. - Tried each of the Pro LX9 ZPUino boards when burning the bootloader and trying to upload code. I can see the TX light flashing when I try to upload and, as the others have stated, the AVR quickstart works just fine so I'm at a loss. My environment is Win7-64, Zap IDE 2.2.0, Loader 2.6 and the board says "BPC3011 V1.3". Any suggestions? Thanks, David
  16. Hello, Which app to use to save PNG file and then convert it with png2zpuinohqvga tool to get correct image ? Given example works, but not my own (getting random colors). I can't find information about image size and colors count, too. Thanks
  17. Hello, I am the new owner of a Papilio 500 with a Logic Start Mega Wing. I am eager to dig into the VGA and sound capabilities. I have taken the following steps and am bumping up against a "Cannot get programmer version, aborting" error when trying to upload the VGA Hello World example. From the top: Download Papilio Boot Loader Run the Erase and Verify operations in the Papilio Boot Loader. Download ZAP 2.2.0 Set the Board to the Papilio One 500 running the Mega Start Hyperion... Select the Papilio Programmer Burn the Bootloader Upload the VGA Hello WorldI would expect the program to upload but I get the following output: Executing C:\Users\brent\Desktop\papilio-zap-ide/hardware/tools/zpu/bin/zpu-elf-size C:\Users\brent\AppData\Local\Temp\build1289722314899768199.tmp/Hello_World.cpp.elfBinary sketch size: 2,036 bytes (of a 12,160 byte maximum) - 1,992 bytes ROM, 52 bytes memory, 16% usedCannot get programmer version, aborting Any thoughts on how to get around this issue?
  18. Just like to share with you guys an overview of a typical block transfer from the SDRAM. This is used by the ZPUino instruction cache and (for version 2) also the DMA channel. This goes as fast as possible can go. The wishbone data interface witdh is 32-bit, and the SDRAM is 16-bit, so it takes 2 cycles to grab the whole 32-bit word from the SDRAM. In this image we can see the wishbone starting a cycle (asserting the CYC signal), and strobing an address (by asserting the STB signal). If you look more clearly (you cannot see the whole address value here), right after strobing the first address, the STALL signal from the sdram controller is asserted. At this point, the system already has a new address on the bus, and will hold it there until the STALL signal from the controller goes low again. It then proceeds to the next address. This up to the point that there are no more addresses to place on the bus, where the master lowers the STB signal, but it keeps the CYC signal on. Right after the first address strobe, the SDRAM starts to receive the requests. They are also bursted, so you see that addresses are changing even before the first reply from the SDRAM (just after the first high-z period, the longer one on the DQ line). Again, we pipeline even at the SDRAM level, not only at the wishbone level. When the first data starts to come out, you can see the ACK signal from the controller, signaling that data is valid. We keep on getting an ACK each 2 clock cycles until we have read everything we bursted into the SDRAM controller, after which the master lowers the CYC signal, relinquishing the SDRAM for other masters that may exist. A closer look: Here you can see the start of the transaction, with the proper values filled in. Notice how the clock and the SDRAM lines are not aligned: this takes all the IO delays into account. Alvie
  19. Hello, I was wondering if anyone could point me in the right direction on a problem I am having. I am trying to understand the ZPUino system and I want to make a customized core for my project so I am trying to just figure out how the whole project source fits together. I can compile a with whatever core changes I intend on making bit successfully. There is a bootloader section in the repository which has debug and verbose options. I am attempting to just enable verbose options as an exercise in understanding how all the pieces fit together. I can build the bootloader code successfully I have searched but I cant seem to find any information on how to integrate a custom bootloader with a custom core. In a previous post i read that the ZPUino doesnt use a bmm file so how do you integrate the bit with the hex of the bootloader. Could anyone point me in the right direction. Thanks
  20. I'm using Ubuntu 13.04 64-bit and I noticed that the ZPUino IDE came with "". I tried to use these on my machine, but I got a "No such file or directory" error. I did a google search and saw this: Which has made me think I must compile the ZPU toolchain for a 64-bit machine. I follow the steps as directed by this page: I run into this error: *** buffer overflow detected ***: zpu-elf-ar terminated======= Backtrace: =========/lib/x86_64-linux-gnu/[0x2aaaaade15cc]/lib/x86_64-linux-gnu/[0x2aaaaade0560]/lib/x86_64-linux-gnu/[0x2aaaaaddf9e9]/lib/x86_64-linux-gnu/[0x2aaaaad4caeb]/lib/x86_64-linux-gnu/[0x2aaaaad40720]/lib/x86_64-linux-gnu/[0x2aaaaad1de68]/lib/x86_64-linux-gnu/[0x2aaaaaddfa84]/lib/x86_64-linux-gnu/[0x2aaaaaddf9cd]zpu-elf-ar[0x4072cd]zpu-elf-ar[0x4091ff]zpu-elf-ar[0x40cda7]zpu-elf-ar[0x40494b]zpu-elf-ar[0x404f07]zpu-elf-ar[0x40274b]/lib/x86_64-linux-gnu/[0x2aaaaacf1ea5]zpu-elf-ar[0x402a95]======= Memory map: ========00400000-00452000 r-xp 00000000 08:02 12724355 /home/kwoods/workspace/ZPU/zpugcc/toolchain/install/bin/zpu-elf-ar00652000-00653000 r--p 00052000 08:02 12724355 /home/kwoods/workspace/ZPU/zpugcc/toolchain/install/bin/zpu-elf-ar00653000-00654000 rw-p 00053000 08:02 12724355 /home/kwoods/workspace/ZPU/zpugcc/toolchain/install/bin/zpu-elf-ar00654000-00658000 rw-p 00000000 00:00 0 0162e000-01736000 rw-p 00000000 00:00 0 [heap]2aaaaaaab000-2aaaaaace000 r-xp 00000000 08:02 11013730 /lib/x86_64-linux-gnu/ld-2.17.so2aaaaaace000-2aaaaaad0000 rw-p 00000000 00:00 0 2aaaaaad0000-2aaaaaad7000 r--s 00000000 08:02 787339 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache2aaaaaad7000-2aaaaaad8000 rw-p 00000000 00:00 0 2aaaaaae4000-2aaaaaae7000 rw-p 00000000 00:00 0 2aaaaaccd000-2aaaaacce000 r--p 00022000 08:02 11013730 /lib/x86_64-linux-gnu/ld-2.17.so2aaaaacce000-2aaaaacd0000 rw-p 00023000 08:02 11013730 /lib/x86_64-linux-gnu/ld-2.17.so2aaaaacd0000-2aaaaae8e000 r-xp 00000000 08:02 11013754 /lib/x86_64-linux-gnu/libc-2.17.so2aaaaae8e000-2aaaab08d000 ---p 001be000 08:02 11013754 /lib/x86_64-linux-gnu/libc-2.17.so2aaaab08d000-2aaaab091000 r--p 001bd000 08:02 11013754 /lib/x86_64-linux-gnu/libc-2.17.so2aaaab091000-2aaaab093000 rw-p 001c1000 08:02 11013754 /lib/x86_64-linux-gnu/libc-2.17.so2aaaab093000-2aaaab098000 rw-p 00000000 00:00 0 2aaaab098000-2aaaab779000 r--p 00000000 08:02 399404 /usr/lib/locale/locale-archive2aaaab779000-2aaaab78d000 r-xp 00000000 08:02 11013779 /lib/x86_64-linux-gnu/ ---p 00014000 08:02 11013779 /lib/x86_64-linux-gnu/ r--p 00014000 08:02 11013779 /lib/x86_64-linux-gnu/ rw-p 00015000 08:02 11013779 /lib/x86_64-linux-gnu/ rw-p 00000000 00:00 0 [stack]7fff223fe000-7fff22400000 r-xp 00000000 00:00 0 [vdso]ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]make[2]: *** [libgcc.a] Aborted (core dumped)make[2]: *** Deleting file `libgcc.a'make[2]: Leaving directory `/home/kwoods/workspace/ZPU/zpugcc/toolchain/gccbuild/gcc'make[1]: *** [stmp-multilib] Error 2make[1]: Leaving directory `/home/kwoods/workspace/ZPU/zpugcc/toolchain/gccbuild/gcc'make: *** [all-gcc] Error 2Is there any way to get around this? I'm a bit stuck and my end goal right now is just to get the ZPUino IDE to work. Also, is there any chance a simplified version of Linux could be compiled with the ZPU toolchain?
  21. Version 1.0


    This bit file loads the ZPUino soft processor with 160x120x8 VGA Output to the Papilio One 500K board and connects the VGA output to the LogicStart MegaWing. This ZPUino variant is derived from the "Hyperion" (God of Light) variant. VGA library reference is here. Source code for the LogicStart variant. Get Started with the ZPUino.