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

 
 
> LVDS DDR данные из АЦП в ПЛИС
Ar-han
сообщение Jun 30 2014, 18:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 12-09-11
Пользователь №: 67 135



Что не так делаю?
Почему вместо синуса вижу корявый меандр?
Не реагирует на изменение амплитуды сигнала.
С какой стороны младшие биты? (c D0 или с D6)
Тактирую ПЛИС по CLK_OUT от АЦП

АЦП ADS6145
http://www.ti.com/lit/ds/symlink/ads6145.pdf
Спасибо.




Код
   component IBUFGDS
  --    -- synopsys translate_off
      generic( DIFF_TERM : boolean :=  FALSE);
  --    -- synopsys translate_on
      port ( I  : in    std_logic;
             IB : in    std_logic;
             O  : out   std_logic);
   end component;
   attribute IOSTANDARD of IBUFGDS : component is "DEFAULT";
   attribute DIFF_TERM of IBUFGDS : component is "FALSE";
   attribute BOX_TYPE of IBUFGDS : component is "BLACK_BOX";
  
   component IBUFDS
      -- synopsys translate_off
      generic( DIFF_TERM : boolean :=  FALSE);
      -- synopsys translate_on
      port ( I  : in    std_logic;
             IB : in    std_logic;
             O  : out   std_logic);
   end component;
   attribute IOSTANDARD of IBUFDS : component is "DEFAULT";
   attribute DIFF_TERM of IBUFDS : component is "FALSE";
   attribute BOX_TYPE of IBUFDS : component is "BLACK_BOX";


begin

data_out <= out13 & out12 & out11 & out10 & out9 & out8 & out7 & out6 & out5 &
                out4 & out3 & out2 & out1 & out0 ;

clk_out <= USER_CLK;


   IBUFGDS_1 : IBUFGDS
      port map (I=>SMA_DIFF_CLK_IN_P,
                IB=>SMA_DIFF_CLK_IN_N,
                O=>USER_CLK);


   IBUFDS_1 : IBUFDS
      port map (I=>HDR2_28_SM_11_P,
                IB=>HDR2_26_SM_11_N,
                O=>DDR_1);
  
  
   IBUFDS_2 : IBUFDS
      port map (I=>HDR2_32_DIFF_3_P,
                IB=>HDR2_30_DIFF_3_N,
                O=>DDR_2);
....

process(USER_CLK)
begin

        if (USER_CLK = '1') then
      
        out0 <= DDR_0;
        out2 <= DDR_1;
        out4 <= DDR_2;
        out6 <= DDR_3;
        out8 <= DDR_4;
        out10<= DDR_5;
        out12<= DDR_6;
        

        elsif (USER_CLK = '0') then
        
        out1 <= DDR_0;
        out3 <= DDR_1;
        out5 <= DDR_2;
        out7 <= DDR_3;
        out9 <= DDR_4;
        out11 <= DDR_5;
        out13 <= DDR_6;

        end if;

end process;



Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
doom13
сообщение Jul 1 2014, 14:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Могу предложить, но для этого Вам понадобиться наладить SPI (если его пока нет), перевести АЦП в режим синхронизации, т.е. для регистра 0x0A записать в TEST PATTERNS режим Custom pattern (101) и в качестве Custom Pattern записать, например, 14'b10101010101010. На приёмной стороне принимаете Вашу тестовую посылку, смотрите, какие биты попутаны. Быстрее всёго они будут приниматься в неправильном порядке, но этот порядок будет сохраняться, тогда меняете местами в соответствии с вашей эталонной последовательностью и можно работать. Если порядок следования бит меняется от запуска к запуску (если тайминги плохо прописаны, то такое и будет), тогда делаете устройство которое при включении будет производить синхронизацию и подключать принимаемые биты в правильном порядке.

Цитата(Ar-han @ Jul 1 2014, 17:19) *
АЦП на 125 МГц, ломаю голову, где напутал биты.

Что делать уже написал, но попробуйте, для начала, и частоту понизить, чтоб хотя бы результат правильный получить, а потом будете поднимать.

Цитата(iosifk @ Jul 1 2014, 17:21) *
А уже потом говорить, что данные кривые...

