Going to learn FPGA, seeking advice about choosing dev. board etc. - Page 1
Forum section: electronics / general

author: David_
author_rank: Contributor
timestamp: June 29, 2019, 04:37:36 pm
content: Hello.I have decided that I want to learn to program FPGA's(for some reason I feel drawn towards Verilog first, but it I don't mind going for VHDL ether) in order to be able to use such a circuit for some projects but I have some questions now that I am about to choose which development board I shall get.Right now I have my eye on these two from Digilent:Arty A7: Artix-7 FPGA Development Board for Makers and HobbyistsArty S7: Spartan-7 FPGA Board for Hobbyists and Makers1.First of all, when I learned to program XMEGA(Atmel ATXmega) microcontroller it sort of resulted in a situation in which if I was going to implement a microcontroller board I felt I had to go with a XMEGA since it's too much work and time to learn a new microcontroller, is that scenario applicable to FPGA or is it easier to write code for one FPGA and then using it on another FPGA, or is the written code as IC specific as it is when writing code for a certain microcontroller?2.There wouldn't really be any point in buying a FPGA dev. board if I then afterwards can't implement a FPGA in a smaller form factors for individual projects, such as a FPGA on a small PCB or a FPGA on a PCB that I design my self. Is this something I should consider when I choose which FPGA dev. board to learn with?As an example, Digilent is selling small PCB's featuring a Artix-7 FPGA but the don't offer any such board with a Spartan-7 FPGA(at least not yet), or are there in your opinion other FPGA board that you think is more suitable to choose with regards for how easy/hard it would be to then later implement a similar FPGA into a project?3.I don't know to which extent this is available but I do know that it is possible to ether find circuits written in HDL's for free online or you can buy them online, is that generic circuits which can be implemented on whichever FPGA I am using or is the availability for ready written circuits different for each FPGA family?I think I have more questions but they depend upon what I have already asked, I have started to study FPGA programming and feel confident I will be able to manage just fine but at the same time I have no clue about what I am heading into.Regards

author: 0culus
author_rank: Super Contributor
timestamp: June 29, 2019, 04:43:56 pm
content: I used the Arty-S7-50 (5 of them actually) for my research. Good boards, pretty large FPGA part gives you plenty of space to make big designs with soft processors and other large IP cores. Depending on what you want to do, however, you might want to pop for one of the higher end boards that are equipped with ethernet PHYs.

author: OwO
author_rank: Super Contributor
timestamp: June 29, 2019, 05:33:41 pm
content: FPGA design knowledge is universal. I started out with a DE1-SoC which has an Altera Cyclone V SoC, switched to Xilinx Spartan 6 later (using ISE), and now I'm mostly working with Zynq boards (using Vivado). I didn't feel any transition when switching tools or vendors. There are a lot of Verilog vs VHDL flamewars but as long as you are on SystemVerilog or VHDL it doesn't matter.

author: asmi
author_rank: Super Contributor
timestamp: June 29, 2019, 05:50:52 pm
content: I started with Arty-A7 35T, but quickly proceed to making my own boards because just about every devboard had just had a wrong or incomplete set of peripherals, and I wanted to eventually take my projects onto dedicated boards anyway as I just don't like the look of a bunch of devboards stuck together for a project.Building custom boards turned out to be not nearly as hard as I thought, though there were some painful lessons learnt in the beginning. But the result is totally worth it!

author: NorthGuy
author_rank: Super Contributor
timestamp: June 29, 2019, 06:47:26 pm
content: 1. Same as with microcontrollers. If you want to push the limits, it has to be vendor specific. Otherwise, easy to port between vendors. With MCU you have to do at least something vendor-specific. With FPGAs, you can easily avoid most of vendor-specific stuff.2. I think Digilent has CMOD S7 with Spartans. You can implement your own board, although there are lots of power rails and fanning out FPGA is sort of tedious. Of course, if you want to make more than few, your own PCB is probably the way to go. It is sure better if you use Dev board from the same vendor as your final board will be. Xilinx is the most capable relative to price (and most popular if that matters).3. Vendor usually supplies lots of IP (stands for Intellectual Property) which are modules designed for various tasks (such as Memory controller, Ethernet etc.). Some are free, some are very expensive. Some are vendor-specific, some not. You can use third-party IPs (source code as well). You can get lots of IPs on the screen and only connect them with your mouse, so you get your programming without writing a single line of code. I cannot go into details about this - never done that, prefer to write text.

author: David_
author_rank: Contributor
timestamp: June 29, 2019, 08:08:29 pm
content: Thank you for the answers, I feel as what have been said thus far shows that I might as well choose one of Arty A7 or Arty S7 and go with that and see where it leads. I'll just take a quick glance at the specs for those two and then flip a coin if nothing stands out in one of them.I don't think that I have any particularly large projects in mind but then again there is a paradigm shift in what is possible and practical using FPGA vs a processor. When I have gotten up and running with the basics I have a dual-channel lock-in amplifier to implement which shall measure complex impedance.One thing that I am somewhat puzzled about or just curious, why would one use a FPGA to implement a microcontroller?All I know is that there are at least one widely used microcontroller system implemented on FPGA's that is supplied by some vendor, I just realized that if I had a microcontroller implemented in an FPGA and a peripheral didn't function in exactly the way that I wanted it to I could probably re-write the code to get it to work how I wanted it to(assuming that I know how to do that).

author: David_
author_rank: Contributor
timestamp: June 29, 2019, 08:14:04 pm
content: I'll go with the Arty A7 in view of the Ethernet connector.

author: Fred27
author_rank: Unknown
timestamp: June 29, 2019, 08:42:12 pm
content: I went with Xilinx for getting started with FPGAs and I'm happy with that choice. If you do decide that you need microcontrollers later there's always the Zynq - one or two ARM cores alongside the same FPGA fabric.

