FPGA firmware example for DC1996A — LTC2323/LTC2321 evaluation board

Для одного проекта купил недавно отладочную плату DC1996A для Dual 16-Bit 5Msps АЦП LTC2323-16, это двухканальный 16-и битный АЦП с частотой семплирования 5 МГц. Плата удобна еще тем, что на ней установлена FPGA Cyclone III — EP3C5E144C7 и можно сделать небольшой алгоритм управления реального времени прямо в ней. К сожалению, примера прошивки FPGA для чтения данных из АЦП не было, и пришлось сочинять самому. Выкладываю на общее обозрение.
dc1996a-a

 

Скачать исходный код (Verilog, проект для quartus 13)

Некоторые технические подробности:

  • используется PLL для получения частоты 200 МГц из такового генератора 50 МГц
  • реально полученная частота выборки чуть меньше — 4.8 MSPS (210 ns). достичь большего достаточно проблематично, потому что тайминги имеют дробные задержки
  • все сигналы интерфейса к LTC2323-16 — CMOS (также на плате имеется возможность использовать LVDS, но надобности в этом не было)
  • сам модуль в Verilog называется ADC.v, вот его подключение
    ADC adc
    (
      .Clk(ClkPll),
      .SCLK(SCLK),
      .nCONV(nCONV),
      .SDO1(SDO1),
      .SDO2(SDO2),
      .SCLKIN(SCLKIN),
      .Data1(iADC1),
      .Data2(iADC2)

    );

  • соответсвенно порты Data1 и Data2 — это данные двух каналов АЦП.
  • внутри модуля реализована машина состояния, в которой сначала идет пауза 15 ns, потом включается nCONV на 30 ns, потом еще одна пазуа 10 ns и чтение данные импульсами по SCLK длительностью 5 ns/5 ns (10 ns период)

Вот диаграмма моделирования Icarus Verilog, поясняющая сигналы (iData1, iData2 — это переменные из Testbench в моделирующие значения АЦП)

unnamed

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s