Vhdl 蓄能器设计

Vhdl 蓄能器设计,vhdl,Vhdl,谢谢大家,我在这里修改了帖子。我已经为陷阱过滤器编写了一个简单的VHDL代码,为每个任务使用了不同的组件。以下是示例代码,其中使用了不同的组件,并且除累加器组件(acc1)外,所有其他组件都工作正常,输出信号保持为零。在acc1 one组件中,我试图制作两个蓄能器,其中第一个acc1(第一个蓄能器的输出)是acc2的输入。由于其他组件正在工作,所以我在这里仅显示了代码中acc1组件的端口映射以及测试台 library ieee; use ieee.std_logic_1164.all; use

谢谢大家,我在这里修改了帖子。我已经为陷阱过滤器编写了一个简单的VHDL代码,为每个任务使用了不同的组件。以下是示例代码,其中使用了不同的组件,并且除累加器组件(acc1)外,所有其他组件都工作正常,输出信号保持为零。在acc1 one组件中,我试图制作两个蓄能器,其中第一个acc1(第一个蓄能器的输出)是acc2的输入。由于其他组件正在工作,所以我在这里仅显示了代码中acc1组件的端口映射以及测试台

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.std_logic_unsigned.all;
use ieee.fixed_pkg.all;
ENTITY TRAPFILTER IS 
GENERIC (
K  : integer  :=80;
L  : integer  :=200
 --M  : signed(9 downto 0)  := to_signed(5)
);
PORT 
(
 CLK          : IN    STD_LOGIC;
 RST          : IN    STD_LOGIC; 
 DATAIN       : IN    STD_LOGIC_VECTOR(13 DOWNTO 0);
 DATAOUT      : OUT   STD_LOGIC_VECTOR(24 DOWNTO 0);
 DATAOUT1     : OUT   STD_LOGIC_VECTOR(25 DOWNTO 0); ---
 READY        : OUT   STD_LOGIC;

 Soutout      : out std_logic_vector(23 downto 0);
 Koutout      : out std_logic_vector(13 downto 0);
 Loutout      : out std_logic_vector(13 downto 0)
 ); 
 END ENTITY TRAPFILTER;
 ARCHITECTURE RTL OF TRAPFILTER IS
   constant M          : sfixed(1 downto -2) :=  to_sfixed(0.01,1,-2); 
   type  Sdelay_reg is array(0 to 2) OF signed(21 downto 0);
   signal S_reg        :  Sdelay_reg :=(others=>(others=>'0'));
   -------------------------------------------------------------
   signal y_reg0       : signed (27 downto 0)  :=(others=>'0'); 
   signal y_reg1       : signed (31 downto 0)  :=(others=>'0');        
   -----------------------------------------------------------
    signal in_reg      : signed(13 downto 0)  :=(others=>'0');
    signal out_reg     : signed(DATAOUT'length-1 downto 0)  := 
     (others=>'0');
     -- ----------------------------------------------------------
     signal fs          : std_logic :='0';
    --------------------kdelay component----------------------------------
    component kdelay is 
        GENERIC (
        K  : integer  :=80;
        L  : integer  :=200
        );
         port 
          (
              clk           : in  std_logic ;
              rst           : in  std_logic;
              din           : in  STD_LOGIC_VECTOR (13 downto 0);
              kout          : OUT STD_LOGIC_VECTOR (13 downto 0)

                   );
                end component;
                signal kout   : std_logic_vector (13 downto 0) :=(others=> 
                '0');
                --------------------Ldelay component---------------------- 
                ------------
              component Ldelay is 
               GENERIC (
                    K  : integer  :=80;
                    L  : integer  :=200

                    );
                 port 
                         (
                          clk          : in  std_logic ;
                         rst           : in  std_logic;
                         din           : in  STD_LOGIC_VECTOR (13 downto 
                                           0);
                         Lout          : OUT STD_LOGIC_VECTOR (13 downto 
                                             0)

                      );
                       end component;
                      signal Lout : std_logic_vector (13 downto 0) := 
                      (others=>'0');
                       ---------------------------------------------------
                      component sub_mult is 
                      port(
                            clk           : in  std_logic ;
                            rst           : in  std_logic;
                            din           : in STD_LOGIC_VECTOR (13 downto 
                                             0);
                            Sout          : out STD_LOGIC_VECTOR (23 
                                            downto 0)
                                       );
                              end component;
                               signal Sout    : std_logic_vector (23 
                                              downto 0) :=(others=>'0');     
                               -------------------------------------------
                                component accum1 is 
                                     port(
                                         clk           : in  std_logic ;
                                         rst           : in  std_logic;
                                         din           : in 
                                         STD_LOGIC_VECTOR  (23 downto 0);
                                         Acout          : out 
                                         STD_LOGIC_VECTOR (24 downto 0);
                                         Acout1         : out 
                                         STD_LOGIC_VECTOR (25 downto 0)
                                            );
                                            end component;
                                          signal acc_out1 : std_logic_vector (24 downto 0) :=(others=>'0');
                                         signal acc_out2 : std_logic_vector (25 downto 0) :=(others=>'0');
                                          ----------------------------------------------------------------
                     BEGIN
                       Koutout     <= Kout;
                       Loutout     <= Lout;
                       Soutout     <= Sout;
                       in_reg      <= signed (DATAIN);
                       DATAOUT     <= acc_out1;--std_logic_vector(out_reg);
                      DATAOUT1    <= acc_out2;
                      utacc1:component accum1  
                      port map(
                          clk           => clk,
                          rst           => rst,--: in  std_logic;
                         din           => Sout, --: OUT STD_LOGIC_VECTOR 
              (13 downto 0);
                       Acout         => acc_out1, -- : out STD_LOGIC_VECTOR (24 downto 0)
                      Acout1        => acc_out2
                      );
                     END RTL;
                  ------------------------Accum1 component----------------------------------
  library IEEEieee;`
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.std_logic_unsigned.all;
use ieee.fixed_pkg.all;

   entity accum1 is port(
clk           : in  std_logic ;
rst           : in  std_logic;
din           : in STD_LOGIC_VECTOR  (23 downto 0);
Acout          : out STD_LOGIC_VECTOR (24 downto 0);
Acout1         : out STD_LOGIC_VECTOR (25 downto 0)
 ); 
end entity;
architecture rtl of accum1 is
signal dout        :  signed(24 downto 0) :=(others=>'0');    
signal datain      : signed(23 downto 0) :=(others=>'0');
signal dout2       : signed(25 downto 0)  :=(others=>'0');
begin
datain        <= signed(din);
process(clk,rst,datain)
variable cm     : signed(24 downto 0);
begin
       if(rst='1' ) then
          dout    <= (others=>'0'); 
          dout2    <= (others=>'0');
          cm     := (others=>'0');
        elsif(rising_edge(clk) and clk'event) then    
            cm    := datain + cm;
            dout  <= cm ;
            dout2 <= dout2 + cm ;
        end if;
        end process;
    Acout        <= std_logic_vector(dout);
   Acout1      <= std_logic_vector(dout2) ; 
  end rtl;
  ------------------------test bench only trapfilter comppnent portmapping
              uttrap5:component TRAPFILTER  
              PORT MAP
              (
               CLK        => TestClk, --        : IN    STD_LOGIC;
               RST        => i_rstb, --  : IN    STD_LOGIC; 
               DATAIN     => odata, --odata, -- : IN    STD_LOGIC_VECTOR(13 DOWNTO 0);
              DATAOUT     => trap_out, --: OUT   STD_LOGIC_VECTOR(13 DOWNTO 0); ---
              DATAOUT1    => trap_out1,
              READY       => trap_ready,  --: OUT   STD_LOGIC
              Koutout     => Koutout, --out std_logic_vector(23 downto 0);
              Loutout      => loutout, --: out std_logic_vector(13 downto 0);
              Soutout     => Soutout

           );
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
使用IEEE.std_logic_unsigned.all;
使用ieee.fixed_pkg.all;
实体TRAPFILTER是
一般的(
K:整数:=80;
L:整数:=200
--M:已签名(9到0):=已签名(5)
);
港口
(
CLK:标准逻辑中;
RST:标准逻辑中;
数据输入:标准逻辑向量(13到0);
数据输出:输出标准逻辑向量(24到0);
DATAOUT1:OUT标准逻辑向量(25到0)---
就绪:输出标准逻辑;
Soutout:out标准逻辑向量(23向下至0);
Koutout:out标准逻辑向量(13到0);
Loutout:out标准逻辑向量(13到0)
); 
末端实体过滤器;
TRAPFILTER的RTL架构是
常数M:sfixed(1至-2):=至sfixed(0.01,1,-2);
类型Sdelay_reg是有符号(21到0)的数组(0到2);
信号S_reg:Sdelay_reg:=(其他=>(其他=>'0');
-------------------------------------------------------------
信号y_reg0:有符号(27向下至0):=(其他=>'0');
信号y_reg1:有符号(31向下至0):=(其他=>'0');
-----------------------------------------------------------
_reg中的信号:有符号(13向下至0):=(其他=>'0');
信号输出注册:已签名(数据输出长度-1向下至0):=
(其他=>'0');
-- ----------------------------------------------------------
信号fs:std_逻辑:='0';
--------------------kdelay组件----------------------------------
组件kdelay是
一般的(
K:整数:=80;
L:整数:=200
);
港口
(
clk:标准逻辑中;
rst:标准逻辑中;
din:标准逻辑向量(13至0);
输出标准逻辑向量(13到0)
);
端部元件;
信号输出:标准逻辑向量(13到0):=(其他=>
'0');
--------------------D铺设组件------------------
------------
组件显示为
一般的(
K:整数:=80;
L:整数:=200
);
港口
(
clk:标准逻辑中;
rst:标准逻辑中;
din:标准逻辑向量中(13向下)
0);
Lout:OUT标准逻辑向量(13向下)
0)
);
端部元件;
信号Lout:std_逻辑_向量(13向下至0):=
(其他=>'0');
---------------------------------------------------
组件子组件是
港口(
clk:标准逻辑中;
rst:标准逻辑中;
din:标准逻辑向量中(13向下)
0);
输出:输出标准逻辑向量(23
降到0)
);
端部元件;
信号源:标准逻辑向量(23
降到0):=(其他=>'0');
-------------------------------------------
组件accum1为
港口(
clk:标准逻辑中;
rst:标准逻辑中;
丁:在
标准逻辑向量(23向下至0);
A:出去
标准逻辑向量(24到0);
答案1:出去
标准逻辑向量(25到0)
);
端部元件;
信号acc_out1:std_逻辑_矢量(从24向下到0):=(其他=>'0');
信号acc_out2:std_逻辑_矢量(25向下至0):=(其他=>'0');
----------------------------------------------------------------
开始
Koutout“0”);
信号数据输入:有符号(23向下至0):=(其他=>'0');
信号dout2:有符号(25到0):=(其他=>'0');
开始
“0”中的数据;
elsif(上升沿(clk)和clk事件)然后
cm:=datain+cm;
dout trap_out,--:out标准逻辑向量(13到0)---
DATAOUT1=>trap_out1,
就绪=>陷阱就绪,--:输出标准逻辑
Koutout=>Koutout,--out标准逻辑向量(23向下至0);
Loutout=>lo