alvieboy

Members
  • Content count

    865
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by alvieboy

  1. alvieboy

    Hamster's SDRAM_Controller

    On the mapping report (.mrp) you should see if your IO pins have dedicated IO registers. +---------------------------------------------------------------------------------------------------------------------------------------------------------+ | IOB Name | Type | Direction | IO Standard | Diff | Drive | Slew | Reg (s) | Resistor | IOB | | | | | | Term | Strength | Rate | | | Delay | +---------------------------------------------------------------------------------------------------------------------------------------------------------+ | CLK | IOB | INPUT | LVTTL | | | | | | | | DRAM_ADDR<0> | IOB | OUTPUT | LVTTL | | 12 | FAST | OFF | | | .... | DRAM_CLK | IOB | OUTPUT | LVTTL | | 12 | FAST | ODDR | | | | DRAM_CS_N | IOB | OUTPUT | LVTTL | | 12 | FAST | | | | | DRAM_DQ<0> | IOB | BIDIR | LVTTL | | 12 | FAST | IFF | | | | | | | | | | | OFF | | | | DRAM_DQ<1> | IOB | BIDIR | LVTTL | | 12 | FAST | IFF | | | | | | | | | | | OFF | | | ... | DRAM_DQM<0> | IOB | OUTPUT | LVTTL | | 12 | FAST | OFF | | | | DRAM_DQM<1> | IOB | OUTPUT | LVTTL | | 12 | FAST | OFF | | | | DRAM_RAS_N | IOB | OUTPUT | LVTTL | | 12 | FAST | OFF | | | | DRAM_WE_N | IOB | OUTPUT | LVTTL | | 12 | FAST | OFF | | | As you can see here, the address lines have OFF in Reg(s) tab, meaning "Output Flip Flop". The Clock line is driven by a ODDR flip flop. The data lines have both OFF and IFF (Input Flip Flop). All other control lines have OFF. This ensures minimal delay from clock to pad, and to chip, and its very important to timing. You seem to have increased one of the timings, though. I wonder it is the same issue we are facing with newer SDRAM parts. Alvie
  2. alvieboy

    Hamster's SDRAM_Controller

    It may relate to different setup/hold values, and how FPGA routes stuff. Can you check that all your DATA/ADDRESS lines for the SDRAM have IO registers ? Alvie
  3. alvieboy

    sdram address size

    That's there to support larger devices in the future. Right now we tie that line to '0': DRAM_ADDR(12) <= '0'; Alvie
  4. alvieboy

    CODEC Wing

    It's fairly easy to use the SDRAM, once you understand the basics of how our controller works. You can use the controller separately, no need for ZPUino at all. Let me know if I can be of some assistance. We may eventually even come up with a decent how-to Alvie
  5. That's easy. "Design" tab, expand "Synthesize - XST" and choose "View RTL Schematic". Alternatively you can open the .ngr (RTL) or .ngc (Technology) file inside ISE, after synthesis. The RTL view shows you the design prior synthesizing the low-level elements (LUTs, Flip-Flops, so on). The technology shows you how they are mapped into LUTs and FF and so on. This is still prior to mapping, so things can change a bit in the process. Note that due to optimizations sometimes what you see may be a bit "mangled". In that case, enable "Keep Hierarchy" in Synthesis options (right-click on "Synthesize - XST", choose "Process properties"). Glad your problem is fixed now. Alvie
  6. Yes, VHDL is synchronous to the clock, and completely independent of what CPU does. No, all registers (if address is correct) shall at least ACK the transaction (although it may happen that read/writes do not read anything useful or have any side effects). Can you also share the code (.elf) generated ? It may happen that the IO is being directed to a wrong or invalid address.
  7. Tony, can you send me these files that are generated by the ISE build process: .ncd .ngd .syr .mrp (make sure you enable detailed map report, if possible -see options for Map generation) Zip all of them and send to "alvieboy@alvie.com". I'll try to see what is happening. The only "normal" lockout from the CPU point of view is when it tries to read/write to a IO location and ACK never comes in... Alvie
  8. alvieboy

    Working on Papilio Nano

    Now they show. Nice work Alvie
  9. alvieboy

    Working on Papilio Nano

    Same problem here with the images (and not using Tor). I'm very eager to get my hands on one of these. Actually, I do need something similar at work - I had to give up using FPGA due to lack of USB. Alvie
  10. alvieboy

    Working on Papilio Nano

    I think Jack thought about that SRAM usecase. Regarding USB: Our plan for USB is to have a "master bitfile" that, when invoked, presents a MTD device to the host for programming (drag-drop a bitfile). Works in all OS without any drivers. Plus a CDC serial port for debugging or serial programming. After the user bitfile starts, the USB PHY is completely available to the user to do whatever he wants (like a videocamera, for example). Or you can just power it down. Alvie
  11. alvieboy

    Working on Papilio Nano

    FTDI is expensive. USB does not work for you because there are some implementation issues (note that there's a PIC controlling the USB). Also, lack of serial support on USB is a killer (I spoke with Dave a few years ago about that, but I also had no time to implement the new endpoint). I have a few XuLa myself. I like them for some projects, due to the small size.
  12. alvieboy

    External Interrupts

    Currently we do not suport per-pin interrupts. The main reason for this is because one would normally not use the GPIO pins for this purpose, but rather design a custom VHDL controller. What exactly are you trying to implement ? Best, Alvie
  13. Congratulations to @EtchedPixels. ! Well deserved, my friend. http://www.swansea.ac.uk/graduation/honoraryawards/alancox/ (I know, a bit off-topic, but who cares ? ) Alvie
  14. I was updating my LLVM tree today (long time since I did it) to prepare for XThunderCore SmallISA, and I found a new CPU in there, called "Lanai". A quick search returned some info - this CPU seems to be in development by Google [1][2][3], and it's similar to a microcontroller but aimed at massive parallel computations. Did not have time to explore much - looks like a classical RISC to me ythough. You can get a glimpse of the instruction formats by looking at the LLVM implementation: https://github.com/llvm-mirror/llvm/blob/master/lib/Target/Lanai/LanaiInstrFormats.td Any of you ever heard of this, and if any soft-core implementation is available in the wild ? Magnus ? (I will update you guys regarding the XThunderCore SmallISA in a couple of weeks). Alvie [1] https://www.phoronix.com/scan.php?page=news_item&px=Google-Lanai-Architecture [2] http://www.theregister.co.uk/2016/02/09/google_processor/ [3] http://lists.llvm.org/pipermail/llvm-dev/2016-February/095118.html
  15. alvieboy

    Building ZPUino on Windows

    You will need a few other tools if you want to re-generate the bootloader. mingw+make, perl, ISE and zpu toolchain should be enough. Sorry for the inconvenience of being hard to build this in Windows - the platform is not designed for development from its ground up.
  16. alvieboy

    ZPUino HDL Source Code

    Yes, the .xise files may not have been updated. Let me see if I can prepare a bundle for you.
  17. alvieboy

    ZPUino HDL Source Code

    Can you post more information, please, such as: Which download link are you referring to ? Which files you think are missing from github? Best regards, Alvaro
  18. alvieboy

    GOWIN FPGA Board

    Ok, I think I fixed the last major bug in MTP transfer. I can now upload huge files (like 6MB) to Papilio [without storing the data, of course] with no transmission errors. Let me try building a standalone .bit file so people can experiment with it (and report bugs - surely many will pop up). The configuration is also more dynamic now. Example of a full USB + MPT setup: void setup() { Serial.begin(115200); SPIFlash.begin(); MTPUSBDevice.begin(0x1D50, // Vendor 0x4000, // Product "Gadget Factory", // USB Manufacturer "Papilio Pro USB", // USB Product, "2.0", // USB Serial number, "Gadget Factory", // MTP Manufacturer "Papilio Pro MTP device", // MTP Model "1.0", // MTP version "0123456789ABCDEF" // MTP Serial number ); mainStorage.setName("FPGA Firmware"); mainStorage.setUUID("af5449fe-cbda-452e-9bdc-588b1d5eb8da"); mainStorage.setCapacity( 8*1024*1024 ); // 8MB mainStorage.setFree( 8*1024*1024 ); // 8MB MTPUSBDevice.addStorage(&mainStorage); } You can have multiple storages. The main base class is abstract, so a storage can be anything you like - flash, virtual, memory, SD-card FAT, so on, so on. Alvie
  19. alvieboy

    GOWIN FPGA Board

    Never heard of copacabana (except for being a brasilian city), care to share some links ? Regarding the MTP (and SerialUSB)... much has been going on. Expect a much more mature library on next version, just fine-tuning some details. Alvie
  20. alvieboy

    USB controller / wing

    So, Back a while ago I ordered some USB wings to play with, with just an USB 1.1 transceiver (TUSB1106PWR). Easy to solder. Only supports 12Mbit though, but the advantage is you can fit everything on a 8-bit wing. Jack actually did a demo of the PCB as an example for the 3D brd Viewer a while ago (you can watch it here: ). Since the transceiver is not actually a PHY, I've used a PHY from Opencores [1], with only some small modifications so I could use 96MHz as clock instead of the usual 48/60MHz. This PHY presents a UTMI interface which allows me to switch to a hard PHY in the future with minimal modifications. I then needed a packet decoder of some sort. I used [2] also from Opencores, and translated it (the packet decoder only) to VHDL (original is Verilog). This helps decode the PID from USB packets and perform CRC checks. Still a lot to go though. I then wrote a packet engine, that understands all important USB transactions, implements endpoint buffers and endpoint configuration. This took me a while, and required me to understand almost all of USB1.1 (with exception of hub transfers). Learned a lot. This packet engine is tied to a wishbone interface that goes directly into a ZPUino slot, so it can be controlled. All upper layer (descriptors, data transfer, so on) are handed in software, as typical microcontrollers do. Right now it works! The device can be enumerated, in Windows and Linux, and things look promising for the next days: [1547151.706742] usb 2-1.5: new full-speed USB device number 74 using ehci-pci[1547151.801847] usb 2-1.5: New USB device found, idVendor=efbe, idProduct=adde[1547151.801853] usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3[1547151.801856] usb 2-1.5: Product: USB Wing[1547151.801859] usb 2-1.5: Manufacturer: Alvie[1547151.801861] usb 2-1.5: SerialNumber: Rev 1.0[1547151.802582] cdc_acm 2-1.5:1.0: ttyACM0: USB ACM deviceStill needs a proper PID/VID though Another test was to present it as a CDC device, so we could use it as a serial port. Things are looking great too in that area, should be fully working tomorrow after some software changes. Lots of interrupts going on. I'll keep you posted Alvie [1] http://opencores.org/project,usb11_phy_translation [2] http://opencores.org/project,usb1_funct
  21. alvieboy

    GOWIN FPGA Board

    Niiice!
  22. alvieboy

    Terrific product!

    Indeed, writing a SPI master/slave from scratch is a good exercise It's actually one of the easiest interfaces you can design (waay more simple than an UART, for example) You can eventually use ZPUino SPI for this, you just need to drive it using wishbone signals. Alvie
  23. alvieboy

    Terrific product!

    Larry, let me reply to you as a blog post, so others can understand what a SoC is and how it differs from "regular" microcontrollers. Will do shortly. Second, but most important, thanks for your words. You do seem enthusiastic about this new FPGA world - we try to encourage people to learn, understand and explore - this gives us strenght to keep on working and providing as much as we can so that you, ultimately, can have a even better understanding and knowledge that we do Not impossible, and definitely not improbable. With FPGAs, the clock speed is the limit Which is close to sky, actually. It's like either buying a car or designing the engine - guess which presents more fun. Even if the car cannot speed to 100mpg, it's still your engine, optimized for a lot of stuff (fuel and oil consumption, less emissions, temperature-variable compression or combustion, so on). Alvie
  24. alvieboy

    USB controller / wing

    Those can be problematic due to need of pullup/pulldowns, and 60MHz USB bus will definitely not like it. I understand there exist some DDR USB chips, that only use 4 data pins. Their availavility is low, however. Honestly, I'd prefer to share some signals with the WING_B pins for example. Eventually in such a way that official wings would still work.
  25. alvieboy

    USB controller / wing

    We can add a RC if needed, just to raise it slowly during startup if needed. My SDRAM controller does not at use CKE at all, but the pin may have been ground when the board powers up. I guess we can do some testing first.