Glitches på outputtet af ideelle DAC

S

snoop835

Guest
Hi guys,

Jeg forestiller 10bit 50MHz pipelined ADC hjælp HSPICE.At observere den analoge udgang af denne ADC, jeg skal blot tilslutte den digitale bits output til en 10-bit ideel DAC.Da jeg bemærkede output, får jeg en SINEWAVE repræsenterer indgangsspænding med en vis latenstid.Ligeledes er der glitches på outputtet af en ideel DAC.(Jeg har vedhæftet de output-fil i jpg-format).

Mit spørgsmål er:

1) Hvad er årsagen til de glitches?Er det på grund af ideal DAC?
2) Er glitch er en fejl?Kan vi glemme det?

skål
Beklager, men du skal logge ind for at se denne vedhæftede fil

 
Jeg tror, at forskellen mellem ur ADC og 10bit ideelle DAC forårsaget glitches.Tidspunktet for DAC's prøvetagning og conventer påvirke ur.Uret i ADC og DAC er forskellighed.Den glitches WAE påvirker ikke rigtigheden af ADC.The tidspunktet for glitches var meget kort ((1 / 10) * prøve periode).

 
do ur ideelle DAC indeholder CLK & DFFs?hvis u har CLK, derefter u bør justere det til at prøve det korrekte output af ADC.

 
Chenliy, Btrend,

Tak for din kommentar.For mit ideal DAC, kan jeg ikke bruge ur.Her er min Netlist.Håber du kan give en kommentar!

. SUBCKT bitDAC VDD VREF VREF-VOUT b9 B8 B7 B6 b5 b4 b3 b2 b1 B0 b3L
R1 VDD 100meg
R2 0 100meg
X9 B9 b9L BitLogic
X8 B8 B8l BitLogic
X7 b7 b7L BitLogic
X6 B6 b6L BitLogic
X5 B5 b5L BitLogic
X4 b4 b4L BitLogic
X3 b3 b3L BitLogic
X2 b2 b2L BitLogic
X1 b1 B1l BitLogic
X0 B0 b0L BitLogic
Etotal VOUT 0 VOL = '((V (VREF )-V (VREF-)) / 1024) * ((V (b9L) * 512) (V (B8l) * 256) (V (b7L) * 128) (V (b6L) * 64) (V (b5L) * 32) (V (b4L) * 16) (V (b3L) *

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

(V (b2L) * 4) (V (B1L) * 2) (V (b0L))) (V (VREF-)) "
. ender

. SUBCKT BitLogic BX BXL
Vone en 0 DC 1V
GS1 BXL en VCR PWL (1) BX 0 0V, 1MEG 3.3V, 1
gs1c BXL 0 VCR PWL (1) BX 0 0V, 1 3.3V, 1MEG
. enderEr det noget galt med min Netlist, der forårsager glitch.

mange tak

 
hvis u ikke bruger uret til strobe ur output fra ADC, kan u ikke garantere det synkrone af digitale indgang til ur ideelle DAC, så ur DAC få glitch.
Dette er min kode til den ideelle DAC med CLK,

**** Ideal 10bit-DAC-generation
. SUBCKT DAC10B DI9 DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 Août CLK
XLA0 DI0 D0 CLK SH
XLA1 DI1 D1 CLK SH
XLA2 DI2 D2 CLK SH
XLA3 DI3 D3 CLK SH
XLA4 DI4 D4 CLK SH
XLA5 DI5 D5 CLK SH
XLA6 DI6 D6 CLK SH
XLA7 DI7 D7 CLK SH
XLA8 DI8 D8 CLK SH
XLA9 DI9 D9 CLK SH

EDAC2 Août 0 volt = 'LSB * (v (D9) * 512 v (d

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

* 256 v (D7) * 128 v (D6) * 64 v (D5) * 32 v (D4) * 16 v (D3) * 8 v (d2) * 4 v (d1) * 2 v (d0)) "
. ender

***** Skifte ******
. SUBCKT SW1 i ud c CB
*********** Definere kontakten tænde spænding på von_th
. param von_th = 1
Gsw1 i VCR PWL (1) c CB 0.100 meg 1e-6, 1m
. ender

***** S / H ******
. SUBCKT SH i ud CLK
*********** Sample mode: når CLK> vtrig v (ud) = v (i) *********
*********** E1 er brugt til at isolere SW1 & SW2 *********
E1 out1 0 volt = 'v (outs)'
Xsw1 i outs CLK vtrig SW1
C1 outs 0 0.1p $**** tilføjet cap vil forsinke signalet & simulerede den virkelige sag
*********** Hold mode: når CLK <vtrig v (ud) = v (i) *********
*********** E2 bruges til at isolere SW2 & OUT *********
Xsw2 out1 OUT2 vtrig CLK SW1
C2 OUT2 0 0.1p
E2 ud 0 volt = 'v (OUT2)'
. ender

 
er, at på grund af nonidealization af uret til ADC og DAC?
henseende

 
der er også forsinkelser i DFF, og andre porte efter DAC's produktion.I ideelle situation (0s stiger / falder tid, lige forsinkelse tid), hvis alle de digitale indgange DAC er sync.der bør ikke være glitch.

 
Den Btrend's siger, er right.The fyr er mit ideal 10bit DAC med Verilog-A sprog.

«omfatte" discipline.h "
«omfatte" constants.h "
«definere NUM_DAC_BITS 10

modul d2a_ideal_1 (CLK, din, VOUT);

