ESS Sabre Reference DAC (8-channel) - Page 91 - diyAudio
Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 6th August 2008, 10:01 PM   #901
diyAudio Member
 
Join Date: Jul 2005
Location: Devon
OK, looking hopeful.

I'd better explain that although I've been building electronic projects for many years (I'm currently playing with room correction on a TI DSP board), I never really grasped some of the 'basics' of electronics.

I understand things like ohms law and I've repaired hundreds of TV's, VCR's, DVD players, PC's, laptops etc. over the years, but I still don't quite get things like impedance and I/V converters.

I know that some DACs can output either voltage or current, but isn't this kind of the same thing? If you put current 'through' a resistor, wouldn't it also have voltage across it? Why are I/V converters necessary? I've looked on the Web for info, but didn't find much to explain the concept.

Please let me know if this is off topic.

OzOnE.
P.S. Don't worry about the datasheet, the 4shared link is working again for me now.
  Reply With Quote
Old 6th August 2008, 10:15 PM   #902
diyAudio Member
 
R-K Rønningstad's Avatar
 
Join Date: Jan 2006
Location: Oslo
There are better DAC expertise than me here.
But.
Most audio DACs are current out, but some have the current to voltage (I/V) stage internally. But internal opamps are inferior to external ones, provided they are to some degree decent! Hence some have voltage out.
The text book method of getting a voltage from current is to connect the DAC current output to the minus input of an opamp with a resistor between minus in and output. The plus input goes to ground. 1 mA output current and this feedback resistor (e.g. 1 kohm) will give you 1 mA times 1 kohm = 1 V at the output.
If you have eight outputs with 1 mA and sums these before the opamp, you will have 8 mA x 1 kohm = 8 V.
If you have eight outputs of 1 mA through eight opamps with 1 kohm, you will have 1 V on all eight outputs. These can again be summed together, giving 8 V at the summer output (provided all resistors are equal (e.g. 1 kohm)).
You will have to cascade the summing opamp with the I/V stage.
If you connect a 1 kohm resistor from DAC current out to ground you will get 1 mA through that as well, and 1 V will appear over it.
And so on...

Not off topic at all, I think.
BTW this has been a very good thread with lots of interesting things. I must get my hands on these DACs and do some nice implementations!

RK
  Reply With Quote
Old 6th August 2008, 10:25 PM   #903
diyAudio Member
 
Join Date: Jul 2005
Location: Devon
Thank you, that's very helpful.

I've got a good basis to go on now. Shouldn't be too much effort to put into practice. So basically, most DACs have a very small current output capability, so they generally require a buffer or something similar to convert this small current to a usable voltage?

Ok, that's cool. I will start on the board layout for the Sabre IC first, then concentrate on the output summing etc. I may have to bug you guys / girls from time to time, but I'll try to keep my posts short.

OzOnE.
(looking forward to get RevC amps up and running again soon!)
  Reply With Quote
Old 6th August 2008, 10:33 PM   #904
diyAudio Member
 
R-K Rønningstad's Avatar
 
Join Date: Jan 2006
Location: Oslo
Current output from DACs vary. Cannot remember what the Sabre gives. Some TI DACs has 4 mA full scale if I remember right....
The reason some converts the current with a resistor to ground instead over an opamp's -in and out is probably fear of distortion. Probably possible also due to fast edges on the current output. (Rise and fall times.)
If you go for the resistor to ground you will need an (opamp) buffer anyway. So make the PCB so you can vary between "passive" and "active" I/V. Try it out.
Remember proper grounding and decoupling!!!!!!

RK
  Reply With Quote
Old 6th August 2008, 11:03 PM   #905
diyAudio Member
 
BrianDonegan's Avatar
 
Join Date: Dec 2004
Location: TPA HQ
Quote:
Most audio DACs are current out, but some have the current to voltage (I/V) stage internally. But internal opamps are inferior to external ones, provided they are to some degree decent! Hence some have voltage out.
This is not how decent voltage out DACs (WM8740/1 for example) work. They are not internally current output with integrated opamps.
__________________
Twisted Pear Audio
  Reply With Quote
Old 7th August 2008, 06:03 AM   #906
diyAudio Member
 
R-K Rønningstad's Avatar
 
Join Date: Jan 2006
Location: Oslo
OK, T stand corrected! Thank you!
  Reply With Quote
Old 7th August 2008, 12:10 PM   #907
diyAudio Member
 
Join Date: Jan 2002
Location: Cheltenham
Hello Russ,

Any progress sorting out the 6/9 bit quantizer issue? Could you characterize the difference in noise in band and out of band with the two settings?

Cheers,
Dan
  Reply With Quote
Old 7th August 2008, 08:46 PM   #908
diyAudio Member
 
Join Date: Jan 2006
Location: Ireland
A different question - and I know I'm gonna sound thick when you read this!

Anyway - this DAC will take 24bit at 192, right? I have an el cheapo universal DVD recorder/player that will play just about any disc that you throw at it. So what is the best way to get some of these high res recordings onto a disc? Is it normally done on a DVD? Eg if I was to download some of the linn high res recordings what would be the best kind of disc to burn that onto so I could play it back through the buffalo? Connecting a PC directly won't work for me. Is there a decent guide somewhere that you would recommend?

Sorry for what is probably an out of context question but I haven't a clue of the answer!!

Fran
  Reply With Quote
Old 7th August 2008, 09:08 PM   #909
diyAudio Member
 
Russ White's Avatar
 
Join Date: Jan 2005
Location: Nashville, TN, USA
Send a message via Yahoo to Russ White
Quote:
Originally posted by Spartacus
Hello Russ,

Any progress sorting out the 6/9 bit quantizer issue? Could you characterize the difference in noise in band and out of band with the two settings?

Cheers,
Dan
I have not had a chance to really evaluate it, but I have a suspicion.

I think the problem is not really so much about the quantizer setting but about the way they work with the DACs remapped as they have to be to support all input types (DSD,SPDIF,I2S) with 4 DACs per channel.

I think the problem is that in 9 bit mode one or more DACs is somehow inverted, or incorrectly mapped.

This is just a guess. Maybe Dustin can chime in with some help.

It could be I am just missing something in the firmware.

I will gladly send source code.

In fact here it is:
Code:
#include "init.h"
#include <htc.h>

#define SPDIF_SWITCH					GPIO5
#define FILTER_MODE_SWITCH				GPIO4
#define QUANTIZER_SWITCH				GPIO3
#define DPLL_MODE_SWITCH				GPIO2

#define AUTOMUTE_TRIGGER_LOWEST 		0b1111111 	// lowest automute trigger point
#define AUTOMUTE_OFF					0b00000000	// Effectively turns off automute
#define LOW_VOLUME 						255			// Lower limit on volume, to conserve pot travel....

#define SPDIF_ENABLED 					0b1
#define SPDIF_DISABLED 					0b0

#define PCM_DATA_FORMAT_I2S 			0b00
#define PCM_DATA_FORMAT_LJ 				0b01
#define PCM_DATA_FORMAT_RJ 				0b10

#define PCM_DATA_LENGTH_24 				0b00
#define PCM_DATA_LENGTH_20 				0b01
#define PCM_DATA_LENGTH_16 				0b10

#define NON_OVERLAP_CONTROL_OVERLAP  	0b0
#define NON_OVERLAP_CONTROL_STANDARD    0b1

#define JITTER_REDUCTION_DISABED	    0b0
#define JITTER_REDUCTION_ENABLED	    0b1

#define DEEMPHASIS_USE					0b0
#define DEEMPHASIS_BYPASS				0b1

#define UNMUTED							0b0
#define MUTED							0b1

#define NS_MOD_GAIN_3					0b0
#define NS_MOD_GAIN_4					0b1

#define DPLL_BANDWIDTH_NO_BANDWIDTH		0b000
#define DPLL_BANDWIDTH_LOWEST			0b001
#define DPLL_BANDWIDTH_LOW				0b010
#define DPLL_BANDWIDTH_MED_LOW			0b011
#define DPLL_BANDWIDTH_MEDIUM			0b100
#define DPLL_BANDWIDTH_MED_HIGH			0b101
#define DPLL_BANDWIDTH_HIGH				0b110
#define DPLL_BANDWIDTH_HIGHEST			0b111

#define PCM_DEEMPHASIS_FREQUENCY_44_1	0b01

#define DITHER_CONTROL_NOISE_SHAPED		0b0

#define ROTATOR_INPUT_NS_MOD			0b0

#define REMAPPING_REMAMP				0b1

#define NOTCH_DELAY_NO_NOTCH			0b00000
#define NOTCH_DELAY_MCK_DIV_4			0b00001
#define NOTCH_DELAY_MCK_DIV_8			0b00011
#define NOTCH_DELAY_MCK_DIV_16			0b00111
#define NOTCH_DELAY_MCK_DIV_32			0b01111
#define NOTCH_DELAY_MCK_DIV_64			0b11111

#define DAC_SOURCE_NORMAL				0b0
#define DAC_SOURCE_ALTERNATE			0b1

#define PSEUDO_DIFFERENTIAL				0b0
#define TRUE_DIFFERENTIAL				0b1

#define IIR_BW_NORMAL					0b00
#define IIR_BW_50K						0b01
#define IIR_BW_60K						0b10
#define IIR_BW_70K						0b11

#define ROLLOFF_SLOW					0b0
#define ROLLOFF_FAST					0b1

#define QUANT6							0b00
#define QUANT7							0b01
#define QUANT8							0b10
#define QUANT9							0b11


// external I2C functions
char I2C_Send(char Address,char *Data,char Num);
char I2C_Read(char Address,char *Data,char Num);
char i2csendbyte(char byte);
char i2cgetbyte(void);
char i2cgetack(void);
void i2csendack(void);
void i2cdelay(char delay);
void i2cstart(void);
void i2cstop(void);
void i2cclock(void);
char i2creadbit(void);
void DelayMs(unsigned char);
void setup(void);
void setRegister (unsigned char, unsigned char);
void setRegBits(int, int, int, int);

unsigned char address = 0x90;

unsigned char registers[16];

void setup() {
	if (SPDIF_SWITCH == 1) setRegBits(8,7,7,SPDIF_ENABLED);
	else setRegBits(8,7,7,SPDIF_DISABLED);
	setRegBits(8,6,0,AUTOMUTE_TRIGGER_LOWEST);
	registers[9] = AUTOMUTE_OFF;
	setRegBits(10,7,6,PCM_DATA_LENGTH_24);
	setRegBits(10,5,4,PCM_DATA_FORMAT_I2S);
	setRegBits(10,3,3,NON_OVERLAP_CONTROL_STANDARD);
	setRegBits(10,2,2,JITTER_REDUCTION_ENABLED);
	setRegBits(10,1,1,DEEMPHASIS_BYPASS);
	setRegBits(10,0,0,UNMUTED);
	setRegBits(11,7,7,NS_MOD_GAIN_4);
	setRegBits(11,6,5,0);								// reserved set to 0b00
	if (DPLL_MODE_SWITCH == 0) {
		setRegBits(11,4,2,DPLL_BANDWIDTH_HIGH);
	}
	else {
		if (SPDIF_SWITCH == 1) setRegBits(11,4,2,DPLL_BANDWIDTH_MED_LOW);// SPDIF needs to be at least a MED_LOW to prevent turn on glitches as per Dustin's email
		else setRegBits(11,4,2,DPLL_BANDWIDTH_LOWEST);
	}
	setRegBits(11,1,0,PCM_DEEMPHASIS_FREQUENCY_44_1);
	setRegBits(12,7,7,DITHER_CONTROL_NOISE_SHAPED);
	setRegBits(12,6,6,ROTATOR_INPUT_NS_MOD);
	setRegBits(12,5,5,REMAPPING_REMAMP);
	if (QUANTIZER_SWITCH == 0) setRegBits(12,4,0,NOTCH_DELAY_MCK_DIV_64);
	else setRegBits(12,4,0,NOTCH_DELAY_NO_NOTCH);
	registers[13] = 0;									// all DACs in phase.
	setRegBits(14,7,7,DAC_SOURCE_ALTERNATE);
	setRegBits(14,6,6,DAC_SOURCE_ALTERNATE);
	setRegBits(14,5,5,DAC_SOURCE_ALTERNATE);
	setRegBits(14,4,4,DAC_SOURCE_ALTERNATE);	
	if (QUANTIZER_SWITCH == 0) setRegBits(14,3,3,TRUE_DIFFERENTIAL);
	else setRegBits(14,3,3,PSEUDO_DIFFERENTIAL);
	setRegBits(14,2,1,IIR_BW_50K);
	if (FILTER_MODE_SWITCH == 1) setRegBits(14,0,0,ROLLOFF_FAST);
	else setRegBits(14,0,0,ROLLOFF_SLOW);
	if (QUANTIZER_SWITCH == 0) {
		setRegBits(15,7,6,QUANT6);
		setRegBits(15,5,4,QUANT6);
		setRegBits(15,3,2,QUANT6);
		setRegBits(15,1,0,QUANT6);
	}
	else {
		setRegBits(15,7,6,QUANT9);
		setRegBits(15,5,4,QUANT9);
		setRegBits(15,3,2,QUANT9);
		setRegBits(15,1,0,QUANT9);
	}
}

void setRegBits(int reg, int hi, int low, int value) {
	int i;
	unsigned char v;
	for (i = low; i <= hi; i++) {
		// clear the register bits in case they were already set
		registers[reg] &= ~(1 << i);
	}
	// shift
	v = (unsigned char) value << low;
	// set
	registers[reg] |= v;
}

void setRegister (unsigned char reg, unsigned char value) {
	unsigned char message[2];
	message[0] = reg;
	message[1] = value;
	I2C_Send(address,message,2);
}


main(void) {
	int i;
	init();
	// enable pullups
	GPPU = 1;
	WPU5 = 1;
	WPU4 = 1;
	WPU2 = 1;
	DelayMs(10);
	setup();
	for (i = 8;i < 16; i++) {
		setRegister(i,registers[i]);
	}
	while (1){
		SLEEP();
	}
}

Cheers!
Russ
__________________
Less pulp more juice Twisted Pear Audio.
  Reply With Quote
Old 7th August 2008, 09:20 PM   #910
diyAudio Member
 
R-K Rønningstad's Avatar
 
Join Date: Jan 2006
Location: Oslo
Quote:
Originally posted by woodturner-fran
A different question - and I know I'm gonna sound thick when you read this!

Anyway - this DAC will take 24bit at 192, right? I have an el cheapo universal DVD recorder/player that will play just about any disc that you throw at it. So what is the best way to get some of these high res recordings onto a disc? Is it normally done on a DVD? Eg if I was to download some of the linn high res recordings what would be the best kind of disc to burn that onto so I could play it back through the buffalo? Connecting a PC directly won't work for me. Is there a decent guide somewhere that you would recommend?

Sorry for what is probably an out of context question but I haven't a clue of the answer!!

Fran
The Linn Hi Rez downloads are 24/88.2. Seems Linn offers only 2-channels, even if the equivalent SACDs are multichannel. They say the quality is the same, but please not that the disk is DSD while the downloads are PCM. Probably the masters are PCM anyway, and converted to DSD for the SACDs.

To the point; Linn has provided some kind of user manual for what you ask about. They even recommend burning a "DVD Audio" copy.

Please see here:
http://www.linnrecords.com/linn-help...DVD.aspx#about

As the downloads are 2 channel 24/88.2 it should be possible to burn it as a DVD-V audio-only disk. (Or doesn't the DVD-V standard support 88.2 kHz sampling? DVD-A does... As they talk about the AUDIO_TS folder it seems they really mean DVD-Audio as such!)

If you try this, please report in the forum!

RK
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



New To Site? Need Help?

All times are GMT. The time now is 09:55 AM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright ©1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2