Jump to content

    

ADA007

Свой
  • Content Count

    217
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ADA007

  • Rank
    Местный
  • Birthday 09/28/1987

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1849 profile views
  1. Есть камера, купленная на AliExpress-e на чипе Hi3516D с матрицей OmniVision OV4689. Основной вопрос: как получить видеопоток или снимок с матрицы в файл? Перепробовал различные варианты - но безуспешно. Установлена на камеру Sofia - через нее все и работает, а хотелось бы получить данные с матрицы непосредственно в файл. Может кто-то уже решал такую или подобную задачу? Буду рад любым советам или предложениям. P.S. Пробовал ffmpeg, скомпилил, натравил на /dev/viu - тот выругался и ничего не выдал на выходе...куда копать?
  2. А вот если подменить строку для выдачи data_out на => data_out <= to_stdlogicvector(to_bitvector(din) ror slash); то все прекрасно синтезится в ISE и quartus-e ... вроде бы то же самое написано по функционалу, но видать как-то там эти функции так написаны, что синтезатору они понятнее описаны.
  3. Проблема действительно не понятная...т.к. эта же конструкция в ISE синтезится на "УРА". так к примеру, кто ходчет попробовать код: library ieee; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity xxxx is port ( clk : in std_logic; rst : in std_logic; slash : in integer range 0 to 15; din : in std_logic_vector (15 downto 0); data_out : out std_logic_vector (15 downto 0) := X"0000" ); end xxxx; architecture rtl of xxxx is signal reg_empty : STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0'); begin process (clk) begin if clk'event and clk = '1' then if rst = '1' then data_out <= X"0000"; else data_out <= din(slash-1 downto 0) & din(15 downto slash); end if; end if; end process; end architecture; В ISE 14.7 проверял - синтезируется, в QUARTUS 11.0 - выдает ошибку : Error (10394): VHDL error at xxxx.vhd: left bound of range must be a constant. Как объяснить Quartus-у , что эту конструкцию нужно построить на мультиплексорах...а не плеваться на нее...?! :laughing:
  4. Вот посмотрите (эту) статью. Как по мне, это практически исчерпывающие сведения о дешевых программаторах для Xilinx.
  5. Микросхему PHY использую LAN8810. Частота, на которой будет работать часть схемы приемо-передатчика 200 МГц планируется. Собственно в этом-то и суть, чтоб понять как подключить правильно. Прошу помощи в поиске вариантов...+ обоснований к ним, почему это правильно. Частоту 2,5 МГц - может и нет смысле пропускать через DCM. А вот 25 МГц и 125МГц - мне кажется, что есть смысл. Не зря ведь во всех примерах Xilinx пропускают системную частоту, на кот. работает проект, через DCM/PLL. Мне казалось, что это для того, чтоб компенсировать ppm генератора. Для PHY то же установлены пределы ppm, это ж не идеальный генератор. Или я заблуждаюсь? И можно частоту от PHY напрямую заводить, даже не через GBUF??? Да, можно Но почему тогда в указанных мной выше примерах (а может и не только в них, а еще где-то) сделано совсем наоборот и эта частота заходит на весь тракт приема, как клок? Или это они просто неправильно сделали? Или в ПЛИС этот момент вообще не принципиален?
  6. Спасибо за ответ. Про ресурс OpenCores я знаю. Просто там слишком навороченный МАС, мне и половины его функционала не нужно. Однако, основные вопросы были не по этому поводу. Возможно я не достаточно четко выразил свою мысль в вопросах. Постараюсь поянить: 1. Вопрос заключается в том, что многие делают именно так (tx_clk и rx_clk используют как тактовый сигнал для входных/выходных регистров работы с PHY, потом мучаются с клоковыми доменами). Но я не встречал еще реализации в которой бы tx_clk и rx_clk использовались только как CE для входных/выходных регистров приема/отправки данных с PHY. Собственно сам вопрос : почему реализованно именно так? может есть какие-то особенности? не лучше ли реализовать так, как я предложил? как вообще правильно клоки с PHY использовать? 2. Для реализации 10/100/1000 нужно заводить разные частоты на МАС ПЛИС 2,5МГц ; 25МГц и 125 МГц .... Вопрос: как правлиьно это сделать , если DCM/PLL ниже 5 МГц не воспринимает?
  7. Приветствую всех! Есть несколько вопросов к гуру по реализации Ethernet на FPGA. Я рассматривал несколько примеров реализации МАС-а для ПЛИС (один - от mentor-a, что на ftp лежит и другой с сайта fpga4fun) и меня смутило несколько моментов: 1- Это то, что частоты tx_clk и rx_clk, которые выходят из PHY используются для тактирования регистров, соответствующих веток ПО. Не правильнее было бы использовать для тактирования системную частоту (при условии, что она выше, чем tx_clk и rx_clk) для тактирования регистров, а уже tx_clk и rx_clk использовать в качестве сигнала разрешения? В чем подвох? или я что-то упустил? :laughing: * Плюс к выше описанному мы получаем разные клоковые домены по веткам приема и передачи в МАС. Потому, что от PHY tx_clk формируется от внешнего кварцевого резонатора, а rx_clk - из несущей частоты в линии связи. Естественно они будут немного отличаться друг от друга, что добавляет проблем. 2- Это то, что для тактирования частотами tx_clk и rx_clk было бы неплохо пропустить их предварительно через DCM или хотяб через PLL. Однако, (не знаю , как в других сериях ПЛИС), в Spartan6 на DCM нельзя подать частоту ниже 5 МГц. А для 10 Мб\с по MII надо как раз 2,5 МГц. И как тут быть , если надо реализовать 10\100 МБ\с?
  8. Программа для прошивки называется iMpact ... в ПЛИС зашивается *.bit файл, в флэш - *.mcs файл..его нужно предварительно в этой же программе сделать из bit-файла
  9. В общем так и сделал в итоге. Как-то оно работает...но фронты осциллом нет возможности пока что посмотреть, а на временной sdf модели они относительно друг друга на 6 пс разбегаются. В общем DDS вроде бы работает, но на будущее надо будет или singl-ended тактирование далать или еще лучше от отдельного генератора тактировать. Любые попытки обмануть ISE и подсунуть в банку с питанием 3,3 стандарт 2,5 LVDS или LVCMOS ... я все варианты там перебрал - ну никак не хочет он воспринимать это безобразие. Спасибо всем за помощь.
  10. Т.е. правильно будет, если я возьму с DCM CLK0 и CLK180 ...пропущу их через два триггра, тактируя их частотой 200 МГц и запихаю их в IOB? Если для выходных сигналов, кот. выходят из триггеров указать в ucf INST "signal_name" IOB = TRUE; - от это значит, что он будет запихнут в IOB, я правильно понял?
  11. тогда на PAR fail-ится ERROR:Place:864 - Incompatible IOB's are locked to the same bank 5 Conflicting IO Standards are: IO Standard 1: Name = LVDS_25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: RCLK_N_50_OUTP RCLK_P_50_OUTP IO Standard 2: Name = LVCMOS33, VREF = NR, VCCO = 3.30, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: MRST_OUTP
  12. А что нужно написать?...на LVDS_33 он тоже ругается, что не поддреживается! :rolleyes:
  13. Да...я понимаю, что плохо..но эт требование заказчика. Написал в коде = i_OBUFDS_50 : OBUFDS generic map ( CAPACITANCE => "NORMAL", -- "LOW", "NORMAL", "DONT_CARE" IOSTANDARD => "LVDS_25") -- "DEFAULT" port map ( O => RCLK_P_50_OUTP, -- Diff_p output OB => RCLK_N_50_OUTP, -- Diff_n output I => clk_50_s -- Buffer input ); При этом в UCF = NET "RCLK_P_50_OUTP" LOC = B15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; NET "RCLK_N_50_OUTP" LOC = A15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; Получил FAIL в MAP два аналогичных для P и N сигнала = ERROR:Pack:2907 - The I/O component "RCLK_N_50_OUTP" has an illegal IOSTANDARD value. The IOBS component is configured to use differential signaling and can not use single-ended IOSTANDARD value LVCMOS33. Two ways to rectify this issue are: 1) Change the IOSTANDARD value to a differential standard. 2) Correct the I/O connectivity by instantiating a single-ended I/O buffer. В Pin Planer-e можно выбрать стандарты только на 2,5 LVDS и др. ... а на 3.3 нет ничего подходящего. И как быть?
  14. Доброго всем времени суток. Столкнулся с задачей выдачи дифференциального тактового импульса на внешнюю микруху. Вроде бы ниечго такого, а как это сделать правильно? ПЛИС использую Virtex4 тактовая 200 МГц тактировать надо AD9854asq частотой 50 МГц двумя развернутыми относительно друг друга на 180 сигналами.... в ДШ написано 3,3 CMOS level. Банк ПЛИС, подключенный к ногам такторования питается от 3.3В. 1) Думал в начале использовать OBUFDS - который преобразовует singl ended в differential - но тут оказался облом, походу 3,3 он не поддерживает! или я что-то упустил? 2) Можно конечно же прям с DCM взять CLK0 и CLK180 и пустить их на ноги ПЛИС, но надо фронты чем-то выровнять в таком случае. Как это правильно сделать? На форуме наткнулся на подобную тему .. но у меня не получилось LVDS_25 запихать в LVCMOS33 ... Кто в курсе, подскажите, как правильно...а то я уже 2-й день ищу....