add solutions
This commit is contained in:
		| @@ -0,0 +1,28 @@ | ||||
| -- VHDL Entity WaveformGenerator.lowpass.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.francois (Aphelia) | ||||
| --          at - 08:02:49 03/11/19 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY lowpass IS | ||||
|     GENERIC(  | ||||
|         signalBitNb : positive := 16; | ||||
|         shiftBitNb  : positive := 12 | ||||
|     ); | ||||
|     PORT(  | ||||
|         lowpassOut : OUT    unsigned (signalBitNb-1 DOWNTO 0); | ||||
|         clock      : IN     std_ulogic; | ||||
|         reset      : IN     std_ulogic; | ||||
|         lowpassIn  : IN     unsigned (signalBitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END lowpass ; | ||||
|  | ||||
| @@ -0,0 +1,19 @@ | ||||
| ARCHITECTURE masterVersion OF lowpass IS | ||||
|  | ||||
|   constant additionalBitNb: positive := shiftBitNb; | ||||
|   signal lowpassReg: unsigned(lowpassIn'length+additionalBitNb-1 downto 0); | ||||
|  | ||||
| begin | ||||
|  | ||||
|   filter: process(reset, clock) | ||||
|   begin | ||||
|     if reset = '1' then | ||||
|       lowpassReg <= (others => '0'); | ||||
|     elsif rising_edge(clock) then | ||||
|       lowpassReg <= lowpassReg + lowpassIn - shift_right(lowpassReg, shiftBitNb); | ||||
|     end if; | ||||
|   end process filter; | ||||
|  | ||||
|   lowpassOut <= lowpassReg(lowpassReg'high downto lowpassReg'high-lowpassOut'length+1); | ||||
|  | ||||
| END ARCHITECTURE masterVersion; | ||||
| @@ -0,0 +1,4 @@ | ||||
| ARCHITECTURE studentVersion OF lowpass IS | ||||
| BEGIN | ||||
|   lowpassOut <= (others => '0'); | ||||
| END ARCHITECTURE studentVersion; | ||||
| @@ -0,0 +1,21 @@ | ||||
| ARCHITECTURE masterVersion OF sawtoothGen IS | ||||
|  | ||||
|   signal counter: unsigned(sawtooth'range); | ||||
|  | ||||
| begin | ||||
|  | ||||
|   count: process(reset, clock) | ||||
|   begin | ||||
|     if reset = '1' then | ||||
|       counter <= (others => '0'); | ||||
|     elsif rising_edge(clock) then | ||||
|       if en = '1' then | ||||
|         counter <= counter + step; | ||||
|       end if; | ||||
|     end if; | ||||
|   end process count; | ||||
|  | ||||
|   sawtooth <= counter; | ||||
|  | ||||
| END ARCHITECTURE masterVersion; | ||||
|  | ||||
| @@ -0,0 +1,5 @@ | ||||
| ARCHITECTURE studentVersion OF sawtoothGen IS | ||||
| BEGIN | ||||
|   sawtooth <= (others => '0'); | ||||
| END ARCHITECTURE studentVersion; | ||||
|  | ||||
| @@ -0,0 +1,6 @@ | ||||
| ARCHITECTURE masterVersion OF sawtoothToSquare IS | ||||
| BEGIN | ||||
|  | ||||
|   square <= (others => sawtooth(sawtooth'high)); | ||||
|  | ||||
| END ARCHITECTURE masterVersion; | ||||
| @@ -0,0 +1,4 @@ | ||||
| ARCHITECTURE studentVersion OF sawtoothToSquare IS | ||||
| BEGIN | ||||
|   square <= (others => '0'); | ||||
| END ARCHITECTURE studentVersion; | ||||
| @@ -0,0 +1,21 @@ | ||||
| ARCHITECTURE masterVersion OF sawtoothToTriangle IS | ||||
|  | ||||
|   signal MSB: std_uLogic; | ||||
|   signal triangleInt: unsigned(triangle'range); | ||||
|  | ||||
| begin | ||||
|  | ||||
|   MSB <= sawtooth(sawtooth'high); | ||||
|  | ||||
|   foldDown: process(MSB, sawtooth) | ||||
|   begin | ||||
|     if MSB = '0' then | ||||
|       triangleInt <= sawtooth; | ||||
|     else | ||||
|       triangleInt <= not sawtooth; | ||||
|     end if; | ||||
|   end process foldDown; | ||||
|  | ||||
|   triangle <= triangleInt(triangleInt'high-1 downto 0) & '0'; | ||||
|  | ||||
| END ARCHITECTURE masterVersion; | ||||
| @@ -0,0 +1,4 @@ | ||||
| ARCHITECTURE studentVersion OF sawtoothToTriangle IS | ||||
| BEGIN | ||||
|   triangle <= (others => '0'); | ||||
| END ARCHITECTURE studentVersion; | ||||
| @@ -0,0 +1,28 @@ | ||||
| -- VHDL Entity WaveformGenerator.sawtoothGen.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.francois (Aphelia) | ||||
| --          at - 08:02:49 03/11/19 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY sawtoothGen IS | ||||
|     GENERIC(  | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT(  | ||||
|         sawtooth : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         clock    : IN     std_ulogic; | ||||
|         reset    : IN     std_ulogic; | ||||
|         step     : IN     unsigned (bitNb-1 DOWNTO 0); | ||||
|         en       : IN     std_ulogic | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END sawtoothGen ; | ||||
|  | ||||
| @@ -0,0 +1,25 @@ | ||||
| -- VHDL Entity WaveformGenerator.sawtoothToSquare.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.francois (Aphelia) | ||||
| --          at - 08:02:49 03/11/19 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY sawtoothToSquare IS | ||||
|     GENERIC(  | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT(  | ||||
|         square   : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         sawtooth : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END sawtoothToSquare ; | ||||
|  | ||||
| @@ -0,0 +1,25 @@ | ||||
| -- VHDL Entity WaveformGenerator.sawtoothToTriangle.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.francois (Aphelia) | ||||
| --          at - 08:02:49 03/11/19 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY sawtoothToTriangle IS | ||||
|     GENERIC(  | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT(  | ||||
|         triangle : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         sawtooth : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END sawtoothToTriangle ; | ||||
|  | ||||
| @@ -0,0 +1,26 @@ | ||||
| ARCHITECTURE masterVersion OF triangleToPolygon IS | ||||
|  | ||||
|   constant clipLow: positive := 2**(triangle'length-2); | ||||
|   constant clipHigh: positive := 5*clipLow; | ||||
|  | ||||
|   signal triangleGain: unsigned(triangle'length downto 0); | ||||
|  | ||||
| begin | ||||
|  | ||||
|   gain_1_5: process(triangle) | ||||
|   begin | ||||
|     triangleGain <= ("0" & triangle) + ( "00" & triangle(triangle'high downto 1) ); | ||||
|   end process gain_1_5; | ||||
|  | ||||
|   clip: process(triangleGain) | ||||
|   begin | ||||
|     if triangleGain < clipLow then | ||||
|       polygon <= (others => '0'); | ||||
|     elsif triangleGain > clipHigh then | ||||
|       polygon <= (others => '1'); | ||||
|     else | ||||
|       polygon <= triangleGain(polygon'range) - clipLow; | ||||
|     end if; | ||||
|   end process clip; | ||||
|  | ||||
| END ARCHITECTURE masterVersion; | ||||
| @@ -0,0 +1,4 @@ | ||||
| ARCHITECTURE studentVersion OF triangleToPolygon IS | ||||
| BEGIN | ||||
|   polygon <= (others => '0'); | ||||
| END ARCHITECTURE studentVersion; | ||||
| @@ -0,0 +1,25 @@ | ||||
| -- VHDL Entity WaveformGenerator.triangleToPolygon.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.francois (Aphelia) | ||||
| --          at - 08:02:49 03/11/19 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY triangleToPolygon IS | ||||
|     GENERIC(  | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT(  | ||||
|         polygon  : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         triangle : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END triangleToPolygon ; | ||||
|  | ||||
| @@ -0,0 +1,33 @@ | ||||
| -- VHDL Entity WaveformGenerator.waveformGen.symbol | ||||
| -- | ||||
| -- Created: | ||||
| --          by - francois.corthay.UNKNOWN (WEA20303) | ||||
| --          at - 17:19:13 06.03.2019 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| ENTITY waveformGen IS | ||||
|     GENERIC(  | ||||
|         phaseBitNb  : positive := 16; | ||||
|         signalBitNb : positive := 16 | ||||
|     ); | ||||
|     PORT(  | ||||
|         clock    : IN     std_ulogic; | ||||
|         en       : IN     std_ulogic; | ||||
|         reset    : IN     std_ulogic; | ||||
|         step     : IN     unsigned (phaseBitNb-1 DOWNTO 0); | ||||
|         polygon  : OUT    unsigned (signalBitNb-1 DOWNTO 0); | ||||
|         sawtooth : OUT    unsigned (phaseBitNb-1 DOWNTO 0); | ||||
|         sine     : OUT    unsigned (signalBitNb-1 DOWNTO 0); | ||||
|         square   : OUT    unsigned (signalBitNb-1 DOWNTO 0); | ||||
|         triangle : OUT    unsigned (signalBitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|  | ||||
| -- Declarations | ||||
|  | ||||
| END waveformGen ; | ||||
|  | ||||
| @@ -0,0 +1,146 @@ | ||||
| -- | ||||
| -- VHDL Architecture WaveformGenerator.waveformGen.struct | ||||
| -- | ||||
| -- Created: | ||||
| --          by - axel.amand.UNKNOWN (WE7860) | ||||
| --          at - 14:40:08 28.04.2023 | ||||
| -- | ||||
| -- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5) | ||||
| -- | ||||
| LIBRARY ieee; | ||||
|   USE ieee.std_logic_1164.all; | ||||
|   USE ieee.numeric_std.all; | ||||
|  | ||||
| LIBRARY WaveformGenerator; | ||||
|  | ||||
| ARCHITECTURE struct OF waveformGen IS | ||||
|  | ||||
|     -- Architecture declarations | ||||
|  | ||||
|     -- Internal signal declarations | ||||
|  | ||||
|     -- Implicit buffer signal declarations | ||||
|     SIGNAL polygon_internal  : unsigned (signalBitNb-1 DOWNTO 0); | ||||
|     SIGNAL sawtooth_internal : unsigned (phaseBitNb-1 DOWNTO 0); | ||||
|     SIGNAL triangle_internal : unsigned (signalBitNb-1 DOWNTO 0); | ||||
|  | ||||
|  | ||||
|     -- Component Declarations | ||||
|     COMPONENT lowpass | ||||
|     GENERIC ( | ||||
|         signalBitNb : positive := 16; | ||||
|         shiftBitNb  : positive := 12 | ||||
|     ); | ||||
|     PORT ( | ||||
|         lowpassOut : OUT    unsigned (signalBitNb-1 DOWNTO 0); | ||||
|         clock      : IN     std_ulogic ; | ||||
|         reset      : IN     std_ulogic ; | ||||
|         lowpassIn  : IN     unsigned (signalBitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|     END COMPONENT; | ||||
|     COMPONENT sawtoothGen | ||||
|     GENERIC ( | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT ( | ||||
|         sawtooth : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         clock    : IN     std_ulogic ; | ||||
|         reset    : IN     std_ulogic ; | ||||
|         step     : IN     unsigned (bitNb-1 DOWNTO 0); | ||||
|         en       : IN     std_ulogic  | ||||
|     ); | ||||
|     END COMPONENT; | ||||
|     COMPONENT sawtoothToSquare | ||||
|     GENERIC ( | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT ( | ||||
|         square   : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         sawtooth : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|     END COMPONENT; | ||||
|     COMPONENT sawtoothToTriangle | ||||
|     GENERIC ( | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT ( | ||||
|         triangle : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         sawtooth : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|     END COMPONENT; | ||||
|     COMPONENT triangleToPolygon | ||||
|     GENERIC ( | ||||
|         bitNb : positive := 16 | ||||
|     ); | ||||
|     PORT ( | ||||
|         polygon  : OUT    unsigned (bitNb-1 DOWNTO 0); | ||||
|         triangle : IN     unsigned (bitNb-1 DOWNTO 0) | ||||
|     ); | ||||
|     END COMPONENT; | ||||
|  | ||||
|     -- Optional embedded configurations | ||||
|     -- pragma synthesis_off | ||||
|     FOR ALL : lowpass USE ENTITY WaveformGenerator.lowpass; | ||||
|     FOR ALL : sawtoothGen USE ENTITY WaveformGenerator.sawtoothGen; | ||||
|     FOR ALL : sawtoothToSquare USE ENTITY WaveformGenerator.sawtoothToSquare; | ||||
|     FOR ALL : sawtoothToTriangle USE ENTITY WaveformGenerator.sawtoothToTriangle; | ||||
|     FOR ALL : triangleToPolygon USE ENTITY WaveformGenerator.triangleToPolygon; | ||||
|     -- pragma synthesis_on | ||||
|  | ||||
|  | ||||
| BEGIN | ||||
|  | ||||
|     -- Instance port mappings. | ||||
|     I_lp : lowpass | ||||
|         GENERIC MAP ( | ||||
|             signalBitNb => signalBitNb, | ||||
|             shiftBitNb  => 10 | ||||
|         ) | ||||
|         PORT MAP ( | ||||
|             lowpassOut => sine, | ||||
|             clock      => clock, | ||||
|             reset      => reset, | ||||
|             lowpassIn  => polygon_internal | ||||
|         ); | ||||
|     I_saw : sawtoothGen | ||||
|         GENERIC MAP ( | ||||
|             bitNb => phaseBitNb | ||||
|         ) | ||||
|         PORT MAP ( | ||||
|             sawtooth => sawtooth_internal, | ||||
|             clock    => clock, | ||||
|             reset    => reset, | ||||
|             step     => step, | ||||
|             en       => en | ||||
|         ); | ||||
|     I_square : sawtoothToSquare | ||||
|         GENERIC MAP ( | ||||
|             bitNb => signalBitNb | ||||
|         ) | ||||
|         PORT MAP ( | ||||
|             square   => square, | ||||
|             sawtooth => sawtooth_internal | ||||
|         ); | ||||
|     I_tri : sawtoothToTriangle | ||||
|         GENERIC MAP ( | ||||
|             bitNb => signalBitNb | ||||
|         ) | ||||
|         PORT MAP ( | ||||
|             triangle => triangle_internal, | ||||
|             sawtooth => sawtooth_internal | ||||
|         ); | ||||
|     I_poly : triangleToPolygon | ||||
|         GENERIC MAP ( | ||||
|             bitNb => signalBitNb | ||||
|         ) | ||||
|         PORT MAP ( | ||||
|             polygon  => polygon_internal, | ||||
|             triangle => triangle_internal | ||||
|         ); | ||||
|  | ||||
|     -- Implicit buffered output assignments | ||||
|     polygon  <= polygon_internal; | ||||
|     sawtooth <= sawtooth_internal; | ||||
|     triangle <= triangle_internal; | ||||
|  | ||||
| END struct; | ||||
		Reference in New Issue
	
	Block a user