Я пишу код Verilog для FPGA Sparatn-6 Xilinx, в котором я хотел бы перенастроить ввод-вывод во время «времени выполнения», в частности, между несимметричными и дифференциальными буферами ввода-вывода.
Я прочитал список примитивов буфера ввода-вывода в UG381.pdf, но все они, похоже, фиксированы, несимметричные или дифференциальные (на стороне площадки)
Я попытался создать экземпляр OBUF и OBUFDS, но не нашел способа мультиплексировать выходы bufs в один пэд или объединить их до или как часть их ассоциации с пэдом. Подключение соседних пэдов для формирования дифференциальных выходов/входов кажется полностью скрытым, как и следовало ожидать, но также, по-видимому, предотвращает использование OBUF для чего-либо, кроме дифференциальной функции, в которой он не нуждается. как таковой...
Что мне нужно:
SELECTABLE_SINGLE_DIFF_OBUFDS #(
.IOSTANDARD ("LVDS_33")
) my_buf (
.I (my_signal), // logic input (fabric side)
.IO (diff_p_out), // Single ended o/p or Differential +ve (to pin)
.IOB (diff_n_out), // Differential -ve (to pin)
.MODE (my_mode == 1) // mode = 0, single ended output
// mode = 1, differential output
);
Должно быть что-то, когда вы создаете экземпляр OBUF или OBUFDS, который настраивает дифференциальные возможности базового блока SelectIO, я думаю, что я ищу способ доступа к базовому блоку из Verilog, чтобы я мог управлять конфигурацией блока ввода-вывода из другая логика в FPGA.