Jump to content
    

Тактирование схем производным сигналом

А как лучше делать, если нужны буферы по переднему и по заднему?

в топлевеле при инстансе инвертировать

Share this post


Link to post
Share on other sites

Можно по-русски? Инвертировать клок? Так как я написал, или более разумным образом?

 

----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.RS_PACK.all;
entity GF_BUF is
    generic (front: std_logic:='1'); --По фронту какого сигнла работаем
     Port ( CLK : in  STD_LOGIC;
           D : in  STD_LOGIC_VECTOR (N_BITS downto 0);
           Q : out  STD_LOGIC_VECTOR (N_BITS downto 0);
           RST : in  STD_LOGIC);
end GF_BUF;

architecture Behavioral of GF_BUF is
signal RISE,FALL: STD_LOGIC_VECTOR (N_BITS downto 0);
begin
RISE_P:    process (CLK,RST)
    begin
        if (RST='1') then
            RISE<=(others=>'0');
        elsif (CLK'event and CLK='1') then
            RISE<=D;
        end if;
    end process;    
FALL_P: process (CLK,RST)
    begin
        if (RST='1') then
            FALL<=(others=>'0');
        elsif (CLK'event and CLK='0') then
            FALL<=D;
        end if;
    end process;    

Q<=RISE when front='1' else FALL;
end Behavioral;

 

Вот эта конструкция синтезируется ровно в то, что мне надо. При front='1' в тригеры по переднему фронту, при 0 по заднему.

Чем чреват этот вариант?

Share this post


Link to post
Share on other sites

Можно по-русски? Инвертировать клок? Так как я написал, или более разумным образом?

ставите инстанс модуля и когда подключаете сигнал тактовой инвертируете.

 

Вот эта конструкция синтезируется ровно в то, что мне надо. При front='1' в тригеры по переднему фронту, при 0 по заднему.

Чем чреват этот вариант?

Вас устраивает то, что вам нужно два раза писать одно и тоже? и скорее всего это будет копипаст с правкой со всеми вытекающими? и при отладке нужно будет править в двух местах? Если устраивает то велкам. :biggrin:

 

Share this post


Link to post
Share on other sites

Что значит инстанс? Просто инвертировать сигнал, как я написал в пункте 1?

 

Где копипаст? Зачем кописат? В одном месте указываю generic(0), в другом generuc (1)

Share this post


Link to post
Share on other sites

Сорри что вклиниваюсь, не хочу плодить похожие темы.

Меня вот что интересует :

Т.е. схема будет считаться синхронной (правильной, без гонок,глюков и т.д.) если в схеме на все входа CLK регистров,счетчиков,триггеров поспупает именно входная частота (global clock)

и защелкивать входные данные или нет должно определяться состоянием входа CLKEN ?

Share this post


Link to post
Share on other sites

Не обязательно входная частота, можно несколько частот, производные от нее, или вообще от разных, главное чтобы ни один триггер не защелкивался от сигналов, которые не являются клоками.

И если в дизайне несколько клоков, то надо предусмотреть триггеры или FIFO для переброса данных с одного клока на другой.

Да, эти два правила позволят Вам сказать, что дизайн синхронный.

Share this post


Link to post
Share on other sites

Не обязательно входная частота, можно несколько частот, производные от нее, или вообще от разных, главное чтобы ни один триггер не защелкивался от сигналов, которые не являются клоками.

Спасибо за помощь!

И ешё хочу уточнить для себя:

Вот, например, кусок схемы. Являются ли сигналы RDeR,EOE,GINC производными от GCLK? кошерно ли их подключать на CLK входы?

post-40106-1317146797_thumb.jpg

Share this post


Link to post
Share on other sites

Чтобы ответить точно, надо иметь VHDL описание Вашего lpm_mux0.

Если там стоит мультиплексор, а за ним регистр, который тактируется по входу CLK, то да синхронные.

 

 

Share this post


Link to post
Share on other sites

Чтобы ответить точно, надо иметь VHDL описание Вашего lpm_mux0.

Если там стоит мультиплексор, а за ним регистр, который тактируется по входу CLK, то да синхронные.

Спасибо, успокоили! Конечно в lpm_mux0 на выходе стоит регистр-защёлка (DFF) по нарастающему фронту GCLK.

 

Share this post


Link to post
Share on other sites

Спасибо за помощь!

И ешё хочу уточнить для себя:

Вот, например, кусок схемы. Являются ли сигналы RDeR,EOE,GINC производными от GCLK? кошерно ли их подключать на CLK входы?

Производными конечно являются )

Но если их подключить на тактовые входы, то схема перестает быть синхронной (кошерной?). Для синхронности надо их на clk_en включать.

Share this post


Link to post
Share on other sites

Производными конечно являются )

Но если их подключить на тактовые входы, то схема перестает быть синхронной (кошерной?). Для синхронности надо их на clk_en включать.

Т.е. для достижения полной синхронности надо (к примеру ins25 (DFF)) заменить на DFFE и RDeR подать на его CLK_EN а что на CLK подавать?

Share this post


Link to post
Share on other sites

Вот правильно Вам говорят, на CLK подавать только клоки и больше ничего и никогда. Как только Вы подали на вход клока сигнал, который в дизайне клоком не является, не выходит из GCLK, PLL, DCM, все дизайн перестает быть синхронным.

Share this post


Link to post
Share on other sites

Вот правильно Вам говорят, на CLK подавать только клоки и больше ничего и никогда. Как только Вы подали на вход клока сигнал, который в дизайне клоком не является, не выходит из GCLK, PLL, DCM, все дизайн перестает быть синхронным.

Т.е. если, к примеру, необходимо защёлкнуть некие входные данные в разных регистрах на 1,2,3,4-ом и т.д. такте GCLK (по нарастающему фронту) то мне необходимо сформировать четыре сигнала разрешения CLK_EN для каждого из регистров.

Причем длительность 1-цы(т.е разрешение счёта) каждого из CLK_EN должна быть равна периоду GCLK.

А на CLK входы всех регистров подать входную частоту GCLK поступающую непосредственно на clk_pin чипа?

Пользую max300a, ни PLL ни DCM нет у оного.

 

Share this post


Link to post
Share on other sites

Т.е. если, к примеру, необходимо защёлкнуть некие входные данные в разных регистрах на 1,2,3,4-ом и т.д. такте GCLK (по нарастающему фронту) то мне необходимо сформировать четыре сигнала разрешения CLK_EN для каждого из регистров.

Причем длительность 1-цы(т.е разрешение счёта) каждого из CLK_EN должна быть равна периоду GCLK.

А на CLK входы всех регистров подать входную частоту GCLK поступающую непосредственно на clk_pin чипа?

Пользую max300a, ни PLL ни DCM нет у оного.

Точно так!

Синхронный дизайн - когда все триггеры будут переключаться (если будут) синхронно, по одному тактовому сигналу.

Share this post


Link to post
Share on other sites

И если в дизайне несколько клоков, то надо предусмотреть триггеры или FIFO для переброса данных с одного клока на другой.

Можно здесь несколько поподробней? А конкретно о триггере для переброса данных с одного клока на другой? Когда ставится, чем тактируется, было бы замечательно если бы Вы привели небольшой пример (можно фрагмент на verilog). Спасибо!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...