@lotharek,
post #16
a ja z innej beczki: spojrzałem na kod sigma_delta_dac.v i stwierdzam że jest bez sensu
szybki porcik w delphi wygenerował mi taki obrazek:

odrazu widać że początek każdej linii jest złyi choć to nie problem bo wynika to z wolniejszego 'zakoczenia' twojego algorytmu tylko na początku jego działania to jednak pokazuje że coś jest nie tak. Poza tym co ważniejsze to pas w środku nie jest biały a powinien być dostając wartość 1023 (wybrałem zakres 10bitowy). Pas jest biały przy wartości 1024 której nigdy nie może dostać.
mam lepszy algorytm który wygląda tak:
d = in - s + d;
//in to dane wejściowe, d i q to rejestry większe od in o dwa bity
if (d > 0)
begin
s = 1023;
// waga sygnału wysokiego
o = 1;
//wyjście
end else begin
s := 0;
//waga sygnału niskiego
o := 0;
//wyjście
end
i generuje on taki obrazek:

ostatecznie różnica nie będzie duża, na pewno nie będzie słyszalna ale mimo wszystko proponuję użyć lepszego algorytmu
druga sprawa to
parameter MSBI = 7;
że niby jakim cudem chcesz emulować/symulować dźwięk 8bit + analogowa regulacja głośności na 8bit bez straty jakości? poza tym tam jest też YM w Atarynce a Amiga to już w ogóle miksowanie po dwóch kanałów + regulacja głośności więc precycja 16bit to sensowne minimum aby to miksować, 8bit to zdecydowanie za mało. Te kilka więcej wewnętrznych wire nie zrobi aż takiej różnicy w zapchaniu układu a dźwięk będzie bliższy oryginalnemu. Proponuję zwiększyć precyzję dźwięku.
Kolejna sprawa bo nie wejrzałem dokładnie w źródła ani czy dobrze policzyłem ale widzę trzy rzędy po 7 rezystorów. Oznacza to że DAC jest 7bit? Jeśli tak lub jest 6bit to jak generujesz pozostałe kolory?
ps. chwali się że źródła w starym dobrym verilogu a nie tej sztucznej abominacji vhdl