author: james_s
author_rank: Super Contributor
timestamp: June 29, 2019, 08:48:33 pm
content: It depends on what you want to do. One of my favorite FPGA boards is still the Cyclone II mini boards you can get for around $12 from China. It's a rather ancient part but it has the advantages that it's very cheap and being a rather small FPGA designs compile really quickly. While the specs may not look impressive by modern standards, I have built entire 8 bit computers and recreated early arcade games with very few external parts.As someone else said, the knowledge is virtually universal, once you know Verilog or VHDL you can easily develop for any FPGA, porting a design from one device to another is trivial as long as you don't directly instantiate low level features.

author: asmi
author_rank: Super Contributor
timestamp: June 29, 2019, 09:24:03 pm
content: Quote from: james_s on June 29, 2019, 08:48:33 pmThis works as long as you don't require any sort of performance to speak of. Once you do, things change quite a bit - suddenly you find yourself reading up user guide on DSP tiles instead of news sites (because HDL's "*" operator only works if you provide it a bunch of registers, which adds latency and that is not acceptable in some scenarios), you also realize that BRAMs and DSP tiles are FAAAAR away from logic resources, and even pin arrangement is becoming a critical "make or break" problem. When I was working on LPDDR1 controller for Spartan-7, I had a lot of troubles closing the timing for my PHY core, even though it was working at a relatively "sedate" frequency of 200 MHz DDR.

author: james_s
author_rank: Super Contributor
timestamp: June 30, 2019, 02:04:50 am
content: Sure but once you're proficient enough to worry about that sort of optimization you'll have no problem perusing the datasheet and implementing it using whatever FPGA family you choose. The majority of the process is the same once you know the HDL. Even then you don't really have to directly instantiate primitives, the software all has wizards to create entities for all of the lower level features. I create a memory entity and specify the width, depth and other options. I don't directly instantiate the individual bram cells, I let the software sort that out.

author: asmi
author_rank: Super Contributor
timestamp: June 30, 2019, 03:17:00 am
content: Quote from: james_s on June 30, 2019, 02:04:50 amThis is what I thought too, but when you work with low frequencies you can get away even with zero timing constraints, and your designs will still work for the most part. However once the frequency went up beyond 100 MHz, I suddenly found myself in a very different world, where constraints become extremely important, and so is the way you write HDL code.I'm not saying your approach doesn't have any merits - I merely point out that it can lead to unexpected issues once the frequency gets high enough.Quote from: james_s on June 30, 2019, 02:04:50 amHere lies another trap which I alluded to in my previous post - BRAMs are physically FAAR away, so if you do what you said, there will be a lot of timing issues because BRAM's clock-to-out time is quite bad unless you utilize BRAM's output register, but latter adds one more cycle of latency. Thankfully Vivado's synthesis is smart enough to figure out all these things if you code it in "conventional" HDL without direct instantiation (you just register the memory's output before using it anywhere), but there are limits to what it can do in this regard. Classic example is certain advanced scenarios involving FIFOs like using almost_full/almost_empty flags, which all but require direct instantiation.

author: james_s
author_rank: Super Contributor
timestamp: June 30, 2019, 04:20:47 am
content: Quartus and ISE all do this as well, there are checkboxes in the wizards to select whether you want the outputs registered, and to set other parameters like single ported, dual ported, single clock, separate input and output register clocks, etc. As far as I can tell you can set any parameter that you can set by directly instantiating.My bigger point still stands, by the time any of this is important you will know what you're doing and be able to figure that out on your own. Personally I've never had a need to worry about it but I'm only using FPGAs for retro stuff, again it depends on what you want to do. The important thing is to learn one of the popular HDLs and start coding.

author: knapik
author_rank: Regular Contributor
timestamp: June 30, 2019, 12:55:37 pm
content: Check outhttps://www.crowdsupply.com/1bitsquared/icebreaker-fpgaorhttps://radiona.org/ulx3s/Try out using Migen / nMigen if possible, otherwise use verilog with yosys. Verilog is a horrendously bad language, but is supported by yosys, System Verilog is better but the FPGA vendors don't properly implement the language, so I don't see the point. Never tried VHDL and am not interested in doing so ever either.I've only tried out Microsemi and Altera FPGAs. Microsemi's software is the absolutely horrible and an enormous pain to try and get working, so I will never recommend using their FPGAs. Altera's Quartus isn't difficult to get running in Linux but its text editor sucks, but is usable.

author: NorthGuy
author_rank: Super Contributor
timestamp: June 30, 2019, 02:10:39 pm
content: Quote from: knapik on June 30, 2019, 12:55:37 pmIt's roughly the same price as CMOD S7:https://store.digilentinc.com/cmod-s7-breadboardable-spartan-7-fpga-module/It contains much bigger and better FPGA.

author: knapik
author_rank: Regular Contributor
timestamp: June 30, 2019, 02:16:40 pm
content: Quote from: NorthGuy on June 30, 2019, 02:10:39 pmNo denying that, but ice40 has the best support with the free FPGA toolchains (next would be ecp5) which is why I recommended those boards.

author: asmi
author_rank: Super Contributor
timestamp: June 30, 2019, 02:27:07 pm
content: Quote from: knapik on June 30, 2019, 02:16:40 pmice40 is a toy FPGA, while S7 is a real one - with BRAMs, DSPs, PLLs, SERDES, whole shebang.

author: OwO
author_rank: Super Contributor
timestamp: June 30, 2019, 02:36:56 pm
content: Quote from: asmi on June 30, 2019, 02:27:07 pmIce40 also has those things, just less/smaller. Most of the actual products I develop only need Spartan 6 level functionality (one or two multipliers, very little ram and not a lot of logic) and ice40 would suffice as well. OTOH the Zynq/Kintex-7 stuff I play with are just hobby stuff, or "toys" if you will.

