如何用VHDL实现分频?

如何用VHDL实现分频?,第1张

模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语言略。

这是对时钟进行10分频的VHDL代码,2,4,8,16分频原理与其唯启拆相同。

entity clk_div is

port (clk_in :in std_logic

clk_out:out std_logic)

end clk_div

architecture Behavioral of clk_div is

signal cnt:integer range 1 to 10

signal clk_temp:std_logic:='0'

begin

process (clk_in,cnt)

begin

if clk_in'event and clk_in='1' then

if cnt=10 then cnt<=1

else cnt<=cnt+1

end if

if cnt>5 then clk_temp<='1'

else clk_temp<='0'旁困

end if

end if

end process

clk_out<指枣=clk_temp

end Behavioral

42是16进制数字,换算成10进制就是66,。输入时钟是66M,用计数器计数,掘森计到66,CLK_1M翻转一次,然后计数器清零陆樱,再过66个时钟周期再翻转一次,循环得到的CLK_1M就是早散丛1MHz,。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8238095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存