⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loop_filter.vhdl

📁 FM收音机的解码及控制器VHDL语言实现
💻 VHDL
字号:
-- $Id: loop_filter.vhdl,v 1.1.1.1 2005/01/04 02:05:58 arif_endro Exp $--------------------------------------------------------------------------------- Title       : Loop filter component-- Project     : FM Receiver --------------------------------------------------------------------------------- File        : loop_filter.vhdl-- Author      : "Arif E. Nugroho" <arif_endro@yahoo.com>-- Created     : 2004/11/12-- Last update : -- Simulators  : Modelsim 6.0-- Synthesizers: -- Target      : --------------------------------------------------------------------------------- Description : loop filter in PLL loop--------------------------------------------------------------------------------- Copyright (c) 2004 Arif E. Nugroho-- This VHDL design file is an open design; you can redistribute it and/or-- modify it and/or implement it after contacting the author-------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_arith.ALL;entity loop_filter is  port (     input_loop   : in  bit_vector (07 downto 0);     clock        : in  bit;     output_loop  : out bit_vector (11 downto 0);     clear        : in  bit     );end loop_filter;architecture structural of loop_filter is  component adder_12bit     port (     addend_12bit   : in  bit_vector (11 downto 0);     augend_12bit   : in  bit_vector (11 downto 0);     adder12_output : out bit_vector (12 downto 0)     );  end component;  component sub_12bit     port (     addend_12bit        : in  bit_vector (11 downto 0);     subtrahend_12bit    : in  bit_vector (11 downto 0);     subtractor12_output : out bit_vector (11 downto 0)     );  end component;  signal input_recv        : bit_vector (11 downto 0);  signal loop_out          : bit_vector (11 downto 0);  signal loop_out_div      : bit_vector (11 downto 0);  signal loop_out_back1    : bit_vector (11 downto 0);  signal multiply_output01 : bit_vector (11 downto 0);  signal adder_output01    : bit_vector (12 downto 0);  signal adder_output01_reg: bit_vector (12 downto 0);  begin   input_recv (11) <= input_loop (07); -- 1  input_recv (10) <= input_loop (07); -- 1/2  input_recv (09) <= input_loop (07); -- 1/4  input_recv (08) <= input_loop (07); -- 1/8  input_recv (07) <= input_loop (07); -- 1/16  input_recv (06) <= input_loop (06);  input_recv (05) <= input_loop (05);  input_recv (04) <= input_loop (04);  input_recv (03) <= input_loop (03);  input_recv (02) <= input_loop (02);  input_recv (01) <= input_loop (01);  input_recv (00) <= input_loop (00);adder01 : adder_12bit  port map (	  addend_12bit    => loop_out_div,	  augend_12bit    => input_recv,	  adder12_output  => adder_output01	  );  loop_out_back1(11)  <= loop_out(11); -- 1  loop_out_back1(10)  <= loop_out(11); -- 1/2  loop_out_back1(09)  <= loop_out(11); -- 1/4  loop_out_back1(08)  <= loop_out(11); -- 1/8  loop_out_back1(07)  <= loop_out(11); -- 1/16  loop_out_back1(06)  <= loop_out(10);  loop_out_back1(05)  <= loop_out(09);  loop_out_back1(04)  <= loop_out(08);  loop_out_back1(03)  <= loop_out(07);  loop_out_back1(02)  <= loop_out(06);  loop_out_back1(01)  <= loop_out(05);  loop_out_back1(00)  <= loop_out(04);multiply01 : sub_12bit  port map (	  addend_12bit               => loop_out,	  subtrahend_12bit           => loop_out_back1,	  subtractor12_output        => multiply_output01	  );  loop_out_div <= multiply_output01;  adder_output01_reg (11) <= (adder_output01 (11) and not(clear));  adder_output01_reg (10) <= (adder_output01 (10) and not(clear));  adder_output01_reg (09) <= (adder_output01 (09) and not(clear));  adder_output01_reg (08) <= (adder_output01 (08) and not(clear));  adder_output01_reg (07) <= (adder_output01 (07) and not(clear));  adder_output01_reg (06) <= (adder_output01 (06) and not(clear));  adder_output01_reg (05) <= (adder_output01 (05) and not(clear));  adder_output01_reg (04) <= (adder_output01 (04) and not(clear));  adder_output01_reg (03) <= (adder_output01 (03) and not(clear));  adder_output01_reg (02) <= (adder_output01 (02) and not(clear));  adder_output01_reg (01) <= (adder_output01 (01) and not(clear));  adder_output01_reg (00) <= (adder_output01 (00) and not(clear));  process (clock)  begin--if (((clock = '1') and (not (clear = '1'))) and clock'event) then  if ((clock = '1') and clock'event) then-- loop_out (11) <= adder_output01_reg (12);   loop_out (11) <= adder_output01_reg (11);   loop_out (10) <= adder_output01_reg (10);   loop_out (09) <= adder_output01_reg (09);   loop_out (08) <= adder_output01_reg (08);   loop_out (07) <= adder_output01_reg (07);   loop_out (06) <= adder_output01_reg (06);   loop_out (05) <= adder_output01_reg (05);   loop_out (04) <= adder_output01_reg (04);   loop_out (03) <= adder_output01_reg (03);   loop_out (02) <= adder_output01_reg (02);   loop_out (01) <= adder_output01_reg (01);   loop_out (00) <= adder_output01_reg (00);--  end if;--  elsif (clear = '1') then -- can't be synhesized in Xilinx--   loop_out <= (others => '0');  end if;  end process;  output_loop <= loop_out;end structural;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -