对于偶数分频,实现任意整数的分频比较容易,但对于奇数分频,实现50%的占空比却是比较困难的。以前也曾思考过这个问题,但都没有结果,昨天看到这个http://www.edacn.net/bbs/viewthread.php?tid=103921&page=1#pid923044帖子,仔细琢磨后,觉得整个方法很好,也很好理解,可以推广到任意奇数的50%分频,于是就用VHDL改写。以下就以3分频为例,作以介绍。源程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fdiv3 is port( clk,reset : in std_logic; clkout : out std_logic); end fdiv3; architecture behave of fdiv3 is signal s1,s2 : std_logic; signal cnt : integer range 0 to 2; begin P1: process(clk,reset) --计数器 begin if reset='1' then cnt<=0; elsif clk'event and clk='1' then if cnt=2 then cnt<=0; else cnt<=cnt+1; end if; end if; end process;
P2: process(clk,reset) --信号1 begin if reset='1' then s1<='1'; elsif clk'event and clk='1' then if cnt=0 then s1<=not s1; else s1<=s1; end if; end if; end process;
P3: process(clk,reset) --信号2 begin if reset='1' then s2<='1'; elsif clk'event and clk='0' then if cnt=2 then s2<=not s2; else s2<=s2; end if; end if; end process;
文章评论(0条评论)
登录后参与讨论