Digital audio from IDE

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I still don't know how much flash and SDRAM memory I need since I haven't started on the software.
You could let people buy their own SDRAM modules because if you get a big stack of faulty SDRAM, you'll get into problems.

It will need big flash, and flash(USB or smartdisk kind) is kind of slow. An HDD could do the task easily, but HDD support would be a later addition. (Maybe a boot CDRW for prototyping)

SATA: this would require putting a PATA-to-SATA controller on my board, which is annoying
SDRAM(up to 133M) is slower than SATA drives(150 or 200M depending of the version), while pata is 133M.(I only tell M because some companies call them MHz while other call them Mbps.)

But on the other hand, PICs and AVRs are easy to program and very inexpensive, and it makes my end of things a lot simpler.

You could just make it like you want and people could put this in their own version, or create some kind of "plug-in".
 
DragonMaster said:
You could let people buy their own SDRAM modules because if you get a big stack of faulty SDRAM, you'll get into problems.

It will need big flash, and flash(USB or smartdisk kind) is kind of slow. An HDD could do the task easily, but HDD support would be a later addition. (Maybe a boot CDRW for prototyping)

SDRAM(up to 133M) is slower than SATA drives(150 or 200M depending of the version), while pata is 133M.(I only tell M because some companies call them MHz while other call them Mbps.)

You could just make it like you want and people could put this in their own version, or create some kind of "plug-in".

Clarification time.

Got a cheap (eg Apex) DVD player? if so, open it up and peek inside. You'll probably find a miniscule board inside which has a DSP chip of some sort, 4 or 8 megabytes of SDRAM, 1 or 2 megs of flash, a few audio/video codec ICs and not much else. Cables connect this stupid little board to rear panel I/O jacks, front panel user interface, a small switching power supply and the DVD transport.

Now consider what this 'stupid little board' does: it plays MPEG audio/video realtime, plays MP3/WAV/ASF/etc audio formats, displays JPEG and PhotoCD pictures, and possibly more. Half the front of your DVD player is probably covered with icons representing the different things that the board can do.

Now take this 'stupid little board', strip the audio/video codecs off and put on a basic I2S audio interface (no video). Replace the proprietary transport and control interfaces with IDE and RS232. You now have what I'm building.
 
Here's the insides of my Apex.

Flash chip is an 8-bit, 1MB Fujitsu 29LV800.
SDRAM chip is a 16-bit, 8MB Hyundai HY57V6416.

I'm probably putting 4MB/32MB on the first revision of my board. Call me generous. :D
 

Attachments

  • apex_guts4.jpg
    apex_guts4.jpg
    80 KB · Views: 744
Now I understand "clearly" what you're talking about.(I was understanding it would be the controller board, but I haven't understood how you would interface it.

I'm probably putting 4MB/32MB on the first revision of my board. Call me generous.

Hehe.

Oh, I see the 3CDs Mandrake Linux 10.1 is pretty chubby.

Got a cheap (eg Apex) DVD player?

No, I don't have any Apex players. Only a Pioneer and a Sony(Newer Pioneer models have separate audio outputs for each channels. :( )

Now take this 'stupid little board', strip the audio/video codecs off and put on a basic I2S audio interface (no video). Replace the proprietary transport and control interfaces with IDE and RS232. You now have what I'm building.

A player with more buttons than an Apex that have a display have a chip on the front PCB(Which would be a PIC in this case) that converts the buttons to serial data.


Replace the proprietary transport and control interfaces with IDE and RS232. You now have what I'm building.

Pioneer DVD Recorders use IDE Pioneer(surprising) DVD bruners, that's why they're really cheap.(250$)

8MB Hyundai HY57V6416
I hope it's better than their cars . . . ( I don't think so, I heard the Apex lags when there are a lot of different pictures at the same time)


