Guest
Hi all,
My problem is as follows - i need to create the following pyramid alike
design.
in my declarative part i need to declare the following signals :
signal reg1 : std_logic ;
signal reg2 :std_logic_vector (1 downto 0);
signal reg3 :std_logic_vector (2 downto 0);
...
...
signal regN :std_logic_vector (N-2 downto 0);
afterwards I need to connect them as follows :
if rising_edge (clk) then
reg1 <= in1;
reg2(0) <= in2;
reg3(0) <= in3;
....
regN(0) <= inN;
reg2 (1) <= reg2 (0);
reg3 (2 downto 1) <= reg2 (1 downto 0);
....
....
regN (N-1 downto 1) <= reg2 (N-2 downto 0);
end if;
-- outputs --
out1 <= reg1;
out2 <= reg2 (1);
out3 <= reg3 (2);
....
....
outN <= regN (N-1);
It seems to be a job for a "generate loop" but I dont know how can I
declare N signals...?
I will appreciate any help.
Thanks, Moti.
My problem is as follows - i need to create the following pyramid alike
design.
in my declarative part i need to declare the following signals :
signal reg1 : std_logic ;
signal reg2 :std_logic_vector (1 downto 0);
signal reg3 :std_logic_vector (2 downto 0);
...
...
signal regN :std_logic_vector (N-2 downto 0);
afterwards I need to connect them as follows :
if rising_edge (clk) then
reg1 <= in1;
reg2(0) <= in2;
reg3(0) <= in3;
....
regN(0) <= inN;
reg2 (1) <= reg2 (0);
reg3 (2 downto 1) <= reg2 (1 downto 0);
....
....
regN (N-1 downto 1) <= reg2 (N-2 downto 0);
end if;
-- outputs --
out1 <= reg1;
out2 <= reg2 (1);
out3 <= reg3 (2);
....
....
outN <= regN (N-1);
It seems to be a job for a "generate loop" but I dont know how can I
declare N signals...?
I will appreciate any help.
Thanks, Moti.