Данные не кривые, просто принимаются неправильно, нужно поменять порядок следования бит и всё будет в порядке.
Go to the top of the page
 
+Quote Post
Ar-han
сообщение Jul 1 2014, 14:39
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 12-09-11
Пользователь №: 67 135



Цитата(doom13 @ Jul 1 2014, 18:31) *
Могу предложить, но для этого Вам понадобиться наладить SPI (если его пока нет), перевести АЦП в режим синхронизации, т.е. для регистра 0x0A записать в TEST PATTERNS режим Custom pattern (101) и в качестве Custom Pattern записать, например, 14'b10101010101010. На приёмной стороне принимаете Вашу тестовую посылку, смотрите, какие биты попутаны. Быстрее всёго они будут приниматься в неправильном порядке, но этот порядок будет сохраняться, тогда меняете местами в соответствии с вашей эталонной последовательностью и можно работать. Если порядок следования бит меняется от запуска к запуску (если тайминги плохо прописаны, то такое и будет), тогда делаете устройство которое при включении будет производить синхронизацию и подключать принимаемые биты в правильном порядке.


Что делать уже написал, но попробуйте, для начала, и частоту понизить, чтоб хотя бы результат правильный получить, а потом будете поднимать.



Спасибо! До SPI еще не добрался, и с моими темпами, похоже, не скоро ))
Генератор впаян, но есть возможность тактировать из вне.
Совет полезный, нужно будет попробовать. Жаль с ходу не ясно в чём баг.

Тут-то я правильно описал атрибут IDDR "OPPOSITE_EDGE"?
Код
       component IDDR
      -- synopsys translate_off
      generic( INIT_Q1 : bit :=  '0';
               INIT_Q2 : bit :=  '0';
               DDR_CLK_EDGE : string :=  "OPPOSITE_EDGE";
               SRTYPE : string :=  "SYNC");
      -- synopsys translate_on
      port ( D  : in    std_logic;
             CE : in    std_logic;
             C  : in    std_logic;
             S  : in    std_logic;
             R  : in    std_logic;
             Q1 : out   std_logic;
             Q2 : out   std_logic);
   end component;


Без входного сигнала:
Прикрепленное изображение


Сообщение отредактировал Ar-han - Jul 1 2014, 14:45
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 1 2014, 14:53
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Ar-han @ Jul 1 2014, 17:39) *
Жаль с ходу не ясно в чём баг.

Баг в том, о чём я писал. На линиях попутан порядок следования бит, вместо D0 принимается D1 и наоборот, это может быть и на других линиях D2-D3, D4-D5, и т.д. На кокой-то из линий данные могут приниматься и правильно. Для устранения этого явления в АЦП и предусмотрена возможность выдачи на выход эталонной последовательности, по которой можно поймать правильный порядок следования бит при старте и продолжать работу с правильными данными. По-хорошему, необходимо устройство, которое будет производить синхронизацию.
Советую запустить простейший SPI, это даст возможность увидеть, где и что перепутано.

Цитата(Golikov A. @ Jul 1 2014, 17:47) *
А у вас не с АЦП проблемы? В ветке армов обсуждалось, что если АЦПешене некоторых моделей не хватает времени на выборку оно начинает ступеньки рисовать и выбросы похожие на ваши...

Позвольте спросить, Вы работали с АЦП с похожим интерфейсом? Если нет, то не вводите в заблуждение.
Go to the top of the page
 
+Quote Post
Ar-han
сообщение Jul 1 2014, 17:53
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 12-09-11
Пользователь №: 67 135



Цитата(doom13 @ Jul 1 2014, 18:53) *
Баг в том, о чём я писал. На линиях попутан порядок следования бит


Попутан, попутан, да еще как! Половина пар не на своих местах были, половина в воздухе висела.
Прошу прощения, всех ввел в заблуждение своей невнимательностью. Всё исправил.
Завтра буду тестировать.

Есть еще вопрос по теме.
Собираю пакет данных и кидаю в двупортовую брам. А со стороны процессора PPC передаю указатель эту на область памяти функции, которая отсылает udp пакеты через lwip.

