顶层模块程序:
entity control_clk is
port(
Clk_i : in std_logic
Data_i : in std_logic_vector(4 downto 0)
Clk_div: out std_logic
)
end control_clk
architecture rlt_control of control_clk is
component odd_div is
port(
Clk_i : in std_logic
Data_i : in std_logic_vector(4 downto 0)
Clk_odd: out std_logic
)
end component
signal clk_odd : std_logic :='0'
component even_div is
port(
Clk_i : in std_logic
Data_i : in std_logic_vector(4 downto 0)
Clk_even : out std_logic
)
end component
signal clk_even : std_logic :='0'
signal odd_even : std_logic :='0'
begin
odd_u : odd_div
port map(
Clk_i =>Clk_i,
Data_i =>Data_i,
Clk_odd=>clk_odd
)
even_u : even_div
port map(
Clk_i =>Clk_i,
Data_i =>Data_i,
Clk_even=>clk_even
)
odd_even <= Data_i(0)
process(odd_even,clk_even,clk_odd)
begin
if odd_even ='0' then
Clk_div <= clk_even
else
Clk_div <= clk_odd
end if
end process
end rlt_control
是分频器吧。用将输入的模拟音频信号分离成高音、中音、低音等不同部分,然后分别送入相应的高、中、低音喇叭单元中重放,即可实现分频。以2分频为例,2000Hz的信号,经过2分频之后变成1000Hz,处理的过程是,设计一个循环计数器,对输入脉冲进行计数,计数规则是0-1-0-1-0-1-0??这种计数器每归零一次给出一个溢出信号。就实现了2分频。
从电路结构来看,分频器本质上是由电容器和电感线圈构成的LC滤波网络,高音通道是高通滤波器,它只让高频信号通过而阻止低频信号;低音通道正好相反,它只让低音通过而阻止高频信号。
模N计数器的实现
一般设计中用到计数器时,我们可以调用lpm库中的计数器模块,也可以采用VHDL语言自己设计一个模N计数器。本设计采用VHDL语言设计一个最大模值为16的计数器。输入端口为:使能信号en,复位信号clr和时钟信号clk输出端口为:qa、qb、qc、qd。其VHDL语言描述略。
带使能控制的异或门的实现
输入端为:xor_en:异或使能,a和b:异或输入输出端为:c:异或输出。当xor_en为高电平时,c输出a和b的异或值。当xor_en为低电平时,c输出信号b。其VHDL语言略。
2分频(触发器)的实现
输入端为:时钟信号clk,输入信号d输出端为:q:输出信号a,q1:输出信号a反。其VHDL语言略。
4.分频器的实现
本设计采用层次化的设计方法,首先设计实现分频器电路中各组成电路元件,然后通过元件例化的方法,调用各元件,实现整个分频器。其VHDL语言略。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)