AC '97 Audio Codec Wing


Guest Rudzz

Recommended Posts

Hello everyone!

I have been working on trying to create a nice audio interface wing for the Papilio one, and I thought I would share with you what I have come up with.  I am using an AC '97 audio codec chip, namely the Cirrus Logic CS4202 (http://www.cirrus.com/en/products/cs4202.html). This chip has capabilities for 3 stereo and 2 mono line level inputs, and 2 mono mic inputs. It has stereo line out, headphone out (with amp), and mono out. 18-bit stereo A/D converter and 20 bit stereo D/A converter. More details can be found in the data sheet.

I only utilize one line-in and one line-out in my first revision of the wing. I am unsure whether I should leave it like that, since it fits nicely in one wing slot, or expand it to utilize more inputs and outputs. The nice thing about the codec chip is that more inputs and outputs would not require any more i/o to the FPGA, but it would require a bigger wing for the audio jacks.

I chose this chip because I have previously written the controller for an AC '97 codec in verilog, so I knew how to interface with it, and because of its capabilities.  I currently only have a test project coded in verilog in Xilinx ISE, which brings the audio into the FPGA and outputs it without modification, using the AC '97 protocol. I would like to expand this to do some DSP, maybe an adaptive filter. There are a number of applications that this can be applied to.

I am currently writing up a blog post detailing my circuit design, pcb design, soldering, and Verilog code to interface with it. When that is done I will follow up here with a link to the post.

Any suggestions and comments are welcome! I would like to know also if anyone has any interests in using this design, so feedback is appreciated.

Here is my dropbox gallery with a couple pics of my first smt prototype board:

https://www.dropbox.com/gallery/2077246/1/AC97%20Wing?h=190c75

-John Ruddy

Link to comment
Share on other sites

John,

This is absolutely awesome! I have received a lot of requests for a way to get audio input, so I think this will be a very well received Wing. It's something I've been looking at but just never have the time to do, so I'm super excited about it.

Several people have asked about doing guitar effects and such and the hangup has always been the audio input, this Wing will provide a solution people can use.

As far as adding more inputs, on one hand I really like the clean 8-bit Wing format. On the other hand I'm looking at the pricing for the Cypress chip and it looks like $9 in singles and $4 in 1K quantities. At that price it makes you want to get the most out of the chip...

I think maybe what would be cool is to do the 8-bit Wing and then possibly a 16-bit Combo Wing that has VGA and AC '97 Audio. People who want a nice, minimal Wing have that option and people who want a bunch of functionality can get the Combo Wing. What do you think?

Well, I'm very excited about this and I'm sure others will be too. Great work!

Jack.

Link to comment
Share on other sites

The Cirrus Logic chips were free samples that I requested to test out my board. After some research, it seems most of the AC '97 codecs have the same pinouts and typical design (My pcb was originally designed around another IC, the LM4550).  I have been looking into IDT's STAC9750(http://www.idt.com/products/audio-products/ac97-codecs/stac9750-two-channel-ac97-codec). This chip is much cheaper than the other, and is very similar.

I have a few of these on hand and a few blank pcbs left, so I am going to see how it works out.

Link to comment
Share on other sites

I wrote up my first blog post about my design today. It only talks briefly about the project and shows the schematic and eagle pcb layout. I am currently cleaning up my verilog code and will make a new post soon explaining the AC '97 communication link protocol and how to use verilog to initialize the chip, set up registers, and start passing data through it. Heres the link, but be sure to check back in a few days for my explanation of putting it on the board.

http://jreeblog.wordpress.com/

I am currently finding the exact AC '97 codec chip that I want to use, but once I revise the circuit and PCB, I may make a small batch of these to see if there is a market for them. Contact me if you are interested in one.

Link to comment
Share on other sites

Rudzz,

Excellent writeup, I scheduled it to be reposted on the Gadget Factory blog.

Count me in for buying one from the first batch you make. :)

Once you are happy with the design we should talk about manufacturing for the Wing. If you want to manufacture and sell them yourself we can help promote the Wings, or if you want we can handle the manufacturing and sell them through our channels and do some profit sharing. Either way I'm happy to see such a cool Wing available and will help out any way I can.

Jack.

Link to comment
Share on other sites

  • 9 months later...

Hey, Jack and I were talking about this in the chat room today. What's the latest on this? One idea was to mount two additional connectors on the under side of the board so you end up with 2 on top and 2 on the bottom. Because the board is elevated to start with in order to plug into the header, I think there will be enough room for it to still sit flush on a flat surface.

Link to comment
Share on other sites

  • 4 months later...

Sorry its been so long, last time I posted I had just sent out for a very small batch (<10) of my second rev boards to be made for prototyping. After that I was finishing up my thesis and then started a new job, time flies and here we are.

 

I haven't assembled any of my rev 2 boards yet, so I still need to test. In rev 2, I changed the IC to a CS4299, which is still an AC '97 CODEC. I also added jack sense signals so you know whether or not something is plugged into the jacks. It is overall more cleaned up and a nicer design, but still a prototype. Its been a little over a year since this design was made so I will have to review it for part pricing and availability. (Like the fact that every single component is 0603, making a few of the values a bit too expensive)

 

Jack, maybe we could talk about producing these if you are still interested? Let me know.

 

I plan on assembling 5-10 of the boards I have on hand and will post again when I do.

 

-John R.

Link to comment
Share on other sites

Is there space for a simple pin header? What I've done from time to time is connect unused I/O pins to a header that can be populated if I ever have a use for those pins. Lacking space for a header, I sometimes try to at least break them out to individual pads that I can solder wires to at a later date. It's a nice compromise when you don't have an immediate need and don't wish to make the board larger.

Link to comment
Share on other sites

Sorry its been so long, last time I posted I had just sent out for a very small batch (<10) of my second rev boards to be made for prototyping. After that I was finishing up my thesis and then started a new job, time flies and here we are.

 

I haven't assembled any of my rev 2 boards yet, so I still need to test. In rev 2, I changed the IC to a CS4299, which is still an AC '97 CODEC. I also added jack sense signals so you know whether or not something is plugged into the jacks. It is overall more cleaned up and a nicer design, but still a prototype. Its been a little over a year since this design was made so I will have to review it for part pricing and availability. (Like the fact that every single component is 0603, making a few of the values a bit too expensive)

 

Jack, maybe we could talk about producing these if you are still interested? Let me know.

 

I plan on assembling 5-10 of the boards I have on hand and will post again when I do.

 

-John R.

 

I think we would be interested in producing these, I just got back from Design West and am still trying to dig out of the email/forum hole from being gone for a week. Lets talk some more when I get caught up. :)

 

Thanks!

Jack.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.