Initial commit
This commit is contained in:
61
05-Morse/Morse/hdl/unitCounter_studentVersion.vhd
Normal file
61
05-Morse/Morse/hdl/unitCounter_studentVersion.vhd
Normal file
@@ -0,0 +1,61 @@
|
||||
library Common;
|
||||
use Common.CommonLib.all;
|
||||
|
||||
ARCHITECTURE studentVersion OF unitCounter IS
|
||||
|
||||
signal unitCounter: unsigned(requiredBitNb(unitCountDivide)-1 downto 0);
|
||||
signal unitCountDone: std_ulogic;
|
||||
signal unitNbCounter: unsigned(unitnB'range);
|
||||
signal unitNbCountDone: std_ulogic;
|
||||
|
||||
BEGIN
|
||||
-- count unit base period
|
||||
countUnitDuration: process(reset, clock)
|
||||
begin
|
||||
if reset = '1' then
|
||||
unitCounter <= (others => '0');
|
||||
elsif rising_edge(clock) then
|
||||
if unitCounter = 0 then
|
||||
if (startCounter = '1') or (unitNbCounter > 0) then
|
||||
unitCounter <= unitCounter + 1;
|
||||
end if;
|
||||
else
|
||||
if unitCountDone = '0' then
|
||||
unitCounter <= unitCounter + 1;
|
||||
else
|
||||
unitCounter <= (others => '0');
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process countUnitDuration;
|
||||
|
||||
unitCountDone <= '1' when unitCounter = unitCountDivide
|
||||
else '0';
|
||||
-- count unit period number
|
||||
countPeriods: process(reset, clock)
|
||||
begin
|
||||
if reset = '1' then
|
||||
unitNbCounter <= (others => '0');
|
||||
elsif rising_edge(clock) then
|
||||
if unitNbCounter = 0 then
|
||||
if startCounter = '1' then
|
||||
unitNbCounter <= unitNbCounter + 1;
|
||||
end if;
|
||||
else
|
||||
if unitNbCountDone = '0' then
|
||||
if unitCountDone = '1' then
|
||||
unitNbCounter <= unitNbCounter + 1;
|
||||
end if;
|
||||
else
|
||||
unitNbCounter <= (others => '0');
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process countPeriods;
|
||||
|
||||
unitNbCountDone <= '1' when (unitNbCounter = unitNb) and (unitCountDone = '1')
|
||||
else '0';
|
||||
|
||||
done <= unitNbCountDone;
|
||||
|
||||
END ARCHITECTURE studentVersion;
|
||||
Reference in New Issue
Block a user