Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задержка сигнала на Verilog
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
sidy
Добрый день.

Есть клок с частотой 10 МГц. И есть сигнал с произвольной скважностью, частотой 5 кГц. Необходимо данный сигнал задержать на 5 мкс. Возможно ли это сделать на Verilog? (Сильно не пинайте, Verilog и ПЛИС пока только осваиваю).
RobFPGA
Приветствую!
Цитата(sidy @ Jul 9 2018, 08:06) *
Есть клок с частотой 10 МГц. И есть сигнал с произвольной скважностью, частотой 5 кГц. Необходимо данный сигнал задержать на 5 мкс. Возможно ли это сделать на Verilog? (Сильно не пинайте, Verilog и ПЛИС пока только осваиваю).
Пинать пока не будем - так слегка похлопывать sm.gif
Вам это для чего нужно ? Для использования в симуляции или для реальной (в возможном будущем) железки? Если для железки то просто кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных wink.gif )

Удачи! Rob.
sidy
Цитата(RobFPGA @ Jul 9 2018, 08:53) *
Приветствую!
Пинать пока не будем - так слегка похлопывать sm.gif
Вам это для чего нужно ? Для использования в симуляции или для реальной (в возможном будущем) железки? Если для железки то просто кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных wink.gif )

Удачи! Rob.

Мне для реального железа.
andrew_b
Цитата(RobFPGA @ Jul 9 2018, 08:53) *
кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных wink.gif )
Квартус, например, сам умеет делать сдвиговый регистр на кольцевом буфере. Это вариант для ленивых и жадных.
blackfin
Цитата(andrew_b @ Jul 9 2018, 09:44) *
Квартус, например, сам умеет делать сдвиговый регистр на кольцевом буфере. Это вариант для ленивых и жадных.

Vivado тоже так умеет:
Цитата
SRL_STYLE instructs the synthesis tool on how to infer SRLs that are found in the design. Accepted values are:
...
block: The tool infers the SRL inside a block RAM.
-------
SRL_STYLE Examples (Verilog):

(* srl_style = "block" *) reg [16:0] my_srl;

Maverick
на vhdl

Код
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

entity delay_line is
generic(
  W                 : integer := 8;    -- data width
  L                 : integer := 1200);  -- delay length, shall be > 3
port(
  i_clk             : in  std_logic;
  i_sync_reset      : in  std_logic;
  i_data            : in  std_logic_vector(W-1 downto 0);
  o_data            : out std_logic_vector(W-1 downto 0));
end delay_line;

architecture rtl of delay_line is

type t_ram is array (L-2 downto 0) of std_logic_vector(W-1 downto 0);
signal m_ram : t_ram;

signal r_addr_wr         : integer range 0 to L-2;
signal r_addr_rd         : integer range 0 to L-2;
signal r_enable_read     : std_logic;

begin

p_write : process (i_clk)
begin
  if rising_edge(i_clk) then
    if(i_sync_reset='1') then
      r_addr_wr      <= 0;
      r_enable_read  <= '0';
    else
      m_ram(r_addr_wr) <= i_data;
      if(r_addr_wr<L-2) then
        r_addr_wr      <= r_addr_wr + 1;
      else
        r_addr_wr      <= 0;
        r_enable_read  <= '1';       -- enable reading section
      end if;
    end if;
  end if;
end process p_write;

p_read : process (i_clk)
begin
  if rising_edge(i_clk) then
    if(i_sync_reset='1') then
      r_addr_rd      <= 0;
    else
      if(r_enable_read='1') then
        o_data         <= m_ram(r_addr_rd); -- additional delay
        if(r_addr_rd<L-2) then
          r_addr_rd      <= r_addr_rd + 1;
        else
          r_addr_rd      <= 0;
        end if;
      end if;
    end if;
  end if;
end process p_read;


end rtl;

RobFPGA
Приветствую!

Цитата(Maverick @ Jul 11 2018, 08:52) *
...
С учетом того что в большинстве FPGA память позволяет считать старое значение из той же ячейки куда пишешь можно обойтись одним указателем чтения/записи.

Удачи! Rob.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.