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

📄 fir.vhd

📁 浮点fir设计工具
💻 VHD
📖 第 1 页 / 共 2 页
字号:
		variable ac_tmp_10 : signed( 24 downto 0 );
		variable ac_tmp_11 : signed( 24 downto 0 );
		variable ac_tmp_12 : signed( 24 downto 0 );
		variable ac_tmp_13 : signed( 24 downto 0 );
		variable ac_tmp_14 : signed( 24 downto 0 );
		variable ac_tmp_15 : signed( 24 downto 0 );
		variable ac_tmp_2 : signed( 24 downto 0 );
		variable ac_tmp_3 : signed( 24 downto 0 );
		variable ac_tmp_4 : signed( 24 downto 0 );
		variable ac_tmp_49 : signed( 24 downto 0 );
		variable ac_tmp_5 : signed( 24 downto 0 );
		variable ac_tmp_50 : signed( 24 downto 0 );
		variable ac_tmp_6 : signed( 24 downto 0 );
		variable ac_tmp_7 : signed( 24 downto 0 );
		variable ac_tmp_8 : signed( 24 downto 0 );
		variable ac_tmp_9 : signed( 24 downto 0 );
		variable mtimes_001_accum_16 : signed( 28 downto 0 );
		variable mtimes_001_prod1_1 : signed( 23 downto 0 );
		variable mtimes_001_prod1_10 : signed( 23 downto 0 );
		variable mtimes_001_prod1_11 : signed( 23 downto 0 );
		variable mtimes_001_prod1_12 : signed( 23 downto 0 );
		variable mtimes_001_prod1_13 : signed( 23 downto 0 );
		variable mtimes_001_prod1_14 : signed( 23 downto 0 );
		variable mtimes_001_prod1_15 : signed( 23 downto 0 );
		variable mtimes_001_prod1_16 : signed( 23 downto 0 );
		variable mtimes_001_prod1_2 : signed( 23 downto 0 );
		variable mtimes_001_prod1_3 : signed( 23 downto 0 );
		variable mtimes_001_prod1_4 : signed( 23 downto 0 );
		variable mtimes_001_prod1_5 : signed( 23 downto 0 );
		variable mtimes_001_prod1_6 : signed( 23 downto 0 );
		variable mtimes_001_prod1_7 : signed( 23 downto 0 );
		variable mtimes_001_prod1_8 : signed( 23 downto 0 );
		variable mtimes_001_prod1_9 : signed( 23 downto 0 );
	begin
		mtimes_001_prod1_9 := "000000000000000000000000";
		mtimes_001_prod1_8 := "000000000000000000000000";
		mtimes_001_prod1_7 := "000000000000000000000000";
		mtimes_001_prod1_6 := "000000000000000000000000";
		mtimes_001_prod1_5 := "000000000000000000000000";
		mtimes_001_prod1_4 := "000000000000000000000000";
		mtimes_001_prod1_3 := "000000000000000000000000";
		mtimes_001_prod1_2 := "000000000000000000000000";
		mtimes_001_prod1_16 := "000000000000000000000000";
		mtimes_001_prod1_15 := "000000000000000000000000";
		mtimes_001_prod1_14 := "000000000000000000000000";
		mtimes_001_prod1_13 := "000000000000000000000000";
		mtimes_001_prod1_12 := "000000000000000000000000";
		mtimes_001_prod1_11 := "000000000000000000000000";
		mtimes_001_prod1_10 := "000000000000000000000000";
		mtimes_001_prod1_1 := "000000000000000000000000";
		mtimes_001_accum_16 := "00000000000000000000000000000";
		ac_tmp_9 := "0000000000000000000000000";
		ac_tmp_8 := "0000000000000000000000000";
		ac_tmp_7 := "0000000000000000000000000";
		ac_tmp_6 := "0000000000000000000000000";
		ac_tmp_5 := "0000000000000000000000000";
		ac_tmp_4 := "0000000000000000000000000";
		ac_tmp_3 := "0000000000000000000000000";
		ac_tmp_2 := "0000000000000000000000000";
		ac_tmp_15 := "0000000000000000000000000";
		ac_tmp_14 := "0000000000000000000000000";
		ac_tmp_13 := "0000000000000000000000000";
		ac_tmp_12 := "0000000000000000000000000";
		ac_tmp_11 := "0000000000000000000000000";
		ac_tmp_10 := "0000000000000000000000000";
		ac_tmp_1 := "0000000000000000000000000";
		ac_tmp_15 := ac_shared_multiply_0_result;
		ac_tmp_49 := ac_tmp_15;
		mtimes_001_prod1_1 := ac_tmp_49( 23 downto 0 );
		ac_shared_adder_1_lhs := (mtimes_001_prod1_1(23) & (mtimes_001_prod1_1(23) & (mtimes_001_prod1_1(23) & (mtimes_001_prod1_1(23) & (mtimes_001_prod1_1(23) & mtimes_001_prod1_1)))));
		ac_tmp_50 := ac_tmp_0;
		mtimes_001_prod1_16 := ac_tmp_50( 23 downto 0 );
		mtimes_001_accum_16 := (mtimes_001_prod1_16(23) & (mtimes_001_prod1_16(23) & (mtimes_001_prod1_16(23) & (mtimes_001_prod1_16(23) & (mtimes_001_prod1_16(23) & mtimes_001_prod1_16)))));

		case fir_process_state is

			when sm0_14 => 
				ac_shared_adder_1_rhs := mtimes_001_accum_16;

			when sm0_13 | sm0_12 | sm0_11 | sm0_10 | sm0_9 | sm0_8 | sm0_7 | sm0_6 | sm0_5 | sm0_4 | sm0_3 | sm0_2 | sm0_1 | sm0_0 => 
				ac_shared_adder_1_rhs := mtimes_001_accum_regmerge_1;

			when others => 
				ac_shared_adder_1_rhs := "00000000000000000000000000000";

		end case; --fir_process_state

		ac_shared_adder_1_result <= (ac_shared_adder_1_lhs + ac_shared_adder_1_rhs);

	end process ac_shared_adder_1_process_combinational_0;


	fir_process_clocked:
	process ( Clock ) is
		variable ac_tmp_51 : signed( 28 downto 0 );
	begin
		if (rising_edge(Clock)) then
			if ((Reset = '1')) then
				ac_OutputAvail <= ('0');
				ac_is_busy <= false;
				ac_latch_indatabuf_1 <= "000000000000";
				ac_scalar_tap_delay_0 <= "000000000000";
				ac_scalar_tap_delay_1 <= "000000000000";
				ac_scalar_tap_delay_10 <= "000000000000";
				ac_scalar_tap_delay_11 <= "000000000000";
				ac_scalar_tap_delay_12 <= "000000000000";
				ac_scalar_tap_delay_13 <= "000000000000";
				ac_scalar_tap_delay_14 <= "000000000000";
				ac_scalar_tap_delay_15 <= "000000000000";
				ac_scalar_tap_delay_2 <= "000000000000";
				ac_scalar_tap_delay_3 <= "000000000000";
				ac_scalar_tap_delay_4 <= "000000000000";
				ac_scalar_tap_delay_5 <= "000000000000";
				ac_scalar_tap_delay_6 <= "000000000000";
				ac_scalar_tap_delay_7 <= "000000000000";
				ac_scalar_tap_delay_8 <= "000000000000";
				ac_scalar_tap_delay_9 <= "000000000000";
				ac_tmp_0 <= "0000000000000000000000000";
				mtimes_001_accum_regmerge_1 <= "00000000000000000000000000000";
				outdatabuf <= "00000000000000000000000000";
				fir_process_state <= sm0_15;
			else

				case fir_process_state is

					when sm0_15 => 
						if (proceed_var) then
							ac_latch_indatabuf_1 <= indatabuf;
							ac_tmp_0 <= ac_shared_multiply_0_result;
							fir_process_state <= sm0_14;
							ac_OutputAvail <= '0';
							ac_is_busy <= true;
						else
							ac_OutputAvail <= '0';
						end if;

					when sm0_14 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_13;

					when sm0_13 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_12;

					when sm0_12 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_11;

					when sm0_11 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_10;

					when sm0_10 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_9;

					when sm0_9 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_8;

					when sm0_8 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_7;

					when sm0_7 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_6;

					when sm0_6 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_5;

					when sm0_5 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_4;

					when sm0_4 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_3;

					when sm0_3 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_2;

					when sm0_2 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_1;

					when sm0_1 => 
						mtimes_001_accum_regmerge_1 <= ac_shared_adder_1_result;
						fir_process_state <= sm0_0;

					when sm0_0 => 
						ac_tmp_51 := ac_shared_adder_1_result;
						outdatabuf <= ac_tmp_51( 25 downto 0 );
						ac_scalar_tap_delay_0 <= ac_scalar_tap_delay_1;
						ac_scalar_tap_delay_1 <= ac_scalar_tap_delay_2;
						ac_scalar_tap_delay_2 <= ac_scalar_tap_delay_3;
						ac_scalar_tap_delay_3 <= ac_scalar_tap_delay_4;
						ac_scalar_tap_delay_4 <= ac_scalar_tap_delay_5;
						ac_scalar_tap_delay_5 <= ac_scalar_tap_delay_6;
						ac_scalar_tap_delay_6 <= ac_scalar_tap_delay_7;
						ac_scalar_tap_delay_7 <= ac_scalar_tap_delay_8;
						ac_scalar_tap_delay_8 <= ac_scalar_tap_delay_9;
						ac_scalar_tap_delay_9 <= ac_scalar_tap_delay_10;
						ac_scalar_tap_delay_10 <= ac_scalar_tap_delay_11;
						ac_scalar_tap_delay_11 <= ac_scalar_tap_delay_12;
						ac_scalar_tap_delay_12 <= ac_scalar_tap_delay_13;
						ac_scalar_tap_delay_13 <= ac_scalar_tap_delay_14;
						ac_scalar_tap_delay_14 <= ac_scalar_tap_delay_15;
						ac_scalar_tap_delay_15 <= ac_latch_indatabuf_1;
						fir_process_state <= sm0_15;
						ac_OutputAvail <= '1';
						ac_is_busy <= false;

				end case; --fir_process_state

			end if;
		end if;

	end process fir_process_clocked;

end RTL;

⌨️ 快捷键说明

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