---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 16.03.2022 20:07:22 -- Design Name: -- Module Name: pwm_test_db - Behavioral -- Project Name: -- Target Devices: -- Tool Versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.numeric_std.ALL; --use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx leaf cells in this code. --library UNISIM; --use UNISIM.VComponents.all; entity pwm_test_db is -- Port ( ); end pwm_test_db; architecture Behavioral of pwm_test_db is component regler is Port ( clk : in STD_LOGIC; --Clk -> Gibt abtastzeit vor w : in signed(63 downto 0) := (others => '0'); --Sollwert y : in signed(63 downto 0) := (others => '0'); --Istwert u : inout signed(63 downto 0) := (others => '0'); --Stellgöße KR : in signed(9 downto 0) := to_signed(1,10); -- Verstärkung T : in signed(9 downto 0) := to_signed(1000, 10); -- Abtastzeit in us 1000us TV : signed(9 downto 0) := (others => '0'); -- Vorhaltezeit für Differenzierer interesannt TN : in signed(9 downto 0) := to_signed(1,10)); -- Nachstellzeit end component; component pt1 is Port ( clk : in STD_LOGIC; u : in signed(63 downto 0) := to_signed(1,64); y : inout signed(63 downto 0) := to_signed(1,64); -- muss vielleicht initalisiert werden vorher!? a : in signed(9 downto 0) := to_signed(1,10); k : in signed(9 downto 0) := to_signed(1,10); stepWidth : signed(9 downto 0) := to_signed(10,10)); --in us -> 10us end component; signal clk : std_logic := '0'; signal clk_100 : std_logic := '0'; signal w : signed(63 downto 0) := to_signed(1000000, 64); signal u : signed(63 downto 0) := to_signed(0, 64); signal y : signed(63 downto 0) := to_signed(0, 64); signal cnt : integer := 0; signal risingEdge : std_logic := '0'; --Streckenparameter signal a : signed(9 downto 0) := to_signed(1, 10); signal k : signed(9 downto 0) := to_signed(1, 10); signal stepWidth : signed(9 downto 0) := to_signed(10, 10); --Reglerparameter signal KR : signed(9 downto 0) := to_signed(1, 10); -- Verstärkung signal T : signed(9 downto 0) := to_signed(1000, 10); -- Abtastzeit in ns = 1ms = 1000000ns signal TV : signed(9 downto 0) := to_signed(0, 10); -- Vorhaltezeit für Differenzierer interesannt signal TN : signed(9 downto 0) := to_signed(100000, 10); -- Nachstellzeit in us begin uut_regler: regler PORT MAP ( clk => clk_100, w => w, y => y, u => u, KR => KR, T => T, TV => TV, TN => TN ); uut_pt1: pt1 PORT MAP ( clk => clk, u => u, y => y, a => a, k => k, stepWidth => stepWidth ); --generate clock clk <= not clk after 5 us; process begin --w <= 100000000; w <= to_signed(1000000, 64); --muss >= 1000000 sein! -- if rising_edge(clk) and ( cnt >= 100) then -- clk_100 <= not clk_100; -- cnt <= 0; -- end if; if clk = '1' and risingEdge = '0' then cnt <= cnt+1; risingEdge <= '1'; clk_100 <= '0'; end if; if clk = '0' then risingEdge <= '0'; end if; if cnt >= 99 then clk_100 <= '1'; cnt <= 0; end if; wait for 1 us; -- cnt <= cnt+1; end process; end Behavioral;