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

📄 lowpassfiltervhdlcord.txt

📁 低通滤波器的VHDL代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:

  sub_temp_10 <= resize(b2sum6 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul6, 39);
  a2sum6 <= resize( shift_right( sub_temp_10(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_11 <= resize(a2sum6 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a3mul6, 39);
  a1sum6 <= resize( shift_right( sub_temp_11(37 DOWNTO 17) + 1, 1), 20);

  -- ------------------ Section 7 ------------------

  numtypeconvert7 <= dentypeconvert6;

  dentypeconvert7 <= resize( a1sum7(15 DOWNTO 0) & '0' & '0' & '0' & '0', 20);

  -- Reusing denominator delays from last section as this section's numerator delays

  dendelay_process_section7 : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      dendelay_section7(0 TO 1) <= (OTHERS => (OTHERS => '0'));
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        dendelay_section7(0) <= dentypeconvert7;
        dendelay_section7(1) <= dendelay_section7(0);
      END IF;
    END IF; 
  END PROCESS dendelay_process_section7;


  a2mul7 <= dendelay_section7(0) * coeff_a2_section7;

  a3mul7 <= dendelay_section7(1) * coeff_a3_section7;

  b1mul7 <= numtypeconvert7 * coeff_b1_section7;

  b2mul7 <= dendelay_section6(0) * coeff_b2_section7;

  b3mul7 <= dendelay_section6(1) * coeff_b3_section7;

  b1multypeconvert7 <= resize( shift_right( (b1mul7(35) & b1mul7(35 DOWNTO 17) + 1), 1), 20);

  add_temp_12 <= resize(b1multypeconvert7 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b2mul7, 39);
  b1sum7 <= resize( shift_right( add_temp_12(37 DOWNTO 17) + 1, 1), 20);

  add_temp_13 <= resize(b1sum7 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b3mul7, 39);
  b2sum7 <= resize( shift_right( add_temp_13(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_12 <= resize(b2sum7 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul7, 39);
  a2sum7 <= resize( shift_right( sub_temp_12(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_13 <= resize(a2sum7 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a3mul7, 39);
  a1sum7 <= resize( shift_right( sub_temp_13(37 DOWNTO 17) + 1, 1), 20);

  -- ------------------ Section 8 ------------------

  numtypeconvert8 <= dentypeconvert7;

  dentypeconvert8 <= resize( a1sum8(15 DOWNTO 0) & '0' & '0' & '0' & '0', 20);

  -- Reusing denominator delays from last section as this section's numerator delays

  dendelay_process_section8 : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      dendelay_section8(0 TO 1) <= (OTHERS => (OTHERS => '0'));
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        dendelay_section8(0) <= dentypeconvert8;
        dendelay_section8(1) <= dendelay_section8(0);
      END IF;
    END IF; 
  END PROCESS dendelay_process_section8;


  a2mul8 <= dendelay_section8(0) * coeff_a2_section8;

  a3mul8 <= dendelay_section8(1) * coeff_a3_section8;

  b1mul8 <= numtypeconvert8 * coeff_b1_section8;

  b2mul8 <= dendelay_section7(0) * coeff_b2_section8;

  b3mul8 <= dendelay_section7(1) * coeff_b3_section8;

  b1multypeconvert8 <= resize( shift_right( (b1mul8(35) & b1mul8(35 DOWNTO 17) + 1), 1), 20);

  add_temp_14 <= resize(b1multypeconvert8 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b2mul8, 39);
  b1sum8 <= resize( shift_right( add_temp_14(37 DOWNTO 17) + 1, 1), 20);

  add_temp_15 <= resize(b1sum8 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b3mul8, 39);
  b2sum8 <= resize( shift_right( add_temp_15(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_14 <= resize(b2sum8 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul8, 39);
  a2sum8 <= resize( shift_right( sub_temp_14(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_15 <= resize(a2sum8 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a3mul8, 39);
  a1sum8 <= resize( shift_right( sub_temp_15(37 DOWNTO 17) + 1, 1), 20);

  -- ------------------ Section 9 ------------------

  numtypeconvert9 <= dentypeconvert8;

  dentypeconvert9 <= resize( a1sum9(15 DOWNTO 0) & '0' & '0' & '0' & '0', 20);

  -- Reusing denominator delays from last section as this section's numerator delays

  dendelay_process_section9 : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      dendelay_section9(0 TO 1) <= (OTHERS => (OTHERS => '0'));
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        dendelay_section9(0) <= dentypeconvert9;
        dendelay_section9(1) <= dendelay_section9(0);
      END IF;
    END IF; 
  END PROCESS dendelay_process_section9;


  a2mul9 <= dendelay_section9(0) * coeff_a2_section9;

  a3mul9 <= dendelay_section9(1) * coeff_a3_section9;

  b1mul9 <= numtypeconvert9 * coeff_b1_section9;

  b2mul9 <= dendelay_section8(0) * coeff_b2_section9;

  b3mul9 <= dendelay_section8(1) * coeff_b3_section9;

  b1multypeconvert9 <= resize( shift_right( (b1mul9(35) & b1mul9(35 DOWNTO 17) + 1), 1), 20);

  add_temp_16 <= resize(b1multypeconvert9 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b2mul9, 39);
  b1sum9 <= resize( shift_right( add_temp_16(37 DOWNTO 17) + 1, 1), 20);

  add_temp_17 <= resize(b1sum9 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b3mul9, 39);
  b2sum9 <= resize( shift_right( add_temp_17(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_16 <= resize(b2sum9 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul9, 39);
  a2sum9 <= resize( shift_right( sub_temp_16(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_17 <= resize(a2sum9 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a3mul9, 39);
  a1sum9 <= resize( shift_right( sub_temp_17(37 DOWNTO 17) + 1, 1), 20);

  -- ------------------ Section 10 ------------------

  numtypeconvert10 <= dentypeconvert9;

  dentypeconvert10 <= resize( a1sum10(15 DOWNTO 0) & '0' & '0' & '0' & '0', 20);

  -- Reusing denominator delays from last section as this section's numerator delays

  dendelay_process_section10 : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      dendelay_section10(0 TO 1) <= (OTHERS => (OTHERS => '0'));
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        dendelay_section10(0) <= dentypeconvert10;
        dendelay_section10(1) <= dendelay_section10(0);
      END IF;
    END IF; 
  END PROCESS dendelay_process_section10;


  a2mul10 <= dendelay_section10(0) * coeff_a2_section10;

  a3mul10 <= dendelay_section10(1) * coeff_a3_section10;

  b1mul10 <= numtypeconvert10 * coeff_b1_section10;

  b2mul10 <= dendelay_section9(0) * coeff_b2_section10;

  b3mul10 <= dendelay_section9(1) * coeff_b3_section10;

  b1multypeconvert10 <= resize( shift_right( (b1mul10(35) & b1mul10(35 DOWNTO 17) + 1), 1), 20);

  add_temp_18 <= resize(b1multypeconvert10 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b2mul10, 39);
  b1sum10 <= resize( shift_right( add_temp_18(37 DOWNTO 17) + 1, 1), 20);

  add_temp_19 <= resize(b1sum10 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b3mul10, 39);
  b2sum10 <= resize( shift_right( add_temp_19(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_18 <= resize(b2sum10 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul10, 39);
  a2sum10 <= resize( shift_right( sub_temp_18(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_19 <= resize(a2sum10 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a3mul10, 39);
  a1sum10 <= resize( shift_right( sub_temp_19(37 DOWNTO 17) + 1, 1), 20);

  -- ------------------ Section 11 ------------------

  numtypeconvert11 <= dentypeconvert10;

  dentypeconvert11 <= resize( a1sum11(15 DOWNTO 0) & '0' & '0' & '0' & '0', 20);

  -- Reusing denominator delays from last section as this section's numerator delays

  dendelay_process_section11 : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      dendelay_section11(0 TO 1) <= (OTHERS => (OTHERS => '0'));
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        dendelay_section11(0) <= dentypeconvert11;
        dendelay_section11(1) <= dendelay_section11(0);
      END IF;
    END IF; 
  END PROCESS dendelay_process_section11;


  a2mul11 <= dendelay_section11(0) * coeff_a2_section11;

  a3mul11 <= dendelay_section11(1) * coeff_a3_section11;

  b1mul11 <= numtypeconvert11 * coeff_b1_section11;

  b2mul11 <= dendelay_section10(0) * coeff_b2_section11;

  b3mul11 <= dendelay_section10(1) * coeff_b3_section11;

  b1multypeconvert11 <= resize( shift_right( (b1mul11(35) & b1mul11(35 DOWNTO 17) + 1), 1), 20);

  add_temp_20 <= resize(b1multypeconvert11 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b2mul11, 39);
  b1sum11 <= resize( shift_right( add_temp_20(37 DOWNTO 17) + 1, 1), 20);

  add_temp_21 <= resize(b1sum11 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) + resize(b3mul11, 39);
  b2sum11 <= resize( shift_right( add_temp_21(37 DOWNTO 17) + 1, 1), 20);

  sub_temp_20 <= resize(b2sum11 & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 39) - resize(a2mul11, 39);
  a2sum11 <= resize( shift_right( sub_temp_20(37 DOWNTO 17) + 1, 1), 20);

⌨️ 快捷键说明

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