分频电路的分频方式,分频电路 2023-12-13 01:50:51 0 0 描述 分频电路的分频方式 构成简单的分频电路人可以听到的声音的频率范 围是在20Hz—20kHz之间,祈望仅使用一只扬声器就能够保证放送20Hz—20kHz这样宽频率的声音是很难做到的,因为这会在技术上存在各种各样 的问题和困难。所以,在通常情况下,高质量的放音系统为了保证再现声音的频率响应和频带宽度,在专业范畴内大都采用高低音分离式音箱放音。而采用高低音分 离式音箱放送声音时,就必然要对声音按频段分离,将声音按频率分段的个数就是声音分频数。 声音的分频主要是受扬声器的控制,因为绝大多数扬声器都有自己最适合的频率范围,真正的高质量全频扬声器非常少见并且价格极端昂贵。同时为了克服不同频率声音扬声器引起的切割失真和减少同一音箱中的不同扬声器之间产生的声音干涉现象,必须对声音进行分频,将不同频段的声音送入不同的扬声器。 从分频方式看可以分为两种,一种是主动分频(PassiveCrossover),或者叫电子分频,也可以叫外置分频、有源分频;另一种是被动分频 (ActiveCrossover),或者叫功率分频,也可以叫内置分频、无源分频。主动分频是指分频器不在音箱内部,而在功率放大之前,由于此时声音信 号很弱,因此容易将声音彻底分频,缺点是相应的电子线路分频点较为固定,不容易和不同扬声器配合,常见于高端和专业音响,随着多路功放的普及,主动分频方 式比以前普及很多。被动分频是指分频器在音箱内,此时声音信号已经经过放大,分频电路会造成一定干扰,但音箱可以适用于不同功放。 最简单的分频就是二分频,将声音分为高频和低频,分频点需要高于低音喇叭上限频率的1/2,低于高音喇叭下限频率的2倍,一般的分频点在2K到5K之间。但是这样分频对低音照顾仍然不够完善,因为低音为 了获得更好效果,往往需要单独处理,并且扬声器的切割失真对低音的影响也最大,因此近些年三分频逐渐流行起来。三分频是将声音分为低音、中音和高音,有两 个分频点,低音分频点一般在200Hz以下,或者120Hz,甚至更低,高音分频点一般为2Hz-6KHz。此外也有少量的四分频或者多分频系统。显然更 多分频数理论上更有利于声音的还原,但过多的分频点会造成整体成本上升,并且实际效果提升有限,因此常见的分频数仍然是二分频和三分频。 2N分频电路的实现方法 1 目的 分频系数较大的2N 分频电路需要采用标准计数器来实现,此处的方法是直接将计数器的相应位赋给分频电路的输出信号即可实现分频功能。采用这个方法的好处是:一是不需要定义中间信号,设计简单,节约资源;二是可以避免毛刺现象的发生,从而避免了逻辑错误产生的可能性。 下面采用VHDL 和Verilog 两种语言实现的2分频、4分频和8分频。 2 VHDL实现(不带复位信号) LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_arith.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY clk_8div_2 IS PORT(CLK:IN std_logic; CLK_DIV2:OUT std_logic; CLK_DIV4:OUT std_logic; CLK_DIV8:OUT std_logic); END clk_8div_2; ARCHITECTURE rtl OF clk_8div_2 IS SIGNAL counter:std_logic_vector(2 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF(CLK’event AND CLK=’1’) THEN IF (counter = “111”) THEN count’0’); ELSE counter END IF; END PROCESS; CLK_DIV2 CLK_DIV4 CLK_DIV8 END rtl; 3 Verilog实现(有复位信号) 3.1 module clk_8div_2( input CLK, output CLK_DIV2, output CLK_DIV4, output CLK_DIV8, input RESET ); reg [2:0] clk_counter; always @ (posedge CLK or posedge RESET) begin if (RESET) begin clk_counter end begin clk_counter assign CLK_DIV2 = clk_counter[0]; assign CLK_DIV4 = clk_counter[1]; assign CLK_DIV8 = clk_counter[2]; endmodule 3.2 测试文件 module test_clk; // Inputs reg CLK; reg RESET; // Outputs wire CLK_DIV2; wire CLK_DIV4; wire CLK_DIV8; // Instantiate the Unit Under Test (UUT) clk_8div_2 uut ( .CLK(CLK), ); .CLK_DIV4(CLK_DIV4), .CLK_DIV8(CLK_DIV8), .RESET(RESET) initial begin // Initialize Inputs CLK = 0; RESET = 1; // Wait 100 ns for global reset to finish #100; RESET = 0; end always #10 CLK 收藏(0)