author: asmi
author_rank: Super Contributor
timestamp: June 30, 2019, 03:17:58 pm
content: Quote from: OwO on June 30, 2019, 02:36:56 pmThe fact that it's enough for you doesn't mean it's enough for everyone. For me even A50 is not enough, I need to upsize into A100/200 or Kintex.

author: rstofer
author_rank: Super Contributor
timestamp: July 01, 2019, 03:57:10 pm
content: In the Artix 7 board arena, there are 3 common chips: XC7A35T, XC7A50T and XC7A100T. I imagine there are other chips available but these seem common. Clearly, given an option, get the 100T. Bigger is ALWAYS better (unless you worry about power).https://www.xilinx.com/products/silicon-devices/fpga/artix-7.html#productTableI see two paths to board selection (and, yes, there are others): First, buy a CMOD kind of board with NO peripherals and create a daughter card to provide all of the interface. This results in a maximum number of pins and all of the power distribution and noise filtering is already done. Second, and the one I choose, is to buy a board with as many gadgets as possible. I like lots of LEDs, 7 segment displays, buttons, switches and any other user interface I can get. It simply makes debugging easier. For CPUs, I can implement a single-step clock (single state or single instruction) and even implement break conditions on a program counter value. Run flat out until in the region and then kick over to single stepping. This is most useful when running code that is known to work on hardware that is not. Subtle side issues during instruction execution...So, I like the Digilent Nexys 4 DDR board now known as the Nexys A7 board. LOTS of switches and lights... Expensive...https://store.digilentinc.com/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum/I also have a couple of Artix A7 boards of the 100T variety:https://store.digilentinc.com/arty-a7-artix-7-fpga-development-board-for-makers-and-hobbyists/These are nice boards even though they lack any realistic amount of direct user interface.

author: SiliconWizard
author_rank: Super Contributor
timestamp: July 01, 2019, 07:59:25 pm
content: Quote from: rstofer on July 01, 2019, 03:57:10 pmI do not agree with this in general, but to each his own!Beyond power draw, that may not be a concern, my points are the following:* For a beginner, it may give a false idea of what you can do with an FPGA. a XC7A100T is already a huge FPGA (at least for me). Learning on that may give you very bad habits and give you a false idea of what you can reasonably fit on a moderately-sized FPGA.* I haven't used Vivado yet, but with most FPGA tools, the run time of the compile/synthesis/PAR cycle is much longer, even on moderate designs, on bigger FPGAs. As a beginner, it would drive me off to have to wait ages every time I was testing something simple.Just my opinion of course.

author: james_s
author_rank: Super Contributor
timestamp: July 01, 2019, 08:43:04 pm
content: I have some quite large FPGAs, some medium sized and some very small. In practice I find I use the very small ones the most and the very large ones the least. With a large FPGA even a small design takes far longer to compile than it does on a small FPGA. We're talking 10x difference in some cases. In several years of doing this stuff have never found a need for anything large, in fact I've considered selling my high end dev boards because I never use them, their capabilities are wasted.

author: NorthGuy
author_rank: Super Contributor
timestamp: July 01, 2019, 08:46:16 pm
content: Quote from: SiliconWizard on July 01, 2019, 07:59:25 pmIt depends on what you're doing.If you start stitching complex IPs, you may need lots of resources.If you want to study Verilog (or VHDL), or the FPGA structure, then even XC7A15T is quite sufficient.

author: rstofer
author_rank: Super Contributor
timestamp: July 01, 2019, 10:08:33 pm
content: Another reason to buy the larger chips is the amount of BlockRAM. It is pretty natural to want to build a CPU as a second project (the first one blinks an LED) and 64k of 16bit RAM is pretty handy. Then there is the need for code translation tables. ASCII to Hollerith, Rotate-Tilt code to ASCII, ASCII to Keyboard and Printer to ASCII. Add in a coldstart ROM to boot off of disk and suddenly a lot of BlockRAM is being used. That doesn't even count the 80x25 text display with color and character attributes. And I might want to hang a few FIFOs on those ASCII streams. Worst case, microcode the CPU and use even more BlockRAM for storing the microcode.I like working with a dumpster full of logic. I don't have to worry so much about optimization, I let the toolchain do the worrying. My time is better spent getting the darn thing to work.QuoteTrue, I do absolutely no commercial work. I don't care much about component cost and I AM the purchasing department. I don't have to justify any design decisions.And don't forget 'feature creep'...

author: james_s
author_rank: Super Contributor
timestamp: July 01, 2019, 10:17:29 pm
content: FPGAs typically have far less block RAM than would be ideal, almost always my designs end up being memory constrained, if I use a big enough FPGA to have adequate memory then I have an ocean of logic fabric just sitting there. Most of the time I attach external SRAM or ROM.

author: asmi
author_rank: Super Contributor
timestamp: July 01, 2019, 11:31:48 pm
content: Quote from: james_s on July 01, 2019, 10:17:29 pmSRAM that works as fast as BRAM would cost a fortune (if it even exists, not sure), not to mention you can't initialize it automatically with bitstream, but if you need a lot of BRAMs that you definitely need to look at 7 series FPGA, because they have very large BRAM-to-logic ratio. Smallish Artix-7 35T have 50 BRAMs 36kb each (each one can be split in half to get two 18kb), Spartan-7 50T has 75 of them, and A100 has 135 BRAMs (that's almost 5Mbit of on-chip memory!). That's a lot of memory, and it's very fast (about 400 MHz in speed grade 1).