Also, talking about LCDs for an interface(Now, I'm talking to others)
There are cheap(30$) monochrome(Blue) 320x240 LCDs @ Mouser.(I just received the catalog)
 
The Spartan3 is an awesome chip... I've designed a few Spartan3 + Blackfin platforms already at work - the Blackfin takes care of all the non-sequential processing and things that require lots of memory (delays, etc) and the X3S does the brute-force, synchronous DSP/logic work. The overall processing power is incredible, and it's a incredibly cheap solution.

My ATA interface board is built and it's working - I just performed an "identify device" command on an old hard drive, and I'm seeing the ASCII string "MAXTOR" in the Blackfin's memory! I'm cleaning up the Verilog right now, and I'll publish the hardware design and software examples shortly.

What are you using for an ATAPI reference? The T13 documentation is painful to read...

selftones said:


The board looks very nice.
I ordered the BF533 STAMP Board, but it will be available not until the end of May.
So i played a little bit with the ATA interface. I built a small board containing an 8-bit mcu and some hc595/hc165 interfacing to ATA, keys and debug lcd. ATAPI is pretty simple and doing CDDA with Blackfin will be quite easy. Doing it with Linux will be not as easy but feasible.
I am also playing with the Spartan-3 FPGA, implementing "Open Source" MCU, I2S and so on.
And yes, Gary, You're right with the ATA-to-I2S-with-232-stuff. Even RS232 is too much, a simple three wire SPI would also do.

Daniel
 
This board is nowhere near running Linux yet - I'm still banging out code in VisualDSP++ to make sure everything works on the low level.

I can easily read/write sectors from hard drives using the task file interface, but I've yet to get packet commands working. The DVD drive i'm testing with now seems to error on every packet command I write at it... I'll check out ide-cd.c and see if that offers any hints, i'm probably missing something very obvious.

selftones: You've ordered the blackfin.uclinux.org STAMP board, right? It has expansion connectors identical to those on my EZ-KIT. Want my second IDE interface PCB?
 
The drive's OK. I've shifted focus from writing VisualDSP++ code to communicate with the CDROM, to getting Linux running on this board.

The board is an Analog Devices BF533 EZ-KIT. The RCAs are audio in/out (4ch in, 6ch out, 24/96) and video in/out. The USB port connects to a JTAG emulator which is built into the board.

DragonMaster said:
Are you sure the drive works fine? Try an other one, I know some drives are REALLY unreliable and aren't even able to play a CD(Thru their analog out) after 30mins without skipping, and there are other drives with tons of C1 and C2 errors.

What are the RCA and USB plug for?
 
The RCAs are audio in/out (4ch in, 6ch out, 24/96) and video in/out.

It seems these CPUs are used for A/V apps.(Duh!)

Before I2S, you could use this to test.

The drive's OK. I've shifted focus from writing VisualDSP++ code to communicate with the CDROM, to getting Linux running on this board.

It's a better idea than writing software to read the CDROM and then shifting to an OS that has already support, no?

About C1 and C2 errors, have you already tried it in some test apps that check for errors? My CD-RW produced tons of unuseful C2 errors, even if the disk is OK.



BTW, I looked at t13.org, and I see why you tell it's a pain to read. I know I already found an other site 3-4 years ago that was a lot more user friendly.

I found in http://cdromtool.sourceforge.net/downloads.php a 200 pages PDF full of codes. And here there are links to T10 and INF-8090. http://www.monkey.org/openbsd/archive/tech/0007/msg00023.html

But these codes aren't useful anymore, since you have some already available code.
 
DragonMaster said:
About C1 and C2 errors, have you already tried it in some test apps that check for errors? My CD-RW produced tons of unuseful C2 errors, even if the disk is OK.
The author of EAC has yet to encounter a CDROM drive which gives proper C2 error information.

CDROM reading will likely be done using cdparanoia methods. Ignore C2 and read everything at least twice.
 
gmarsh said:
selftones: You've ordered the blackfin.uclinux.org STAMP board, right? It has expansion connectors identical to those on my EZ-KIT. Want my second IDE interface PCB?

That would be nice.
AD says, the stamp board will not arrive until /June/ :-(
So there will be enough time left evaluating the FPGA solution. My 8-bit MCU player is a 16-bit MSP430 now and running very well.

Documentation: the best one are the official MMC SCSI notes here: http://www.t10.org/scsi-3.htm
pick the MMC-5 document und You will be happy.

There were also some issues with copy protection. Some drives cannot read the TOC in MSF format correctly. Cdparanoias scsi_read_toc() in interface/scsi_interface.c reads the TOC in LBA format, then it recalculates to MSF via LBA_to_MSF(). This works perfectly in my MCU board.

QUOTE]Originally posted by gmarsh

I can easily read/write sectors from hard drives using the task file interface, but I've yet to get packet commands working. The DVD drive i'm testing with now seems to error on every packet command I write at it... I'll check out ide-cd.c and see if that offers any hints, i'm probably missing something very obvious.
[/QUOTE]

Hmm, may be MSB/LSB confused? I had to swap MSB and LSB.
 
I'm on vacation. Hang in there.

I've successfully got Linux running on the BF533 EZ-KIT... only problem is, the 0.2 silicon on the DSP chip prevents the board from running linux with instruction cache enabled, so it's slow.

I'm figuring out how the Linux IDE driver works now, so I can modify it to work with the Blackfin. If all goes well, I'll be able to mount hard drives, run cdparanoia, etc...

how IRQ management works under linux still makes no sense to me.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.