You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
library ieee;
|
|
use ieee.std_logic_1164.all;
|
|
use ieee.std_logic_arith.all;
|
|
|
|
entity x is
|
|
port(
|
|
rst : in std_logic;
|
|
clk : in std_logic;
|
|
d : in std_logic;
|
|
q : out std_logic_vector;
|
|
a, b : in std_logic;
|
|
v : out std_logic
|
|
);
|
|
end x;
|
|
|
|
architecture behavioral of x is
|
|
signal q_i : std_logic_vector(q'range);
|
|
begin
|
|
|
|
v <= a when b = '1' else '0';
|
|
|
|
gen: for j in q'low to q'high generate
|
|
gen_first: if j = q'low generate
|
|
variable foo : boolean := false;
|
|
begin
|
|
stage1: process (rst, clk) begin
|
|
if rst = '1' then
|
|
q_i(j) <= '0';
|
|
elsif rising_edge(clk) then
|
|
q_i(j) <= d;
|
|
case a is
|
|
when 1 =>
|
|
when 2 =>
|
|
when others =>
|
|
end case;
|
|
end if;
|
|
end process;
|
|
else generate
|
|
stages: process (rst, clk)
|
|
begin
|
|
if rst = '1' then
|
|
q_i(j) <= '0';
|
|
elsif rising_edge(clk) then
|
|
for u in 0 to 7 loop
|
|
q_i(j) <= q_i(j - 1);
|
|
end loop;
|
|
end if;
|
|
end process;
|
|
end generate;
|
|
end generate;
|
|
|
|
L: case expression generate
|
|
when choice1 =>
|
|
when choice2 =>
|
|
end generate L;
|
|
|
|
end behavioral;
|