Archived
1
0

Initial commit

This commit is contained in:
github-classroom[bot]
2024-02-23 13:01:05 +00:00
committed by GitHub
commit d212040c30
1914 changed files with 1290006 additions and 0 deletions

View File

@ -0,0 +1,7 @@
ARCHITECTURE studentVersion OF parallelAdder IS
BEGIN
sum <= (others => '0');
cOut <= '0';
END ARCHITECTURE studentVersion;

View File

@ -0,0 +1,45 @@
ARCHITECTURE noPipe OF pipelineAdder IS
constant stageBitNb : positive := sum'length/stageNb;
subtype stageOperandType is signed(stageBitNb-1 downto 0);
type stageOperandArrayType is array(stageNb-1 downto 0) of stageOperandType;
subtype carryType is std_ulogic_vector(stageNb downto 0);
signal a_int, b_int, sum_int : stageOperandArrayType;
signal carryIn : carryType;
COMPONENT parallelAdder
GENERIC (
bitNb : positive := 32
);
PORT (
sum : OUT signed (bitNb-1 DOWNTO 0);
cIn : IN std_ulogic ;
cOut : OUT std_ulogic ;
a : IN signed (bitNb-1 DOWNTO 0);
b : IN signed (bitNb-1 DOWNTO 0)
);
END COMPONENT;
BEGIN
carryIn(0) <= cIn;
pipeline: for index in stageOperandArrayType'range generate
a_int(index) <= a(index*stageBitNb+stageBitNb-1 downto index*stageBitNb);
b_int(index) <= b(index*stageBitNb+stageBitNb-1 downto index*stageBitNb);
partialAdder: parallelAdder
GENERIC MAP (bitNb => stageBitNb)
PORT MAP (
a => a_int(index),
b => b_int(index),
sum => sum_int(index),
cIn => carryIn(index),
cOut => carryIn(index+1)
);
sum(index*stageBitNb+stageBitNb-1 downto index*stageBitNb) <= sum_int(index);
end generate pipeline;
cOut <= carryIn(carryIn'high);
END ARCHITECTURE noPipe;

View File

@ -0,0 +1,7 @@
ARCHITECTURE studentVersion OF pipelineAdder IS
BEGIN
sum <= (others => '0');
cOut <= '0';
END ARCHITECTURE studentVersion;

View File

@ -0,0 +1,43 @@
ARCHITECTURE studentVersion OF pipelineCounter IS
signal b : signed(countOut'range);
signal sum : signed(countOut'range);
COMPONENT pipelineAdder
GENERIC (
bitNb : positive := 32;
stageNb : positive := 4
);
PORT (
reset : IN std_ulogic;
clock : IN std_ulogic;
cIn : IN std_ulogic;
a : IN signed (bitNb-1 DOWNTO 0);
b : IN signed (bitNb-1 DOWNTO 0);
sum : OUT signed (bitNb-1 DOWNTO 0);
cOut : OUT std_ulogic
);
END COMPONENT;
BEGIN
b <= to_signed(1, b'length);
adder: pipelineAdder
GENERIC MAP (
bitNb => countOut'length,
stageNb => stageNb
)
PORT MAP (
reset => reset,
clock => clock,
cIn => '0',
a => sum,
b => b,
sum => sum,
cOut => open
);
countOut <= unsigned(sum);
END ARCHITECTURE studentVersion;