justin_n 发表于 2013-5-12 20:26:47

写了一段CLC的滤波器,但是出来的波形怎么是矩形波?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

--Uncomment the following lines to use the declarations that are
--provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;

entity hb is
    Port (sysclk : in std_logic;
--            ena : in std_logic;
            enclk : out std_logic;
            daclk : out std_logic;
                datain : in std_logic_vector(7 downto 0);
                --dataine : out std_logic_vector(15 downto 0);
        --sampleclk1: in std_logic;            ------------------------------------------
--sampleclk1 is 10.28K

--       sampleclk2: in std_logic;                ---------------------------------------------
--sampleclk2 is 10.28*256=2.63
         dataout : out std_logic_vector(11 downto 0));   -------------------------------15
end hb;
   
   

architecture Behavioral of hb is
component pll is
   PORT
        (
                areset                : IN STD_LOGIC:= '0';
                inclk0                : IN STD_LOGIC:= '0';
                c0                : OUT STD_LOGIC ;
                locked                : OUT STD_LOGIC
        );
end component;

---------------rclock signals is added here



----------------
signaldatainext : std_logic_vector(27 downto 0);--29
signalacca: std_logic_vector(27 downto 0);---29
signalenclk_temp: std_logic;
signaldaclk_temp: std_logic;
signal clk_50M    : STD_LOGIC;


signalaccb: std_logic_vector(27 downto 0);--24
--signalaccb_delay: std_logic_vector(27 downto 0);
signalaccc: std_logic_vector(27 downto 0);
--signalaccc_delay :std_logic_vector(27 downto 0);
signalaccd: std_logic_vector(27 downto 0);
signalaccd_delay :std_logic_vector(27 downto 0);

signalcomb1:       std_logic_vector(27 downto 0);--
--signalcomb1e:       std_logic_vector(17 downto 0);--
signalcomb1_delay:       std_logic_vector(27 downto 0);--13
signalcomb2:       std_logic_vector(27 downto 0);---
signalcomb2_delay:       std_logic_vector(27 downto 0);--12
signalcomb3:       std_logic_vector(27 downto 0);--12
signalcomb3_delay:       std_logic_vector(27 downto 0);
signalcomb4:       std_logic_vector(27 downto 0);
signalcomb4_delay:       std_logic_vector(27 downto 0);
signaldecimate_count: std_logic_vector(3 downto 0);
                               
begin          

--------------------produce sampleclk1 and sampleclk2

---------------------------------
-----------------rcic filter
--------------------------------
      datainext(27)<=datain(7);
      datainext(26)<=datain(7);
                datainext(25)<=datain(7);
                datainext(24)<=datain(7);
                datainext(23)<=datain(7);
                datainext(22)<=datain(7);
                datainext(21)<=datain(7);
                datainext(20)<=datain(7);
                datainext(19)<=datain(7);
                datainext(18)<=datain(7);
                datainext(17)<=datain(7);
                datainext(16)<=datain(7);
                datainext(15)<=datain(7);
                datainext(14)<=datain(7);
                datainext(13)<=datain(7);
                datainext(12)<=datain(7);
                datainext(11)<=datain(7);
                datainext(10)<=datain(7);
                datainext(9)<=datain(7);
                datainext(8)<=datain(7);
                datainext(7 downto 0)<=datain(7 downto 0);
               
               
               
       
          dataout<=comb4(27 downto 16);---(29 downto 14);
          
          --enclk_temp<=sysclk;
          --daclk_temp<=sysclk;
          enclk   <= clk_50M;
          daclk   <= clk_50M;
       
             --dataine<=datain&"0000";
process (clk_50M)
begin       
   if clk_50M='1' and clk_50M'event then
      decimate_count<=decimate_count+1;
--      if sampleclk2='1' then
       acca<=acca+datainext;
--   acca_delay<=acca;
       accb<=accb+acca;
       accc<=accc+accb;
       accd<=accd+accc;
       if decimate_count="1111" then---Decimation Ratio=16
       accd_delay<=accd;
       comb1_delay<=comb1;
       comb2_delay<=comb2;
       comb3_delay<=comb3;
       comb1<=accd-accd_delay;
       comb2<=comb1-comb1_delay;
       comb3<=comb2-comb2_delay;
       comb4<=comb3-comb3_delay;
               end if;
       end if;
                   end process;
        u1:pll port map (inclk0=>sysclk,c0=>clk_50M);                               
       end Behavioral;

justin_n 发表于 2013-5-12 20:31:31

图。。。。。。
页: [1]
查看完整版本: 写了一段CLC的滤波器,但是出来的波形怎么是矩形波?