Files
RTR532/ld3/iif_hdl/ld3_fixed_point2/IIF.vhd
T

232 lines
8.3 KiB
VHDL

-- -------------------------------------------------------------
--
-- File Name: C:\Users\Imants\Desktop\sin_gen\iif_hdl\ld3_fixed_point2\IIF.vhd
-- Created: 2020-06-09 21:58:09
--
-- Generated by MATLAB 9.3 and HDL Coder 3.11
--
--
-- -------------------------------------------------------------
-- Rate and Clocking Details
-- -------------------------------------------------------------
-- Model base rate: 4.53515e-05
-- Target subsystem base rate: 4.53515e-05
--
--
-- Clock Enable Sample Time
-- -------------------------------------------------------------
-- ce_out 4.53515e-05
-- -------------------------------------------------------------
--
--
-- Output Signal Clock Enable Sample Time
-- -------------------------------------------------------------
-- Out1 ce_out 4.53515e-05
-- -------------------------------------------------------------
--
-- -------------------------------------------------------------
-- -------------------------------------------------------------
--
-- Module: IIF
-- Source Path: ld3_fixed_point2/IIF
-- Hierarchy Level: 0
--
-- -------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY IIF IS
PORT( clk : IN std_logic;
reset : IN std_logic;
clk_enable : IN std_logic;
In1 : IN std_logic_vector(15 DOWNTO 0); -- sfix16_En14
ce_out : OUT std_logic;
Out1 : OUT std_logic_vector(15 DOWNTO 0) -- sfix16_En14
);
END IIF;
ARCHITECTURE rtl OF IIF IS
-- Signals
SIGNAL enb : std_logic;
SIGNAL enb_const_rate : std_logic;
SIGNAL Constant_out1 : unsigned(15 DOWNTO 0); -- ufix16_En21
SIGNAL Constant_out1_1 : unsigned(15 DOWNTO 0); -- ufix16_En21
SIGNAL In1_signed : signed(15 DOWNTO 0); -- sfix16_En14
SIGNAL Constant3_out1 : signed(15 DOWNTO 0); -- sfix16_En14
SIGNAL Constant2_out1 : unsigned(15 DOWNTO 0); -- ufix16_En16
SIGNAL Subtract1_out1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL Delay1_out1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL a_3_cast : signed(16 DOWNTO 0); -- sfix17_En16
SIGNAL a_3_mul_temp : signed(32 DOWNTO 0); -- sfix33_En25
SIGNAL a_3_cast_1 : signed(31 DOWNTO 0); -- sfix32_En25
SIGNAL a_3_out1 : signed(15 DOWNTO 0); -- sfix16_En10
SIGNAL a_2_mul_temp : signed(31 DOWNTO 0); -- sfix32_En23
SIGNAL a_2_out1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL Subtract2_sub_cast : signed(31 DOWNTO 0); -- sfix32_En14
SIGNAL Subtract2_sub_cast_1 : signed(31 DOWNTO 0); -- sfix32_En14
SIGNAL Subtract2_sub_temp : signed(31 DOWNTO 0); -- sfix32_En14
SIGNAL Subtract2_out1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL Subtract1_sub_cast : signed(31 DOWNTO 0); -- sfix32_En10
SIGNAL Subtract1_sub_cast_1 : signed(31 DOWNTO 0); -- sfix32_En10
SIGNAL Subtract1_sub_temp : signed(31 DOWNTO 0); -- sfix32_En10
SIGNAL Subtract1_out1_1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL b_1_cast : signed(16 DOWNTO 0); -- sfix17_En21
SIGNAL b_1_mul_temp : signed(32 DOWNTO 0); -- sfix33_En30
SIGNAL b_1_cast_1 : signed(31 DOWNTO 0); -- sfix32_En30
SIGNAL b_1_out1 : signed(15 DOWNTO 0); -- sfix16_En15
SIGNAL b_1_out1_1 : signed(15 DOWNTO 0); -- sfix16_En15
SIGNAL Constant1_out1 : signed(15 DOWNTO 0); -- sfix16_En20
SIGNAL Constant1_out1_1 : signed(15 DOWNTO 0); -- sfix16_En20
SIGNAL Delay1_out1_1 : signed(15 DOWNTO 0); -- sfix16_En9
SIGNAL b_3_mul_temp : signed(31 DOWNTO 0); -- sfix32_En29
SIGNAL b_3_out1 : signed(15 DOWNTO 0); -- sfix16_En15
SIGNAL b_3_out1_1 : signed(15 DOWNTO 0); -- sfix16_En15
SIGNAL Sum1_add_cast : signed(31 DOWNTO 0); -- sfix32_En15
SIGNAL Sum1_add_cast_1 : signed(31 DOWNTO 0); -- sfix32_En15
SIGNAL Sum1_add_temp : signed(31 DOWNTO 0); -- sfix32_En15
SIGNAL Sum1_out1 : signed(15 DOWNTO 0); -- sfix16_En14
ATTRIBUTE multstyle : string;
BEGIN
Constant_out1 <= to_unsigned(16#D9E8#, 16);
enb_const_rate <= clk_enable;
HwModeRegister_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
Constant_out1_1 <= to_unsigned(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb_const_rate = '1' THEN
Constant_out1_1 <= Constant_out1;
END IF;
END IF;
END PROCESS HwModeRegister_process;
In1_signed <= signed(In1);
Constant3_out1 <= to_signed(-16#5E65#, 16);
Constant2_out1 <= to_unsigned(16#F268#, 16);
enb <= clk_enable;
Delay1_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
Delay1_out1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb = '1' THEN
Delay1_out1 <= Subtract1_out1;
END IF;
END IF;
END PROCESS Delay1_process;
a_3_cast <= signed(resize(Constant2_out1, 17));
a_3_mul_temp <= a_3_cast * Delay1_out1;
a_3_cast_1 <= a_3_mul_temp(31 DOWNTO 0);
a_3_out1 <= a_3_cast_1(30 DOWNTO 15);
a_2_mul_temp <= Constant3_out1 * Subtract1_out1;
a_2_out1 <= a_2_mul_temp(29 DOWNTO 14);
Subtract2_sub_cast <= resize(In1_signed, 32);
Subtract2_sub_cast_1 <= resize(a_2_out1 & '0' & '0' & '0' & '0' & '0', 32);
Subtract2_sub_temp <= Subtract2_sub_cast - Subtract2_sub_cast_1;
Subtract2_out1 <= Subtract2_sub_temp(20 DOWNTO 5);
Subtract1_sub_cast <= resize(Subtract2_out1 & '0', 32);
Subtract1_sub_cast_1 <= resize(a_3_out1, 32);
Subtract1_sub_temp <= Subtract1_sub_cast - Subtract1_sub_cast_1;
Subtract1_out1_1 <= Subtract1_sub_temp(16 DOWNTO 1);
reduced_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
Subtract1_out1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb = '1' THEN
Subtract1_out1 <= Subtract1_out1_1;
END IF;
END IF;
END PROCESS reduced_process;
b_1_cast <= signed(resize(Constant_out1_1, 17));
b_1_mul_temp <= b_1_cast * Subtract1_out1;
b_1_cast_1 <= b_1_mul_temp(31 DOWNTO 0);
b_1_out1 <= b_1_cast_1(30 DOWNTO 15);
PipelineRegister_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
b_1_out1_1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb_const_rate = '1' THEN
b_1_out1_1 <= b_1_out1;
END IF;
END IF;
END PROCESS PipelineRegister_process;
Constant1_out1 <= to_signed(-16#6CF4#, 16);
HwModeRegister2_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
Constant1_out1_1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb_const_rate = '1' THEN
Constant1_out1_1 <= Constant1_out1;
END IF;
END IF;
END PROCESS HwModeRegister2_process;
HwModeRegister3_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
Delay1_out1_1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb = '1' THEN
Delay1_out1_1 <= Delay1_out1;
END IF;
END IF;
END PROCESS HwModeRegister3_process;
b_3_mul_temp <= Constant1_out1_1 * Delay1_out1_1;
b_3_out1 <= b_3_mul_temp(29 DOWNTO 14);
PipelineRegister1_process : PROCESS (clk, reset)
BEGIN
IF reset = '1' THEN
b_3_out1_1 <= to_signed(16#0000#, 16);
ELSIF clk'EVENT AND clk = '1' THEN
IF enb = '1' THEN
b_3_out1_1 <= b_3_out1;
END IF;
END IF;
END PROCESS PipelineRegister1_process;
Sum1_add_cast <= resize(b_1_out1_1, 32);
Sum1_add_cast_1 <= resize(b_3_out1_1, 32);
Sum1_add_temp <= Sum1_add_cast + Sum1_add_cast_1;
Sum1_out1 <= Sum1_add_temp(16 DOWNTO 1);
Out1 <= std_logic_vector(Sum1_out1);
ce_out <= clk_enable;
END rtl;