реклама на сайте
подробности

 
 
> Чтение данных быстрого АЦП, Поделитесь опытом
Titus
сообщение Apr 27 2007, 11:18
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 12-07-06
Пользователь №: 18 765



Привет всем!

Поделитесь опытом, посоветуйте.

Есть быстрый АЦП (ad9410) и ПЛИС.
АЦП мультиплексирует выходные данные на два порта А и В, вырабатывая при этом тактовый сигнал.
По спадающему фронту этого сигнала данные выставляются на порт А, по возрастающему на порт В и т.д. Таким образом достигается быстродействие в два раза большее, чем для каждого из портов в отдельности.

Внимание вопрос: как принять эти данные в ПЛИС?

Буду благодарен за высказанные идеи.
Прикрепленные файлы
Прикрепленный файл  AD9410_0.pdf ( 305.14 килобайт ) Кол-во скачиваний: 83
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sazh
сообщение Apr 27 2007, 17:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Если же обеспечивается разрядность данных 30 (32 бита), то оптимальнее чередующийся режим с группированием по 3 выборки в один пакет исходящих данных, т.к. снижается частота исходящего потока в 3 раза.
///////////////////////
Можно добавить, чтобы снизить частоту потока в три раза, нужно иметь разрядность данных 60.
Принимают на сдвигающие регистры, четный нечетный,перезаписывают уже фифо глобальным клоком.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_unsigned.all;

entity rx_ddr is
port (
inclock_gated : in std_logic;
datain_a : in std_logic_vector (9 downto 0);
datain_b : in std_logic_vector (9 downto 0);
dataout_pos : out std_logic_vector (29 downto 0);
dataout_neg : out std_logic_vector (29 downto 0)
);
end entity;


architecture rx_ddr_arch of rx_ddr is

signal datain_pos : std_logic_vector (29 downto 0);
signal datain_neg : std_logic_vector (29 downto 0);

begin

process (inclock_gated)
begin
if (inclock_gated'event and inclock_gated = '1') then
datain_pos <= datain_a & datain_pos (29 downto 10);
end if;
end process;

process (inclock_gated)
begin
if (inclock_gated'event and inclock_gated = '0') then
datain_neg <= datain_b & datain_neg (29 downto 10);
end if;
end process;

dataout_pos <= datain_pos;
dataout_neg <= datain_neg;

end architecture;
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016