Можно ли переключаться между несимметричным и дифференциальным вводом-выводом «на лету» (после настройки) в Xilinx Spartan-6 FPGA

Я пишу код 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.


person FunkyLobster27    schedule 05.08.2019    source источник
comment
Большинство односторонних входов/выходов не предназначены для работы с дифференциальными входами/выходами и наоборот. Из-за этого ПЛИС обычно подключают только одиночные входы/выходы к одиночным контактам. Чтобы сделать то, что вы просите, вероятно, потребуется какой-то пользовательский аналог, для которого потребуется собственный чип/ASIC. Какая необходимость переключаться между ними на лету?   -  person l Steveo l    schedule 06.08.2019
comment
@Steveo - спасибо за ваши комментарии, да, я понимаю, что вы говорите - это кажется необычным. Что бы это ни стоило, причина, по которой я исследую это, заключается в том, что нашему клиенту нужен один образ FPGA, который позволяет перемещать платы между двумя буровыми установками без перепрошивки. На одной установке банк 2 подключается к ЦАП с дифференциальными входами данных, а на другой установке банк 2 подключается к 12 парам RX/TX, все из которых несимметричные. Настоящая проблема здесь в том, что, поскольку на нем есть FPGA, ожидается, что «он просто справится со всем» правильно — на данный момент они получают 2 изображения.   -  person FunkyLobster27    schedule 06.08.2019
comment
Понял. Одна вещь, которая может быть возможной (при условии, что эти платы теряют питание между переключением установок), состоит в том, чтобы иметь вывод, который является высоким для одного типа установки и низким для другого. Этот контакт используется, чтобы решить, какое изображение будет мигать. Это предполагает, что вы можете обрабатывать несколько изображений на некоторой флэш-памяти и/или добавить некоторую логику, чтобы выбрать ее при включении питания. Удачи!   -  person l Steveo l    schedule 06.08.2019


Ответы (1)


Пока вам нужны только дифференциальные выходы, вы, вероятно, можете просто использовать два несимметричных зарегистрированных выхода и инвертировать отрицательный выход.

person Timmy Brolin    schedule 08.08.2019