author: Canis Dirus Leidy
author_rank: Regular Contributor
timestamp: July 02, 2019, 08:47:18 am
content: Quote from: NorthGuy on June 30, 2019, 02:10:39 pmMeanwhile in China:XC7A100T board for $50 (without shipping).P.S.They also have variants (with peripheral boardorjust core boardwith FPGA and RAM) with DDR3, but there, according to reviews, the FPGA (XC7A35) is too small for such configuration: the memory controller took 40% of the chip.

author: james_s
author_rank: Super Contributor
timestamp: July 02, 2019, 06:22:52 pm
content: Quote from: asmi on July 01, 2019, 11:31:48 pmBut I don't need it to be fast, low end FPGAs are already an order of magnitude or more faster than I need them to be, bog standard SRAM and flash EEPROM ICs are plenty fast for what I'm doing. I use FPGAs to recreate retro hardware from the 70s and 80s, that's pretty much the only thing I've ever been interested in doing with them. The BRAM is used as ROM and RAM in these designs and often I need an external memory device to accommodate at least one of these. I've noticed often that professional FPGA developers who do it for a living seem to have a really difficult time comprehending that not everyone is doing really high end cutting edge stuff needing maximum performance. There is a large community of retro hobbyists working with <10 MHz systems that were originally built around 7400 logic and 8 bit CPUs. FPGAs are not really intended for this application, so I understand why things are they way they are.

author: rstofer
author_rank: Super Contributor
timestamp: July 03, 2019, 02:18:33 pm
content: Retro arcade is why I got started in this arena. I wanted PacMan!I started out with a Spartan 2 and the T80 core. Along the way I got sidetracked into running CP/M on the core at either 2 or 6 MHz - similar to an 8080 or Z80 respectively. This was a simple project given that the T80 core did all the work. All I did was hang a Compact Flash on the IO pins and write some BIOS code.Literally, my first project was to blink an LED and my second project was to bring up CP/M.CP/M on an FPGA was an interesting project. Soon after I built a more credible PacMan on a Nexys board and I still have it. We don't have room for the cocktail table and I already have a MAME cabinet so the project lies dormant.It occurred to me that I could build an emulation of the IBM1130, the first machine I used, and since the software was readily available, it was off to the races. I decided that some amount of speed was a good thing so instead of running at 400 kHz like the original machine, I would run at a fairly lazy 50 MHz. That machine has been running for about 10 years. It's still a treat to create usable plots on a LaserJet that mimic what I would have gotten on the drum plotter at the time (1970). And Fortran rules!http://ibm1130.org/Now I'm thinking about a new hardware setup using microcode rather than a very large state machine. I'm wondering if I can hit 200 MHz on an Artix 7. That would make the old 27 pass Fortran compiler sing!I also see a use for very small cores (maybe like the LC3, maybe smaller) that can be dropped into an FPGA project to handle certain peripherals. Sometimes it is just easier to use a small core than it is to use logic. Bonus points if the core has a C compiler - like LC3. Speed wouldn't always be an issue but somewhere around 100 MHz seems right. It could certainly run slower if the peripheral didn't have any particular need for speed. Clearly, DMA with the main block of memory would be helpful here!Note that BlockRAM would also be used to store the executable code. These wouldn't necessarily be large chunks of RAM but they would be distinct and using off-chip SRAM would be problematic if there was competition from other cores.Anyway, nobody ever commented that "Gee, that chip I used has too much BlockRAM!".

author: james_s
author_rank: Super Contributor
timestamp: July 04, 2019, 02:05:59 am
content: PacMan is one of my typical "Hello World" projects that I port to a new hardware platform. I've got it running on a cheap Cyclone IV with a 3" TFT display, one of these days I'll get around to building a tiny desktop cabinet for it.Galaxian is even more compact, with an external ROM it will fit on a $13 Cyclone II board. So will Asteroids, Asteroids Deluxe and Lunar Lander, I designed a DAC board that plugs into one of these boards and drives a real vector monitor then built a 5" B&W vector monitor using a TV tube with a rewound vertical yoke. Another project that needs a mini cabinet eventually.

author: NorthGuy
author_rank: Super Contributor
timestamp: July 04, 2019, 02:39:44 am
content: Quote from: james_s on July 04, 2019, 02:05:59 amI wonder the kids who are growing up now. Will they ever be able to re-create games from their childhood.

author: rstofer
author_rank: Super Contributor
timestamp: July 04, 2019, 01:43:30 pm
content: Quote from: NorthGuy on July 04, 2019, 02:39:44 amThe games of their childhood are vastly more involved than ours. All of theirs require a PC and most take advantage of high order video cards. Theirs are all code, ours were about 50% hardware.But, yes, they can recreate them if they wish. The Unreal Engine is readily available as are many other tools. The problem is, it probably takes hundreds of man years to create the levels. I'm not certain that a single individual can create enough entities and write enough code to build anything like a modern game.

author: james_s
author_rank: Super Contributor
timestamp: July 04, 2019, 04:10:04 pm
content: I assumed he was referring to mobile apps which all the kids are playing these days. It has occurred to me that most of those will just die. They get abandoned and then they are removed from the app stores and then they are just gone. You never really own them and in most cases you don't have the executable file in usable form. A lot of apps will just be lost forever once they are deprecated.Recreating old arcade games is a whole different type of project. You're recreating the hardware, or porting someone else's recreation of the hardware, which then runs the original code.

