Jump to content

    

yudu

Участник
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Обычный

Recent Profile Visitors

306 profile views
  1. Кстати сделал этот проект по двум ТТЛ 3.3V проводам, один клок и один данные. Все работает. А диф. пары нет. Тоесть кроме посылок синхронизированных данных по линииям lvds, нужно отдельно давать синхронизацию для плиса на время этих посылок или даже чуть раньше. Выбрать еще одну диф. пару и раньше начала посылки запускать синхронизацию? А частоту синхры брать какую?
  2. Cyclone EP3C5E144. Питание подключено всегда, синхронизация плиса, она же синхронизация данных для lvds, идет пачками. Но если их нет. как быть с двумя витыми парами? уже пробую просто получить меандр на "ok" - обычный 3.3V пин из клока, с входной частотой inclk около 1МГц и не получается на осциллографе только длительность пачки такая же, а импульсы разной скважности LIBRARY ieee; USE ieee.std_logic_1164.all; -- Entity Declaration ENTITY priem IS -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! PORT ( inclk : IN STD_LOGIC; indat : IN STD_LOGIC; data : out STD_LOGIC :='0';-- ëèíèÿ äàííûõ s1,s2: out STD_LOGIC:='0' ); -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! END priem; -- Architecture Body ARCHITECTURE priem_architecture OF priem IS signal ok:STD_LOGIC:='0'; BEGIN --------------------------------------------------------------------------------------------- process (inclk) begin if rising_edge(inclk) then ok<=not ok; end if; end process; -------------------------------------------------------------------------------------------- s1<=ok; END priem_architecture; lvds нужно однозначно-условие. Как можно по двум диф. парам давать синхрониз. данные на плис вместе с синхронизацией плиса? Получается нужно ваять десериализатор самому. Главный вопрос как ловить границы (или старт/стопы). И повторю что заводя диф. пары inclk и indat сквозь плис на два 3.3 V выходных пина, получаю четкие копии и клока и данных отправляемые с передатчика в lvds.. В чем дело пока не понимаю
  3. Cyclon3. На проводах никого кроме 2-х плисов. Синхронизация 64 периода, 7 байт данных и 1 адресс. Эта синхронизация для диф. пары данных и для работы самого плиса. Скорость передачи 100Мб/c. Для ALTLVDS нужен PLL, для которого в свою очередь нужно время для запуска. Нужно городить самому. Есть предложения?
  4. Все дело в том, что канал LVDS должен давать данные пачками. После передачи должен быть основной режим для остальной части схемы, а для плиса наступает режим молчания(подведено только питание). И еще, работа плиса должна на момент приема тактироваться сигналом клок(clk), внешнего кварца нет. Data приходит на выводы 128/129, а клок на 49/50.
  5. Кто проектировал канал LVDS помогите! Соединяю два плиса Cyclone3 по lvds. Передатчик пашет, а вот на приемнике не могу считать данные. Имею две диф. пары, одна DATA и одна CLK. Все вроде бы обозначил как надо. Снимаю принятые данные и клок на линейные выводы - точная копия того что давал на передачу. Но вот зацепить клок внутри приемника не могу, не получается даже сосчитать импульсы. Другим словом в коде сигнал OK меняется раньше чем 64 импульса клока..:( LIBRARY ieee; USE ieee.std_logic_1164.all; -- Entity Declaration ENTITY priem IS -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! PORT ( inclk : IN STD_LOGIC; indat : IN STD_LOGIC; data : out STD_LOGIC :='0';-- линия данных buff : out STD_LOGIC_VECTOR(55 downto 0):=x"00000000000000"; --data dly upravlyemogo ustroystva st,s1,s2: out STD_LOGIC:='0'; C : out STD_LOGIC :='0'; EN : out STD_LOGIC_vector(0 to 1):=b"00" ); -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! END priem; -- Architecture Body ARCHITECTURE priem_architecture OF priem IS signal adr:STD_LOGIC_vector (3 downto 0):=x"5";-- АДРЕСС ПРИЕМНИКА signal datbuf:STD_LOGIC_VECTOR(0 to 63):=x"0000000000000000"; -- adres + data signal id,ic:STD_LOGIC:='0'; signal ok,pr_adr,c1:STD_LOGIC:='0'; signal sta:STD_LOGIC:='0'; --сигнал старт-бита / сброс передачи данных BEGIN id<=indat; ic<=inclk; --прием старт-бита / сброс передачи данных --при выполнении условия приема старт-бита --на линии STA появляется импульс --priem start bita --------------------------------------------------------------------------------------------- process (id,ic) variable i: integer:=0; begin if (ic='0') then i:=0; sta<='0'; end if; if ic='1' then if (id='0' and i=0) then i:=1; elsif (id='1' and i=1) then i:=2; elsif (id='0' and i=2) then sta<='1'; end if; end if; end process; --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- process (sta,ic) --запись данных variable i: integer:=0; begin if (ic'event and ic='1') then if i<64 then datbuf(i)<=id; i:=i+1; if i=64 then ok<=not ok; end if; end if; end if; if sta='1' then i:=0; end if; end process; --------------------------------------------------------------------------------------------- st<=sta; s1<=ic; s2<=ok; END priem_architecture;