66 lines
1.6 KiB
VHDL
66 lines
1.6 KiB
VHDL
|
library ieee;
|
||
|
use ieee.std_logic_1164.all;
|
||
|
use ieee.numeric_std.all;
|
||
|
|
||
|
library work;
|
||
|
use work.reg32.all;
|
||
|
use work.task.all;
|
||
|
|
||
|
entity task_sine is
|
||
|
port (
|
||
|
clk : in std_logic;
|
||
|
reset : in std_logic;
|
||
|
|
||
|
address : in std_logic_vector( 3 downto 0 );
|
||
|
read : in std_logic;
|
||
|
readdata : out std_logic_vector( 31 downto 0 );
|
||
|
write : in std_logic;
|
||
|
writedata : in std_logic_vector( 31 downto 0 );
|
||
|
|
||
|
signal_write : out std_logic;
|
||
|
signal_writedata : out std_logic_vector( 31 downto 0 )
|
||
|
);
|
||
|
end entity task_sine;
|
||
|
|
||
|
architecture struct of task_sine is
|
||
|
|
||
|
signal task_start : std_logic;
|
||
|
signal task_state : work.task.State := work.task.TASK_IDLE;
|
||
|
signal task_config : work.reg32.RegArray( 0 to 2 );
|
||
|
|
||
|
begin
|
||
|
u_control: entity work.hardware_task_control
|
||
|
port map (
|
||
|
clk => clk,
|
||
|
reset => reset,
|
||
|
|
||
|
address => address,
|
||
|
read => read,
|
||
|
readdata => readdata,
|
||
|
write => write,
|
||
|
writedata => writedata,
|
||
|
|
||
|
task_start => task_start,
|
||
|
task_state => task_state,
|
||
|
task_config => task_config
|
||
|
);
|
||
|
|
||
|
u_sine: entity work.sine
|
||
|
port map (
|
||
|
clk => clk,
|
||
|
reset => reset,
|
||
|
|
||
|
task_start => task_start,
|
||
|
task_state => task_state,
|
||
|
|
||
|
step_size => task_config( 0 ),
|
||
|
phase => task_config( 1 ),
|
||
|
amplitude => task_config( 2 ),
|
||
|
|
||
|
signal_write => signal_write,
|
||
|
signal_writedata => signal_writedata
|
||
|
);
|
||
|
|
||
|
end architecture struct;
|
||
|
|