2015-01-07 4 views
1

Этот код смещает n1 и n2 на каждом clk'event and clk=1 в условиях sh=1 и su=0. Проблема в том, что переход происходит для первого возрастающего фронта и не может повториться снова для следующих нарастающих фронтов, у кого есть идея, как сделать его непрерывным сдвигом? Благодарю.Shifting каждое событие часы и часы = 1 (VHDL)

ENTITY register_divider IS 
    port(st , clk :in std_logic ; 
    num : in std_logic_vector (15 downto 0); 

    qu : out std_logic_vector(7 downto 0); 
    re : out std_logic_vector (7 downto 0); 
    n1r : out std_logic_vector (8 downto 0); 
    counter : in std_logic_vector (3 downto 0); 
    Sh, su, Ld: in std_logic ; 
    n1c: in std_logic_vector (8 downto 0) 
); 
END ENTITY register_divider; 

-- 
ARCHITECTURE rtl OF register_divider IS 
BEGIN 

    process(clk) 
     variable n1 : std_logic_vector (8 downto 0); 
     variable n2 : std_logic_vector (7 downto 0) ; 
    begin 

     n2 := num(7 downto 0); 
     n1 := '0' & num(15 downto 8); 

     if (clk'event and clk = '1') then 
      n1r <= n1 ; 
      if (sh='1' and su = '0') then 
       n1 := n1(7 downto 0) & n2(7); 
       n2 := n2(6 downto 0) & '0'; 
      end if ; 

      if (su = '1' and su = '1') then 
       n2(0) := '1'; 
       n1 := n1c ; 
      end if ; 
     end if ; 

     qu <= n2 ; 
     re <= n1(7 downto 0); 
    end process; 
END ARCHITECTURE rtl; 
+1

Он сдвигает каждый такт. Проблема в том, что он также перезагружает исходные входы каждый такт. Вам нужно выяснить способ загрузки входов на что-то вроде команды «load» вместо каждого цикла. –

+0

да, спасибо, я заметил, что сейчас, но у меня нет идеи, как решить эту проблему, у вас есть идея? –

+1

Вам понадобится что-то вроде входа «load» для сигнала, когда вам нужно загрузить новые значения. –

ответ

0

Как mentioned Брайан, ваш код смещается, как вы хотите, однако, проблема заключается в том, что она также загрузки/установки Реестре каждого цикла, а также, по существу, отменяя то, что вы хотите. Вместо того, чтобы загружать/настраивать регистры n1 и n2 каждый цикл (безусловно), вам необходимо включить условие для их загрузки при утверждении соответствующего сигнала (Ld возможно?)

Смежные вопросы