Jump to content

    

Maverick_

Модераторы
  • Content Count

    3613
  • Joined

Community Reputation

10 Хороший

About Maverick_

  • Rank
    я только учусь...
  • Birthday 01/12/1979

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

23907 profile views
  1. Можно на базе двухпортовой памяти организовать двойной буффер
  2. Добрый день

    Если видите что человек продает откровенный шлак, который долго не проработает, то пишите покупателю свои мысли в личку.

    Иначе продавец очень сильно злиться как сейчас...

     

    1. fpga_student

      fpga_student

       

      Юзеры что не должны знать про этот прикол ?

      Это офигенный осцилл и я выбивал его себе на работе год. А потом он сдох новый и я ничего не смог с ним сделать, после платного ремонта в Присте он проработал 2 дня(((

       

      В личке же меня этот лихой парень назвал мудаком. Я ему ни одного слова плохого не сказал.

       

      И потом, это не просто Лекрой. Это еще и битый Лекрой. Как нужно всадить прибор, чтобы из него вырвать кусок ? Именно поэтому возможно на 20Gs прибор он ставит такой ценник.

       

      Возможно эта штука уже глючит....

       

  3. fpga_student и Maxim_S Прекратили ссориться!!!
  4. возможно это натолкнет на мысль - Ping Pong FIFO http://cospandesign.github.io/fpga,fifo/2016/05/02/ppfifo.html (работоспособность описания не проверял) PS Идея использовать плюсы двойного буфера (давблбуффер) . Для хранения данных со всех источников использовать даблбуфер. Хранить начальные адреса пакетов (вместе с длиной пакета) в отдельной памяти - можно это сделать для каждого источника отдельно. Чтобы оперативно можно производить пактное чтение с даблбуффера для каждого источника. Отдельно через регистр передавать количество пакетов записанных в даблбуффер. Сбрасывать указатели адресов памяти как только даблбуффер переключился, например. Это просто как мысли ...
  5. как самый простой способ фильтрации это обычная пауза. внешняя борьба с дребезгом например триггер шмидта...
  6. Спасибо, Мур такой термин как вертикальный счетчик слышу впервые :)
  7. Имеют, плюс еще надо учитывать пологие фронты...
  8. Я не уточнил - вопрос к деталировке. Уровень рисования цифровой схемы это счётчик, дешифратор, мультиплексор и так далее...
  9. Вот пример описание ШИМа (Широтно-импульсная модуляция (ШИМ, или Pulse-Width Modulation, PWM) Первый процесс описывает счетчик который считает 1 период ШИМ сигнала, второй процесс компаратор, третий процесс позволяет менять период сигнала шима и длительность нуля library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use IEEE.NUMERIC_STD.ALL; entity shim is generic ( N : natural := 3 ); Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; en : in STD_LOGIC; --load : in STD_LOGIC; Period : in STD_LOGIC_VECTOR (N-1 downto 0); Duty_cycle : in STD_LOGIC_VECTOR (N-1 downto 0); ready_period : out STD_LOGIC; out_shim : out STD_LOGIC ); end shim; architecture Behavioral of shim is signal count_shim : STD_LOGIC_VECTOR (N-1 downto 0); signal reg_Period : STD_LOGIC_VECTOR (N-1 downto 0); signal reg_Duty_cycle : STD_LOGIC_VECTOR (N-1 downto 0); begin process (all) begin if rst = '1' then count_shim <= (others=>'0'); elsif(rising_edge(clk)) then if en = '1' then if count_shim = reg_Period then ready_period <= '1'; count_shim <= (others=>'0'); else count_shim <= count_shim + std_logic_vector( to_unsigned(1, count_shim'length )); ready_period <= '0'; end if; end if; end if; end process; process (all) begin if rst = '1' then out_shim <= '0'; elsif(rising_edge(clk)) then if count_shim < reg_Duty_cycle then out_shim <= '1' ; else out_shim <= '0'; end if; end if; end process; process (all) begin if rst = '1' then reg_Period <= (others=>'0'); reg_Duty_cycle <= (others=>'0'); elsif(rising_edge(clk)) then if ready_period = '1' then reg_Period <= Period; reg_Duty_cycle <= Duty_cycle; end if; end if; end process; end Behavioral; ниже пример схемы детектирования концевика (коментариев не даю) - как пример --detect_sensor library ieee; use ieee.std_logic_1164.all; --use ieee.std_logic_unsigned.all; use IEEE.NUMERIC_STD.ALL; entity detect_sensor is generic ( N : natural := 32 ); Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; sensor : in STD_LOGIC; en_detect : in STD_LOGIC; sensor_rising : out STD_LOGIC; sensor_falling : out STD_LOGIC ); end detect_sensor; architecture Behavioral of detect_sensor is signal opto_sensor_shift_r : unsigned (N-1 downto 0); signal reg_sensor_falling, reg_sensor_rising : STD_LOGIC; begin sensor_rising <= reg_sensor_rising; sensor_falling <= reg_sensor_falling; process(all) begin if(rst = '1') then opto_sensor_shift_r <= (others=>'0'); elsif(rising_edge(clk)) then opto_sensor_shift_r <= opto_sensor_shift_r(N-2 downto 0) & sensor; end if; end process; process(all) begin if(rst = '1') then reg_sensor_rising <= '0'; reg_sensor_falling <= '0'; elsif(rising_edge(clk)) then if en_detect = '1' then if opto_sensor_shift_r((N-1) downto (N/2)) = to_unsigned(((2**(N/2))-1), N/2) and opto_sensor_shift_r((N/2-1) downto 0) = to_unsigned(0, N/2) then reg_sensor_rising <= '1'; else reg_sensor_rising <= '0'; end if; if opto_sensor_shift_r((N-1) downto (N/2)) = to_unsigned(0, N/2) and opto_sensor_shift_r((N/2-1) downto 0) = to_unsigned(((2**(N/2))-1), N/2) then reg_sensor_falling <= '1'; else reg_sensor_falling <= '0'; end if; end if; end if; end process; end Behavioral; Из-за этого я и пишу что нужно описывать цифровую схему ...
  10. я не категорично отношусь ))) просто по другому нельзя делать разработку на FPGA )))
  11. правильно, дальше на базе примитивной логики тригеров(регистров) и комбинационной логики (and or xor и другие логические операторы) надо описать на VHDL этот делитель частоты. Еще как помощь может быть для Вас это Template там Вы можете найти примеры описаний счетчиков, блоков памяти, FSM и другие... Далее написать тестбенч и проверить работу...
  12. Ок, начнем с простого, как Вы плаируете например с 50МГц сделать 100Гц? Может лучше работать на на тактовой частоте, есть же сигналы enable?
  13. Vhdl также как и verilog это как карандаш в руках хужника. Если художник не умеет рисовать, то карандаш не поможет. Предлагаю начать рисовать цифровую схему на листочке. Потом опишете ее на vhdl и промолелируете, т.е. проверите ее правильность работы. Когда симуляция покажет что схема работает тогда начнёте проверки на плате. Иначе никак... PS GRAFCET у FESTO и в TIA PORTAL это высокоуровневые языки от производителей. Сравнивать их с Vhdl/verilog не коректно мягко говоря. Наверное модули которые программируются с помощью этих языков сложные цифровые устройстава.
  14. Вы не правильно сформулировали вопрос, главный вопрос какую цифровую схему вы видите для реализации описания в FPGA вашей потребности Что насчет цифоровой схемы? С моделированием цифровых схем "дружите"? В современных платах FPGA тактовая частота подается от 50МГц и выше. Дальше Ваше описание цифровой схемы которое делит тактовую частоту до 100Гц (если Вы видите в этом необходимость), формирует импульсы для шаговых двигателей и обрабатывает концевики...
  15. На fpgadeveloper нет реализации (во всяком случае я ее не нашел). Там идет ссылка на сайт https://www.intelliprop.com/ipc-nv164-hi/ И я уверен что стоит эта корка не дешево...