author: rstofer
author_rank: Super Contributor
timestamp: July 04, 2019, 04:34:15 pm
content: I was thinking about PC based games and I'll concede that cell phone games are even more fleeting. I have never played a game on a cell phone. Truth be known, I don't play PacMan all that often (or well) either. I just admire the hardware/software. I want to build it, not play it.Many of the best PC games are available on Steam.Back around '74, I wanted to play Pong and I had gotten the schematics to a commercial version. So I sat down with a lot of 74xxx and wirewrapped the beast. It took a LONG time to build but I eventually owned Pong. A couple of years later I could buy the game from National Semi in a 40 pin chip. Along with a couple of other games IIRC...Those were great days! I hit grad school just about the time the Altair became available and our engineering seminar class revolved around discussing all the new microprocessors. There were quite a few back around '76.The only part of undergrad I ever cared about was digital. The math for analog was just too ugly and the tools were limited to slide rules and paper/pencil. Sure, some guys had access to simulators (and I was one of them) but that wasn't how you took the tests.I guess the point is that if you were born in a certain era and grew up in the coming of digital, things were a lot of fun! There are still opportunities to get deeply involved and FPGAs is one of them. But I wonder if time hasn't just moved on.

author: james_s
author_rank: Super Contributor
timestamp: July 04, 2019, 07:28:12 pm
content: I'm not a mobile gamer either, I tried a few games on mine back when I first got a smartphone but the novelty soon wore off, it's just not my thing. I bus to work though and all around me everyone is glued to their phone, about half of them are playing games. My friends kids all sit around playing games on their phones, mobile gaming is absolutely *huge*, it dwarfs PC gaming these days. Again not something I'm into at all, but I'm curious to see what happens when the smartphone generation gets old and nostalgic. I can fire up Dosbox, hit the abandonware sites and play the PC games I was playing 30 years ago and they're just the way I remember. I'm not convinced the same will happen with what will inevitably be seen in hindsight as the golden age of mobile gaming.I just missed the Pong era and I often think it would have been an exciting time to be involved. I was too young to really enjoy the golden age arcade games when they were current but those are the ones that grabbed me later and I still collect and play them. When I set out to implement an old arcade game in VHDL on my own rather than just porting existing releases I chose the bronze age Atari game Super Breakout because it was very simple hardware and most importantly it also had a complete and legible schematic. From there I did about a half dozen other early Atari games that share a good bit of common architecture. Learned a lot (of largely useless esoteric knowledge) and have really come to appreciate the bronze age games, most of the concepts that later went on to be staples of video game mechanics first appeared in those.

author: rstofer
author_rank: Super Contributor
timestamp: July 04, 2019, 08:30:53 pm
content: Quote from: james_s on July 04, 2019, 07:28:12 pmFor giggles, I bought the PiDP11 kit and it runs several different PDP11 operating systems. One of them, 2.11BSD includes Zork, one of the best known text based games (Dungeons and Dragons is another). There are about 44 other text based games in the distro. I understand there are even more, and better, games on one of the DEC OSes that I have never tried. If you can imagine all the software ever written for the PDP11, that's what the project entails. They have grabbed every archive in existence.I wasn't involved in the PDP11 generation, I had moved on to mainframes (building facilities for...) and was more involved with the IBM 1130, Altair and such. I was in the wrong place to have enjoyed these machines. I'm working on it.The 2.11BSD release is VERY similar to the very well documented 4.3BSD release upon which FreeBSD, OpenBSD and some others are based. It's kind of cool to open up a Telnet session and play with F77 and Macro-11 (f77 and m11).These were the days when the VTxxx terminals ruled!There is a fellow on the Google PiDP11 group that has an FPGA implementation that he is trying to stuff into the PiDP11 console. I have a second kit coming and I'm thinking about stuffing my IBM 1130 into the box in order to get a nice set of switches and displays. Or, I leave 2.1BSD running as a 'production' machine and use the second to experiment with the other OSs.

author: james_s
author_rank: Super Contributor
timestamp: July 05, 2019, 11:14:52 pm
content: Hey that PiDP11 is pretty neat, I definitely missed that era although I have had the opportunity to play with some big iron at the Living Computer Museum in Seattle, it's a nifty place.I have Zork on several platforms, including the FPGA Z80 CP/M system which is my build of Grant Searle's "Multicomp" project. I am absolutely terrible at those text based adventure games though, they're fun for a little while but after about a half hour it gets frustrating unless I cheat and look at a walkthrough which is also not that much fun. It's more fun to get the system working than it is to play the game.

author: rstofer
author_rank: Super Contributor
timestamp: July 06, 2019, 01:29:47 am
content: The Apple II had a text based game whose name I have forgotten. I got stuck so I did a dump of the program file and searched for strings and such. Sure, it's cheating but I never did much game playing anyway. I probably spent more time on the IBM1130 version of 3D Tic-Tac-Toe as any game. A simple game that can be beaten in 7 moves or it won't be beaten at all. Do you think I wrote them down? Nope...And, yes, I'm having fun with the PiDP11 and 2.1BSD Unix. So much so that I am converting one of my old laptops to OpenBSD. Just for giggles...

author: Sal Ammoniac
author_rank: Super Contributor
timestamp: July 10, 2019, 04:58:48 pm
content: Others have answered your questions, so I'm just going to offer some philosophical comments.You mentioned in your original post that you know how to program microcontrollers. That's a good thing, but it's also somewhat of a minefield for someone just getting started with FPGAs. There's a strong (and very understandable) tendency to attempt to "program" an FPGA as if it were a microprocessor. This is the wrong approach and will lead to poor results and much frustration. You need to remember that with FPGAs you are not programming, you are describing hardware. There's nothing in an FPGA executing a sequential sequence of instructions like with a microprocessor. Everything happens essentially in parallel at the same time. This can take some getting used to for someone experienced with programming microprocessors and microcontrollers. I recommend reading several books on RTL design with Verilog and/or VHDL. At the same time, study well-written HDL (there's plenty available on the 'net, but there's also a lot of crap too, so be careful).

