1.1 - Вывод 1 битного звука

Проверенная более качественная схема

Простая схема, которая в принципе выдает какой-то звук:

Подключаю выход ТТЛ ножки ПЛИС к линейному входу звуковой платы. Плюсом в сторону ПЛИС.

FPGA_AUDIO_OUT

Для проверки подойдет, например, простейший генератор 440 Гц на Verilog.

module synth(

input wire clk, //вход тактового генератора на 50 МГц

output reg snd //выход меандра 440 Гц

);

//440 Hz generator целочисленный. В моей плате генератор на 50 МГц

// 50000000 hz / 440 hz = 113636

reg[24:0] note_counter; // счетчик до 113636

//Инициализация

initial

begin

snd = 0;

snd_sig = 0;

note_counter = 113636;

end

//При каждом такте

always @ (posedge clk)

begin

//целочисленное деление

if (note_counter == 0) begin

//Генерим целочисленно

snd = ~snd;

note_counter = 113636;

end else begin

note_counter = note_counter -1;

end

end

endmodule

Такой вывод подходит, как для ШИМ, так и для дельтасигма. Стоит заметить, что дополнительного ФНЧ на схеме нет. Делать ФНЧ для ШИМ трудно, потому что чем больше бит, тем ниже частота. Чтобы сохранить высокую частоту, можно разделить сигнал на младшую и старшую части (http://spritesmods.com/?art=bwidow_fpga&page=4).

Еще страница http://www.openmusiclabs.com/learning/digital/pwm-dac/dual-pwm-circuits/

Проект, приложенный внизу, собран под Quartus 11.1, для платы на Cyclone EP4CE10E22C8N

В проекте есть ошибки: моно вариант был записан при не правильном подключении ПЛИС на вход звуковой платы, стерео вариант дает уже чистый меандр на записи; при рассчетах ошибка, за период частоты 440 Гц полярность меняется 1 раз, а должен быть целый период, поэтому в результате получается 220 Гц.