FPGA project sanity check - Page 1
Forum section: electronics / general

author: Harvs
author_rank: Super Contributor
timestamp: October 09, 2013, 12:00:17 am
content: Have finished a project, I'm thinking about what to start next for a personal project.I was thinking about designing/building a DAQ board. The straight forward approach (for me) would probably be to use an STM32 M4F coupled with some external SRAM and a external hi-speed USB interface (FT232H) tied to the parallel memory interface. But I wouldn't be learning much as I've basically done it before.So it's been a long time since I've touched an FPGA and VHDL seriously, but I once knew VHDL reasonably well. I was thinking of making the DAQ board as a PCI card with some sort of DRAM on-board. It appears from my internet browsing that writing your own SDRAM controller and PCI controller is doable. And I'm assuming that 4-layers is enough to route single data rate DRAM? Since I've just used Seeed's 4-layer service and it was really very cheap for a decent sized board.But I haven't touched the digital side of a project like this in 10yrs, so are there any real show stoppers?There's no specific "requirements" as such.

author: tszaboo
author_rank: Super Contributor
timestamp: October 09, 2013, 06:01:12 pm
content: It entirely depends on the packages. I've seen DRAM on 4 layer. Very interesting project. Are you aiming at high frequency DAQ or high resolution?

author: Harvs
author_rank: Super Contributor
timestamp: October 09, 2013, 11:26:24 pm
content: Quote from: NANDBlog on October 09, 2013, 06:01:12 pmI've recently used some 6-channel (i.e. six parallel converters) 16 bit 250 ksps maxim ADCs that were awesome to work with. So I was thinking of using something like that, maybe 4 of them to have 24 channels.If at all possible I'll be sticking to non-bga packages. It certainly appears like it should be possible from other projects I've looked at.

author: tszaboo
author_rank: Super Contributor
timestamp: October 10, 2013, 05:13:17 pm
content: MAX1104x? I see it has paralel interface. Is it going to be isolated or high common mode voltage DAQ? This can be a deal breaker.

author: Harvs
author_rank: Super Contributor
timestamp: October 10, 2013, 11:57:25 pm
content: Yeah the MAX11045 was what I was using. However I got 4 of them at an excellent price for a one off job (farnell was getting rid of them @ $8.) Their regular price from digikey isn't that appealing, so I'd be looking at all options.To be honest that side of it I haven't given much thought yet. There's a few ways of doing it, probably the most straightforward being to break it into blocks of channels and have the banks isolated from each other. But it's fairly easy either way, just depends on how many digital isolators and isolated converters you want to add to the board.Another thought I had was to have external "pods" like a logic analyser, with a bank of channels in each pod.I guess at this point exactly what it'll do is less of a concern to me, as I'm pretty comfortable that I'll make something work pretty well at that end.So I've pulled out an old Spatan 3E dev board that's got some DDR1 RAM an it, and I'm going to see how I go writing a controller to get data in and out of that. If I can succeed there, then I reckon I'm in with a chance. Also after a bit of looking I've found Spatan 6 based PCI cards from Mesa electronics that are quite reasonably priced @ $89. Given that's probably about 2/3 the cost of a single 4-layer PCB spin, I'll probably get one of those to start writing my own PCI core before I make the first board. I find it hard going designing and laying out a board for a bus I've got no idea about.

author: Harvs
author_rank: Super Contributor
timestamp: October 14, 2013, 11:39:35 am
content: To get started, I've built a fairly ghetto PCI card out of a Lattice XO breakout board and an old PCI network card.The network card was stripped of parts using a hot air gun, and all the vias from side "A" were drilled out to 0.7mm. Then the FPGA board was stuck on using foam double sided tape. Kynar wire was used to link the required pins on the PCI card to the breakout board. Power from the USB has been removed and is now derived from the PCI bus.I started out using the basic example from:http://www.fpga4fun.com/PCI.htmlBut rewrote it in VHDL since that's what I know. Off the bat, that didn't work. A bit of investigation found the motherboard (i.e. PCI bridge) would perform an initialization sequence, then because the configuration space wasn't implemented in that example, it would shut off the clock to the card. Basically it didn't think there was anything plugged in.So I wrote the bare minimums of the Config address space, basically just making the card respond to the addresses for Vendor ID and Product ID. Then she fired up fine. With a few lines of C in Linux I can now turn the LEDs on the board on and off.And I thought RPi was an overkill to get a few LEDs blinking