author: legacy
author_rank: Super Contributor
timestamp: July 11, 2019, 10:10:00 am
content: Books:fpga Prototyping By Vhdl Examples Xilinx Spartan3 - Pong P. Chu Cleveland State Universityfpga Prototyping By Verilog Examples Xilinx Spartan3 - Pong P. Chu Cleveland State UniversityThese two are great!

author: edigi
author_rank: Regular Contributor
timestamp: July 11, 2019, 10:55:10 am
content: While I'm definitely not a very experienced person in FPGA or HDL and even most of my experience comes from CPLDs not FPGAs (but I do have some hands on experience with both) maybe I'm still able to give some tips and hints.As for foreword: Try to use always the simplest tool that does the job. If it can be done with a MCU stick to it. However if you need to have fast reaction time you need CPLD/FPGA, if you need it for many IOs probably you can't avoid FPGA.Due to their simplicity CPLDs usually have only very limited number of IPs (and even that is available only in the bigger ones). FPGAs have a lot (so with size it's not just the number of the available logic cells is the difference). When you start to check them (IPs) you start to grasp their complexity.So what the heck is IP? Take my approximation for now: Ready made building constructs (HW or logic) that the FPGA vendor makes available for you so you don't need to build everything from bits (pardon flip-flops), basic logic and wires. Think about e.g. FFT or memory controller etc. Another possible (not necessarily good) approximation a super-set of run time libraries in C.Don't worry too much about the actual HDL. The difference between what is used for MCU programming (typically C or C++) and any HDL variant is far bigger than the difference between any HDL variant. No matter if you focus only on VHDL or verilog you have to be able to read the other at least. With MCU you write sequential logic. With HDL you design HW (wire logic). (Sequential execution logic is actually a pain as you need states for that.) So if you have to switch the time spent on the other HDL language is still a huge advantage.After a lengthy introduction my tips based on looking back with what I should have started.The book "Free Range VHDL" comes as first. It's a free download, nevertheless this is the book that I've enjoyed most. It won't give you a lexicographical introduction of the language (which you can find in countless places anyway) but far most important you'll grasp the idea.http://freerangefactory.org/pdf/df344hdh4h8kjfh3500ft2/free_range_vhdl.pdfIf you're not familiar with various flip-flops or other digital logic or you don't know what's the difference between a flip-flop and a latch it's recommended that at least you make a quick check of them in YouTube or elsewhere.Now comes the hard part: What kind of dev. board to start with? I have some mini boards and bigger ones with many other components as well. Is the LED blinking type of mini board redundant then? Not really. They can be used to develop logic for CPLDs as well since CPLDs have more constraints and also some of them can be rewritten only 1000 times, others just 100.(Mini boards also come with enough documentation that help you to set up your environment and get the idea before you invest too much.)(A side note: Notice that even blinking LED using HW configurable logic costs a magnitude more than doing the same with MCU. You have to get used to this.)First you have to think about what you'll probably need. The dev. boards can have extra memory, fast or gigabit Ethernet, USB chips, some kind of display/LCD driving HW, audio HW or fast ADCs/DACs you name it. Working with all of them can be an immense task not to talk about the cost.To make a more educated decision check e.g. the "Introducing the Spartan 3E FPGA and VHDL" that goes hand in hand with my other tip. You'll notice that the description is not related to an up-to-date board but nevertheless it should be still good enough for grasping what kind of choices you can have and how comes IPs into the picture. (What I particularly don't like though that still too many board are floating with VGA and too few with more up-to-date video interface...)https://github.com/hamsternz/IntroToSpartanFPGABook/blob/master/IntroToSpartanFPGABook.pdf?raw=trueWhen you're through of these probably you won't have any issue continuing with any other book or board.

author: OwO
author_rank: Super Contributor
timestamp: July 11, 2019, 02:16:05 pm
content: The OP has probably already settled on the dev board, but for anyone else reading this I'll say absolutely get a SoC FPGA board rather than just plain FPGA. It's far more fun to be able to design peripherals and talk to it from the software side running a real operating system. I've done e.g. framebuffer video output from X and audio output this way. The other important point is that you can access far more memory bandwidth through the AXI bus without worrying about memory controllers. I can get ~2.5GB/s actual memory throughput on a Zynq 7010 which you won't be able to do with an old SDRAM chip that most dev boards seem to come with.

author: Sal Ammoniac
author_rank: Super Contributor
timestamp: July 11, 2019, 04:53:24 pm
content: Quote from: OwO on July 11, 2019, 02:16:05 pmI think it's better to start with a plain FPGA rather than an SOC (FPGA + hard processor). SOC's are generally more complex (especially for a beginner), and a beginner should concentrate on the basics rather than get embroiled in complex stuff like AXI buses, DRAM interfaces, etc.Start with a straight FPGA board, like the Digilent Arty, Terasic DE0-CV, first. Learn how to blink LEDs, interface to PS/2 keyboards and VGA monitors, write FSMs, etc., before moving to the more complex stuff.

author: Bassman59
author_rank: Super Contributor
timestamp: July 11, 2019, 05:09:11 pm
content: Quote from: OwO on July 11, 2019, 02:16:05 pmAn SoC is alsowaymore complicated that a "plain" FPGA. The newbie will get completely lost in the tools. Talking about doing a video framebuffer with audio is very advanced. Let the guy blink some LEDs first!

author: Fred27
author_rank: Unknown
timestamp: July 11, 2019, 05:25:40 pm
content: I'd agree. I decided to commit to Xilinx for my dive into programmable logic. I've got some Coolrunner CPLDs, an Arty S7 (Spartan 7) and a couple of Zynq boards. The Zynq is certainly awesome, but it's not easy. There's nothing wrong with starting on the smaller stuff.

