29 lines
		
	
	
		
			796 B
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			796 B
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| library Common;
 | |
|   use Common.CommonLib.all;
 | |
| 
 | |
| ARCHITECTURE studentVersion OF toneGenerator IS
 | |
| 
 | |
|   constant toneCounterBitNb: positive := requiredBitNb(toneDivide-1);
 | |
|   signal toneCounter: unsigned(toneCounterBitNb-1 downto 0);
 | |
|   constant toneMin : natural := (2**toneCounterBitNb - toneDivide) / 2;
 | |
|   constant toneMax : natural := toneMin + toneDivide;
 | |
| 
 | |
| BEGIN
 | |
| 
 | |
|   divide: process(reset, clock)
 | |
|   begin
 | |
|     if reset = '1' then
 | |
|       toneCounter <= to_unsigned(toneMin, toneCounter'length);
 | |
|     elsif rising_edge(clock) then
 | |
|       if toneCounter = toneMax then
 | |
|         toneCounter <= to_unsigned(toneMin, toneCounter'length);
 | |
|       else
 | |
|         toneCounter <= toneCounter + 1;
 | |
|       end if;
 | |
|     end if;
 | |
|   end process divide;
 | |
| 
 | |
|   tone <= toneCounter(toneCounter'high);
 | |
| 
 | |
| END ARCHITECTURE studentVersion;
 |