Как правильно расставить флаги заполнения области памяти?
Как оценить, сколько тактов требуется процессору, чтобы получив указатель на эту область памяти, скажем 40 кБайт, прочитать её?
Каким размером лучше разбить эту память по UDP пакетам?
Пока что тренировался с 1 кБайтом, проблем не было, всё влезает в один UDP пакет.
Может лучше на tcp/ip перейти?
Пока что работал с 100 мбитным каналом, хочу попробовать гигабитный. С чего начать?

Весь поток данных мне не нужен, только пакеты заданной длины по синхроимпульсу.
Спасибо.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ar-han   LVDS DDR данные из АЦП в ПЛИС   Jun 30 2014, 18:43
- - VladimirB   Цитата(Ar-han @ Jun 30 2014, 22:43) ...   Jun 30 2014, 19:54
|- - doom13   Цитата(VladimirB @ Jun 30 2014, 22:54) Ди...   Jun 30 2014, 20:39
||- - druzhin   У меня есть рабочие проекты на Spartan-6 по приёму...   Jul 4 2014, 18:42
||- - Ar-han   Цитата(druzhin @ Jul 4 2014, 22:42) У мен...   Jul 4 2014, 22:35
||- - doom13   Цитата(Ar-han @ Jul 5 2014, 01:35) О...   Jul 5 2014, 06:58
||- - Ar-han   Цитата(doom13 @ Jul 5 2014, 10:58) Откуда...   Jul 7 2014, 14:32
|||- - Ar-han   Цитата(Ar-han @ Jul 7 2014, 18:32) с...   Jul 8 2014, 07:07
||- - Ar-han   Цитата(doom13 @ Jul 5 2014, 10:58) в вари...   Jul 9 2014, 05:45
||- - doom13   Цитата(Ar-han @ Jul 9 2014, 08:45) П...   Jul 9 2014, 06:38
||- - doom13   Цитата(Ar-han @ Jul 9 2014, 08:45) Н...   Jul 9 2014, 07:11
||- - doom13   Цитата(Ar-han @ Jul 9 2014, 08:45) Т...   Jul 9 2014, 07:52
|- - Ar-han   Цитата(VladimirB @ Jun 30 2014, 23:54) ПЛ...   Jul 1 2014, 05:30
|- - doom13   Цитата(Ar-han @ Jul 1 2014, 08:30) П...   Jul 1 2014, 06:32
|- - Ar-han   Цитата(Ar-han @ Jul 1 2014, 09:30) X...   Jul 1 2014, 10:00
- - Ar-han   Цитата(Ar-han @ Jun 30 2014, 22:43) ...   Jul 1 2014, 13:08
|- - doom13   Долго же Вы понимали   Jul 1 2014, 13:20
|- - Ar-han   Цитата(doom13 @ Jul 1 2014, 17:20) Долго ...   Jul 1 2014, 13:59
|- - doom13   Цитата(Ar-han @ Jul 1 2014, 16:59) И...   Jul 1 2014, 14:11
|- - Ar-han   Цитата(doom13 @ Jul 1 2014, 18:11) Биты у...   Jul 1 2014, 14:19
- - iosifk   Цитата(Ar-han @ Jun 30 2014, 22:43) ...   Jul 1 2014, 14:21
|- - Ar-han   Цитата(iosifk @ Jul 1 2014, 18:21) А симу...   Jul 1 2014, 14:26
|- - Timmy   А я посоветую сначала запустить SPI и перевести АЦ...   Jul 1 2014, 16:08
- - Golikov A.   А у вас не с АЦП проблемы? В ветке армов обсуждало...   Jul 1 2014, 14:47
- - Golikov A.   ЦитатаПозвольте спросить, Вы работали с АЦП с похо...   Jul 1 2014, 16:22
|- - doom13   Цитата(Golikov A. @ Jul 1 2014, 19:22) Ну...   Jul 1 2014, 20:26
|- - Ar-han   Цитата(doom13 @ Jul 2 2014, 00:26) Но, во...   Jul 2 2014, 07:37
||- - doom13   Цитата(Ar-han @ Jul 2 2014, 10:37) П...   Jul 2 2014, 09:44
||- - doom13   Цитата(Ar-han @ Jul 2 2014, 10:37) И...   Jul 2 2014, 10:28
||- - Ar-han   Цитата(doom13 @ Jul 2 2014, 14:28) Судя п...   Jul 2 2014, 12:39
||- - doom13   Цитата(Ar-han @ Jul 2 2014, 15:39) Д...   Jul 2 2014, 12:50
|||- - Ar-han   Цитата(doom13 @ Jul 2 2014, 16:50) Если х...   Jul 3 2014, 04:43
||- - doom13   Цитата(Ar-han @ Jul 2 2014, 15:39) Я...   Jul 2 2014, 15:55
||- - Ar-han   Цитата(doom13 @ Jul 2 2014, 19:55) Чтение...   Jul 2 2014, 18:52
||- - doom13   Цитата(Ar-han @ Jul 2 2014, 21:52) С...   Jul 2 2014, 20:11
|- - Timmy   Цитата(doom13 @ Jul 2 2014, 00:26) но инт...   Jul 2 2014, 10:14
- - Golikov A.   дополнительный код - старший бит определяет знак. ...   Jul 3 2014, 06:46
|- - doom13   Цитата(Golikov A. @ Jul 3 2014, 09:46) М...   Jul 3 2014, 07:58
|- - Ar-han   Цитата(Golikov A. @ Jul 3 2014, 10:46) до...   Jul 3 2014, 19:57
- - Golikov A.   ЦитатаЭто, насколько я понимаю преобразование в пр...   Jul 4 2014, 05:47
|- - doom13   Цитата(Golikov A. @ Jul 4 2014, 08:47) Гл...   Jul 4 2014, 07:50
|- - Ar-han   Цитата(Golikov A. @ Jul 4 2014, 09:47) не...   Jul 4 2014, 09:19
- - Golikov A.   Цитатано если использовать прерывание от GPIO, как...   Jul 4 2014, 08:18
|- - doom13   Цитата(Golikov A. @ Jul 4 2014, 11:18) Сн...   Jul 4 2014, 16:37
- - Golikov A.   а ну да... это я действительно тупанул. Инверсия с...   Jul 4 2014, 10:39
|- - Ar-han   Цитата(Golikov A. @ Jul 4 2014, 14:39) Вы...   Jul 4 2014, 11:32
- - Golikov A.   ЦитатаПриведите пример подразумеваемого процессора...   Jul 4 2014, 16:45
|- - doom13   Цитата(Golikov A. @ Jul 4 2014, 19:45) LP...   Jul 4 2014, 17:34
- - Golikov A.   ЦитатаТут Вы не разобрались в предложенном вариант...   Jul 4 2014, 18:33
|- - doom13   Цитата(Golikov A. @ Jul 4 2014, 21:33) Я ...   Jul 4 2014, 19:35
- - doom13   А что там с режимом SDR CMOS, можете джампер переб...   Jul 7 2014, 20:09
- - Golikov A.   ЦитатаПодвигать фазу PLL скорее всего не получится...   Jul 7 2014, 20:22
|- - doom13   Цитата(Golikov A. @ Jul 7 2014, 23:22) Ну...   Jul 7 2014, 21:29
- - Golikov A.   Перейдите уже на FIFO в конце концов... Брать 2 ...   Jul 9 2014, 07:03
- - Golikov A.   ЦитатаУ меня есть пример констрейна для входного с...   Jul 9 2014, 07:17
- - Golikov A.   У меня нет времени и желания разбираться в предлож...   Jul 9 2014, 09:05
|- - doom13   Цитата(Golikov A. @ Jul 9 2014, 12:05) У ...   Jul 9 2014, 10:01
- - Golikov A.   FIFO 1. Размер отправляемого пакета - любой задает...   Jul 9 2014, 10:15
- - doom13   Цитата(Golikov A. @ Jul 9 2014, 13:15) Не...   Jul 9 2014, 10:52
- - doom13   Цитата(Golikov A. @ Jul 9 2014, 13:15) FI...   Jul 9 2014, 11:55


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 04:06
Рейтинг@Mail.ru


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