author: asmi
author_rank: Super Contributor
timestamp: July 11, 2019, 05:31:22 pm
content: Quote from: Bassman59 on July 11, 2019, 05:09:11 pmThis is not to mention that making your own Zynq-based board is much harder (and more expensive!) than a board for a "regular" FPGA.

author: blacksheeplogic
author_rank: Frequent Contributor
timestamp: July 11, 2019, 09:46:01 pm
content: OwO, I also think a $99 SOC FPGA board is a far better development board option but been shot down before for giving an opinion opposed to the generally population of this 'community'...The advantages of the SOC FPGA development board is that you have a single development board that can be used to prototype just from the FPGA perspective, or just from the Microprocessor perspective, or develop a project using both sides. The tools are no more complicated of difficult until you start combining and you have a long term flexible development board.Chose the target platform once the solution is known.Quote from: OwO on July 11, 2019, 02:16:05 pm

author: james_s
author_rank: Super Contributor
timestamp: July 11, 2019, 10:24:53 pm
content: I have a SOC FPGA dev board (DE10) and the only thing I ever use it for is MISTer for retro platforms, for my own projects the SOC is useless and just adds another layer of complexity and limitations in that some peripherals are hardwired to the SOC. My smallest, simplest boards with the oldest FPGAs are the ones I use the most. The bigger boards just take longer to compile for, often several times longer, and if anyone wants to duplicate my projects the cost of entry is that much higher. If I want to build a few of something I can toss a $13-$20 board in there no problem, but using a $100+ board would multiply the cost dramatically.As I've said many times before though, it depends what you want to do. There is no one size fits all.

author: legacy
author_rank: Super Contributor
timestamp: July 12, 2019, 10:25:04 am
content: What to look for?hereit is a list of fpga boards.