input [ `NUM_DAC_BITS-1: 0] DIN;
spænding [ `NUM_DAC_BITS-1: 0] DIN;

input CLK;
spænding CLK;
output VOUT;
spænding VOUT;
parameter real vmax = 5;
parameter real Vmin = 0;
parameter real femte = 1,25;
parameter real trise = 4.0p fra (0: inf);
parameter real tfall = 4.0p fra (0: inf);
parameter real tconv = 2.0p fra [0: inf);
parameter real slack = 10.0p fra (0: inf);
parameter integer traceflag = 0;

virkelige LSB, voffset, new_vout;
integer decimal_value;

Analog begynde

@ (initial_step eller initial_step ( "DC", "AC", "tran", "xf")) begynder
if (Vmin <0,0) voffset = Vmin; else voffset = 0.0;
decimal_value = 0;
LSB = (Vmax - Vmin) / (1 << `NUM_DAC_BITS);
if (traceflag) begynder
$ display ( "% M DAC interval (% GV) /% d bits = lsb% g volt. \ n",
vmax - Vmin, «NUM_DAC_BITS, LSB);
$ display ( "offset% g volt. \ n", voffset);
ende
ende
@ (cross (V (CLK)-femte, 1, slap, clk.potential.abstol)) begynder
decimal_value = 0;
generere I ( `NUM_DAC_BITS-1, 0) begynder
decimal_value = decimal_value ((V (DIN )> femte)? 1 <<i: 0);
ende
new_vout = decimal_value * lsb voffset;

if (traceflag)
$ Strobe ( "% M ved% g sek. digitalt i:% d VOUT:% g",
$ realtime, decimal_value, (decimal_value * LSB) voffset );
ende
V (VOUT) < overgang (new_vout, tconv, trise, tfall);
ende
endmodule

`undef NUM_DAC_BITS

 
Tusind tak for den vidunderlige hjælp Btrend og Chenliy.

skål
-snoop835 -Lagt efter 2 timer 23 minutter:Hi Btrend,

Jeg har prøvet din metode bruger idealdac med ur.her er min Netlist.

************************************************** **************
. OPTION POST
. temp 25
. tran 1ns 1us

xDAC10B DI9 DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 Août CLK DAC10B

Vb9 DI9 0 puls (0 5 0 200P 200P 511.8n 1024n)
Vb8 DI8 0 puls (0 5 0 200P 200P 255.8n 512N)
Vb7 DI7 0 puls (0 5 0 200P 200P 127.8n 256n)
VB6 DI6 0 puls (0 5 0 200P 200P 63.8n 128n)
Vb5 DI5 0 puls (0 5 0 200P 200P 31.8n 64n)
Vb4 DI4 0 puls (0 5 0 200P 200P 15.8n 32N)
VB3 DI3 0 puls (0 5 0 200P 200P 7.8n 16N)
VB2 DI2 0 puls (0 5 0 200P 200P 3.8n 8N)
Vb1 DI1 0 puls (0 5 0 200P 200P 1.8N 4n)
Vb0 DI0 0 puls (0 5 0 200P 200P 0.8n 2n)
Vclk CLK 0 puls (0 5 0 200P 200P 5ns 10ns)

. SUBCKT DAC10B DI9 DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 Août CLK
XLA0 DI0 D0 CLK SH
XLA1 DI1 D1 CLK SH
XLA2 DI2 D2 CLK SH
XLA3 DI3 D3 CLK SH
XLA4 DI4 D4 CLK SH
XLA5 DI5 D5 CLK SH
XLA6 DI6 D6 CLK SH
XLA7 DI7 D7 CLK SH
XLA8 DI8 D8 CLK SH
XLA9 DI9 D9 CLK SH
EDAC2 Août 0 volt = 'LSB * (v (D9) * 512 v (d

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

* 256 v (D7) * 128 v (D6) * 64 v (D5) * 32 v (D4) * 16 v (D3) * 8 v (d2) * 4 v (d1) * 2 v (d0)) "
. param LSB = 977uV
. ender

. SUBCKT SW1 i ud c CB
. param von_th = 1
Gsw1 i VCR PWL (1) c CB 0.100 MEG 1e-6, 1m
. ender

. SUBCKT SH i ud CLK
E1 out1 0 volt = 'v (outs)'
Xsw1 i outs CLK vtrig SW1
C1 outs 0 0.1p
Xsw2 out1 OUT2 vtrig CLK SW1
C2 OUT2 0 0.1p
E2 ud 0 volt = 'v (OUT2)'
. ender

. sonde V (Août) V (DI9) V (DI8) V (DI7) V (DI6) V (DI5) V (DI4) V (DI3) V (DI2) V (DI1) V (DI0)
. ende
************************************************** ***********
Testbetingelse: Input = Ramped-up bits fra 0 - fullscale
Fclk = 100MHz
LSB = 1V (fullscale) / 1024 = 977uV

Jeg har vedhæftet en simulering resultaterne i dette forum.Af en eller anden grund jeg could't få den forventede udgangsspænding.Udgangsspændingen ramp-up fra 0V - 250mV (i stedet for 1V) og output kurven ligner ikke ideel DAC output.Jeg tvivler på mit resultat er korrekt.Der er noget galt med min opsætning?Forslag?

tak på forhånd
Beklager, men du skal logge ind for at se denne vedhæftede fil

 
Undskyld, jeg mistede to linjer: (som defineret swithing tærskel)

VSB VTRIG 0 2,5
. GLOBAL VTRIG

prøve det igen.

 

Welcome to EDABoard.com

Sponsor

Back
Top