SD Card UHS-I controller IP, how much? - Page 1
Forum section: electronics / general

author: Boscoe
author_rank: Frequent Contributor
timestamp: October 18, 2016, 08:41:41 pm
content: I want to make my own digital camera at the moment. Currently i have an FPGA doing to heavy lifting moving raw data from the sensor to some SDRAM where I can then read it out slowly sending it to a STM32F7 that writes it to an SD card and sort out the LCD.Thing is I would like to make the system a lot more elegant where I just have a soft core running on the FPGA instead of the F7 but for it to be worth all the effort of porting and re writing code I think I would like to make us of the high speed SD cards out there with UHS-I. This also means I can record 1080p video.I'm just a hobbyist and have no real ambition to sell the camera - I just want it for myself. As you may know the UHS-I spec isn't available to the public without membership to SD association but even if it was I don't think I'm capable of writing my own controller core. Both Altera and Xilinx have cores listed on their websites that can be evaluated for free but I wonder how much a license for the IP would be and even if I could afford it would I be able to use it with the free versions of Vivado and Quartus?How much are licenses for this stuff usually? I have no idea. Thousands? Hundreds of thousands?Thanks

author: amyk
author_rank: Super Contributor
timestamp: October 19, 2016, 12:43:47 am
content: AFAIK all you do is increase the clock rate... and SD isn't that difficult to interface with. It's essentially a block device with just a bit more complexity than serial flash.Also, if you know what to look for, you will find the full spec pretty easilyButhttps://www.sdcard.org/downloads/pls/shows UHS-II there, so even the dumbed-down specs should have UHS-I.

author: amyk
author_rank: Super Contributor
timestamp: October 19, 2016, 03:08:50 am
content: SD is not hard to write a controller for, even the Arduino kids are doing it...If you get the clocks synced just right and want to record raw data as you seem to be implying, you can stream directly from the sensor into the card. I think there's been a few threads here on that subject before.

author: amyk
author_rank: Super Contributor
timestamp: October 19, 2016, 11:32:31 am
content: Quote from: blueskull on October 19, 2016, 03:15:11 amYes, that's just increasing the clock to 208MHz (nybble mode, 4 bits per clock, so 104MB/s.) I assume if the OP is working with FPGAs and image sensors then 208MHz is not foreign territory. I'm just saying that it's not hard to write an SD controller, you don't need to buy some IP for it (unless you're extremely short on time and want to market a product very soon), and it will do exactly what you want.As for filesystem: you can preallocate the blocks by writing the FS metadata (e.g. updating the cluster chain for FAT) during otherwise idle time, and also set up the write so that the card is waiting to accept data when it comes.

author: technix
author_rank: Super Contributor
timestamp: October 24, 2016, 08:27:38 am
content: Quote from: blueskull on October 19, 2016, 03:15:11 amIf you plan to use your own code to read the contents of the card instead of allowing the operating system to do so by mounting it, or if you plan to use the card as a non-removable storage media, you can safely disregard the filesystem and use it as a raw block device.