author: edigi
author_rank: Regular Contributor
timestamp: July 13, 2019, 08:57:38 am
content: Another things that worth mentioning although I've forgot to mention in my earlier post (especially if FPGA is used hobby projects) is tooling.There are so many quirks related to this and this is what even professionals (who use FPGA as part of their daily job) could easily forget since they just have them and potentially focus on a particular vendor only.First thing is the programmer. Although I use FPGA/MCU only from a very limited number of vendors I have 4 (four) programmers on my desk (only 1 of them is for convenience).While I don't exactly see the roots of this, it has probably something to do with loosely defined JTAG standard and that each vendor is more than happy to come up with its own variant (maybe even forced due to patent issues)While USB Blaster from Altera (pardon Intel) is cheap (like ST-Link from STM) Xilinx variant is not so and if you'd like to have one that covers more than one (e.g. Altera/Xilinx/Lattice exists) it will be close to the price of a simple dev. board.Next quirk.The tools have free versions (webpack, web edition whatever) but those are naturally limited to smaller devices. So if want to stick to the free version of the tool you have to pay attention that what devices it supports.Not only that, older devices are supported only by the older version of the tool, newer version is naturally supported by only the newer version. Thus one ends up typically with multiple versions of the tools from the same vendor.I had a dream that I'm always getting closer and closer but never realized so far. A single OS that can support all tools that I most frequently use (note: not all that I use. I didn't mean tools I've used/tried to use at some point of time e.g. I consider 2 PCB planning tool as used although I have a bunch of them installed).This is despite that I'm not a fanboy (or expert) of any OS and in fact I have dual boot Windows 10 and Linux (recent version of Fedora/64 bit) on my PC. I'm also open to use Wine (of Linux) if that helps.So Vivado install was flawless on Linux (it's just unfortunate that I don't use it so much). Xilinx ISE was a pain (and I didn't like it on Windows either; but you need it for older but still used devices like Coolrunner-II). I had to read a lot of forums and I could not tell at the end how finally I did it, especially the programmer part.Quartus was in between. After installing a few extra libraries (libnsl and libpng12) and manually creating the starter icon (with alacart) I thought I've reached the finish line. Not really.So while using Quartus I've noticed that it's painfully slow (considering that I have a relatively modern PC: Core I7, plenty of RAM and NVMe SSD) and quickly found the reason, message from Quartus (15.0.0 Build 145; maybe I should go back to an older version that I had an issue installing): Warning (20028): Parallel compilation is not licensed and has been disabledThank you very much for the starter experience, maybe I'll consider it when choosing my next CPU(no, actually for electronics a decent PC is needed).But really, beginners use the compiler more heavily as part of the learning curve. Let's punish those who are not learning fast enough.(Using Windows 10/12.1 Build 177 but still web edition: Info (11104): Parallel Compilation has detected 8 hyper-threaded processors. However, the extra hyper-threaded processors will not be used by default. Parallel Compilation will use 4 of the 4 physical processors detected instead.That's probably reasonable, I guess the hyper-threading brings little advantage. Intel thus recommends MS, in particular for multi core usage.)I stop grumbling now. The above is just a glimpse of the potential/possible issues without going too much vendor specific details.Going to this direction requires lots of decisions and it's hard to avoid making errors (a lots of them) even when trying to make educated decisions. What matters though how quickly you can recover and continue.So just pick a cheap one (I've used ebay) and it will help you picking a more appropriate one next time especially if you start to develop GAS as it happens or happened some time quite many of us.

author: iMo
author_rank: Super Contributor
timestamp: July 13, 2019, 10:42:19 am
content: The OP has decided for an Artix-7 board - that is a good decision, even not the cheapest one (when starting with FPGA/verilog).A good starting exercise would be to play with a ready-to-run solution, like PDP-11 which fits into 7-35, and the complete project is available, afaik. Or something similar. You will learn a lot.I did in past with Spartan6 ($30 board+$20 jtag programmer) and Microblaze and PDP-8.The messing with Microblaze was much harder, btw, as there is a lot of info spread over the web you need to understand in order to succeed (C SDK in ISE14.7).Hopefully Vivado does it better

author: rstofer
author_rank: Super Contributor
timestamp: July 13, 2019, 11:04:18 pm
content: All of the new Digilent boards have built-in programmers and present as a USB port. I don't know how they work and I don't care. I just use Digilent's Adept software and the deed is done. In most cases, the Digilent USB solution works with the Xilnix Vivado ILA (Internal Logic Analyzer).That Artix 7 board has a built-in programmer so no issues.First the OP needs to get an LED to blink. Then he can look around for projects. First the LED, next a CPU (LC3 comes to mind).It will be a while before converting the state diagrams in the LC3 project to logic states in a Finite State Machine will begin to make sense. It just takes time.So much to learn and so little time...

author: asmi
author_rank: Super Contributor
timestamp: July 14, 2019, 02:19:15 am
content: I useDigilent JTAG-HS3 Programming Cableto program Xilinx FPGAs on my custom boards. Works just fine, including JTAG-to-COM port and HW debugger via VIO/ILA.

author: Sal Ammoniac
author_rank: Super Contributor
timestamp: July 14, 2019, 03:53:15 am
content: Quote from: edigi on July 13, 2019, 08:57:38 amWelcome to the world of FPGAs. All of the development tools (Quartus, ISE, Vivado, etc.) are slow compared to microcontroller development tools. Just get used to it.

author: rstofer
author_rank: Super Contributor
timestamp: July 14, 2019, 03:12:59 pm
content: And buy the baddest PC you can afford and make sure to select 8 threads in Vivado. I built up an I7-7700K based machine with 32 GB of very fast RAM specifically to run Vivado. ISE was always pretty grim but Vivado completely redefined the term. Trust me, that old Pentium 4 just won't cut it!An 8 core Xeon would be nice. Out of my hobby price range, but nice. If I did this stuff for money, I would be upgrading to the fastest 8 cores on the market. And the process would still be pretty grim.If you have a cooling system that modulates the fans according to compute load, expect them to be pegged during the build cycle.

author: SiliconWizard
author_rank: Super Contributor
timestamp: July 14, 2019, 03:18:24 pm
content: Quote from: asmi on July 14, 2019, 02:19:15 amI've used Digilent HS2 for this a lot, and Digilent Adept, but I've now switched to a custom JTAG programmer (FTDI-based) and OpenOCD. I can not only program the internal configuration temporarily but also program an external SPI Flash using this:https://github.com/quartiq/bscan_spi_bitstreams(nice project!)

author: asmi
author_rank: Super Contributor
timestamp: July 14, 2019, 07:38:43 pm
content: Quote from: SiliconWizard on July 14, 2019, 03:18:24 pmI program FPGA's boot QSPI using indirect method from inside Vivado. I also have FTDI's MPSSE cable that I used to use for programming stand-alone SPI flash, but now I mostly use 1.8 V QSPI Flash for FPGA bitstreams while the cable can only do 3.3 V. HS3 cable can program 1.8 V flash via indirect method just fine because it has Vref pin which determines the voltage level to use. Most peripheral devices I use support 1.8 V logic level, which saves power and improves signal integrity compared to 3.3 V. On my latest FPGA board I use 3.3 V mostly for LEDs as 1.8 V is not enough to light them up. The odd one here is HDMI, which uses 3.3 V signalling.

author: SiliconWizard
author_rank: Super Contributor
timestamp: July 14, 2019, 08:07:33 pm
content: I see. My JTAG adapter is not just a plain FTDI MPSSE cable, it has a comfy 0.9V-4.5V voltage range through level shifters.

author: rstofer
author_rank: Super Contributor
timestamp: July 14, 2019, 10:13:01 pm
content: On several occasions, I have mentioned that the Digilent Nexys4-DDR board (since renamed) is my favorite board. I trashed my main desktop yesterday so I had to recover a lot of stuff including Win 10 and Vivado. It had been a while since I worked with the board and I had forgotten how easy it was to program. Vivado knows how to program it and all I need to do is connect the USB cable. The very same cable that provides power for the board and a serial port for the project. This board is seriously easy to use - even if it is fairly expensive.It is now known as the Nexys A7:https://store.digilentinc.com/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum/Just plug the board into the PC and everything happens by magic. I like magic! And I like a lot of gadgets on the board. 7 segment displays, LEDs, buttons, switches, lots of interface ports and so on.

author: technix
author_rank: Super Contributor
timestamp: July 26, 2019, 01:18:40 pm
content: So far I find the Myir Z-turn 7020 board a good value option for a FPGA starter board. It is, first off, a Zynq, so you get a lot of built-in hard IP cores, up to and include a full blown dual core ARM CPU complex. It is also on the smaller end for the physical size for the boards being just slightly larger than a Raspberry Pi and about the same size as Cubieboard. It is also a cost effective option having about the same resources as DE1-SoC but costs half as much.

author: technix
author_rank: Super Contributor
timestamp: July 26, 2019, 01:21:23 pm
content: Quote from: rstofer on July 14, 2019, 03:12:59 pmCan Vivado use more cores than 8? I have a dual octa-core workstation with 16 physical cores and 32 threads across two physical chips. (I have 128GB of DDR3-1600 SDRAM on octa-channel mode and PCIe 3.0 x4 NVMe SSD to keep them fed, as it is already optimized for parallelized software compiles.)

author: rstofer
author_rank: Super Contributor
timestamp: August 04, 2019, 03:05:37 am
content: The WebPack (free) version will only use 8 threads. I have no idea what the full version will do.