Как подключить цифровой выход ПЛИС к ЦАП?
В настоящее время у меня есть очень, очень базовое ядро DDS (?) Со счетчиком, словом настройки и синусоидальным LUT, которое выводит 16-битные значения для корреляции со значением sin для ЦАП. Я использую плату Nexys 4 DDR, а мой ЦАП - это периферийный модуль, предназначенный исключительно для FPGA. Если это 16-битный ЦАП, то почему у него 6 контактов, только 4 из которых предназначены для данных? И как я должен отправить двоичную информацию из моего 16-разрядного сгенерированного значения sin в ЦАП, чтобы ЦАП выполнил успешное преобразование?
Вот мой код (я знаю его элементарный, пожалуйста, прости ошибки, я исправлю их, как только я правильно знаю, как взаимодействовать с ЦАП!)
module sin_LUT(
input clk,
input [0:3] M,
input rst,
output reg [16:0] data_out,
output reg [32:0]test
);
//counter
//declaring constant
integer i;
integer int_M;
always @(M)
int_M = M;
always @(posedge(clk))
begin
if (rst)
i <= 0;
else if (i >= 29)
i <= 0;
else
i <= i + M;
end
//testing purposes
always @(i)
test = i;
//sine LUT
always @(i) begin
case (i)
0: data_out = 16'D32768;
1: data_out = 16'D39812;
2: data_out = 16'D46526;
3: data_out = 16'D52598;
4: data_out = 16'D57742;
5: data_out = 16'D61718;
6: data_out = 16'D64341;
7: data_out = 16'D65487;
8: data_out = 16'D65103;
9: data_out = 16'D63208;
10: data_out = 16'D59889;
11: data_out = 16'D55302;
12: data_out = 16'D49661;
13: data_out = 16'D43230;
14: data_out = 16'D36310;
15: data_out = 16'D29225;
16: data_out = 16'D22305;
17: data_out = 16'D15874;
18: data_out = 16'D10233;
19: data_out = 16'D5646;
20: data_out = 16'D2327;
21: data_out = 16'D432;
22: data_out = 16'D48;
23: data_out = 16'D1194;
24: data_out = 16'D3817;
25: data_out = 16'D7793;
26: data_out = 16'D12937;
27: data_out = 16'D19009;
28: data_out = 16'D25723;
29: data_out = 16'D32768;
default: data_out = 16'b0000111100001111;
endcase
end
endmodule
1 ответ
Лист данных для этой платы ЦАП говорит, что она использует ЦАП Analog Devices AD5541:
http://www.analog.com/en/products/digital-to-analog-converters/da-converters/ad5541a.html
На странице продукта также есть ссылка на таблицу данных DAC. Из этой таблицы данных я извлек следующую информацию: эта вещь использует интерфейс SPI. Выделите линию (CS), которую вы нажимаете низко, чтобы указать ЦАП, для которого вы хотите отправить ему данные. Строка данных (DIN), в которой представлен каждый отдельный бит. И линия синхронизации (SCLK), которая заставляет ЦАП немного читать данные из линии данных в тот момент, когда он переходит от низкого к высокому уровню.
Вход LDAC, если он установлен на низком уровне, сообщает ЦАП о выходе при каждом обновлении регистра последовательных данных.
При разработке электроники первостепенное значение имеет возможность получать и читать документацию. Я уже использовал несколько разных ЦАПов SPI в различных проектах, в том числе и из AD. Но не AD5541. Но весь ответ выше я использовал информацию, которую я получил, прочитав соответствующие таблицы в течение нескольких минут. Если программирование ПЛИС - это ваша вещь, которую вы обязательно должны развивать в себе, как таковой.