Перейти к содержанию

Задержка сигнала на Verilog

Добрый день.

 

Есть клок с частотой 10 МГц. И есть сигнал с произвольной скважностью, частотой 5 кГц. Необходимо данный сигнал задержать на 5 мкс. Возможно ли это сделать на Verilog? (Сильно не пинайте, Verilog и ПЛИС пока только осваиваю).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Есть клок с частотой 10 МГц. И есть сигнал с произвольной скважностью, частотой 5 кГц. Необходимо данный сигнал задержать на 5 мкс. Возможно ли это сделать на Verilog? (Сильно не пинайте, Verilog и ПЛИС пока только осваиваю).
Пинать пока не будем - так слегка похлопывать :)

Вам это для чего нужно ? Для использования в симуляции или для реальной (в возможном будущем) железки? Если для железки то просто кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных ;) )

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Приветствую!

Пинать пока не будем - так слегка похлопывать :)

Вам это для чего нужно ? Для использования в симуляции или для реальной (в возможном будущем) железки? Если для железки то просто кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных ;) )

 

Удачи! Rob.

Мне для реального железа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
кольцевой буфер на 5us/100ns=50 элементов (счетчик и блок памяти). Ну или сдвиговый регистр (для ленивых и нежадных ;) )
Квартус, например, сам умеет делать сдвиговый регистр на кольцевом буфере. Это вариант для ленивых и жадных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Квартус, например, сам умеет делать сдвиговый регистр на кольцевом буфере. Это вариант для ленивых и жадных.

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;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на 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;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

...
С учетом того что в большинстве FPGA память позволяет считать старое значение из той же ячейки куда пишешь можно обойтись одним указателем чтения/записи.

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация