Я пытаюсь сделать код VHDL для 4-битного универсального регистра сдвига, где я хочу загрузить 4 бита и выбрать операцию сдвига с помощью Ctrl. Я не знаю, как реализовать делитель тактовой частоты для запуска выходов на FPGA.
Вот мой код:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity shift_register is
generic(N : integer := 4);
port(
clk, reset : in std_logic;
ctrl : in std_logic_vector(1 downto 0);
d : in std_logic_vector((N-1) downto 0);
q : out std_logic_vector((N-1) downto 0)
);
end shift_register;
architecture Behavioral of shift_register is
signal r_reg : std_logic_vector((N-1) downto 0);
signal r_next : std_logic_vector((N-1) downto 0);
begin
process(clk, reset)
begin
if(reset = '1') then
r_reg <= (others => '0');
elsif(clk'event and clk = '1') then
r_reg <= r_next;
end if;
end process;
with ctrl select
r_next <=
r_reg when "00", --do nothing
r_reg(N-2 downto 0) & d(0) when "01", --shift left
d(N-1) & r_reg(N-1 downto 1)when "10", --shift right
d when others; --load
q <= r_reg;
end Behavioral;
clk
на FPGA. Я так предполагаю, посколькуctrl
иd
должны быть синхронны с этимclk
. Затем этотclk
можно использовать для получения сигнала включения, который выдается один цикл каждую секунду, и затем это разрешение можно использовать для выполнения желаемого обновления. - person Morten Zilmer   schedule 19.09.2014enable
там, где он находится, чтобы управлять обновлением. - person Morten Zilmer   schedule 19.09.2014