本人买了一本 罗苑棠 的 CPLD/FPGA常用模块与综合系统设计实例精讲 一书,刚好本人在学奇数的50%占空比分频电路,在网上看了一个 50%占空比的奇数分频电路,看了一些会了, 一下子没有理解,所以想找个好理解的,所以就在书上找了;
CPLD/FPGA常用模块与综合系统设计实例精讲 一书 291页 有占空比位1:1的奇数分频电路;自己分析时序没有成功,下面是VHDL程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fredivn1 is
GENERIC(N:integer:=7);
port(clk:in std_logic;
outclk:out std_logic);
end fredivn1;
architecture rtl of fredivn1 is
signal count1,count2:integer; 此处要把integer 改为integer range 0 to N
signal q,outclk1,outclk2:std_logic; 否则count1,count2会被综合成32位长度
begin 同时RTL里会有4个32位长度单元,极大浪费器件单元;
q<=outclk1 and outclk2;
outclk<=q xor outclk1; 程序中是q 异或 outclk1 ;但是书中的文字描述是
process(clk) 相或这个算是书中的错误;
begin
if(clk'event and clk='1') then
if(count1=N-1) then
count1<=0;
else
count1<=count1+1;
if count1<(integer(N/2)) then
outclk1<='0';
else
outclk1<='1';
end if;
end if;
end if;
end process;
process(clk)
begin
if(clk'event and clk='0') then
if(count2=N-1) then
count2<=0;
else
count2<=count2+1;
if count2<(integer(N/2)) then
outclk2<='1';
else
outclk2<='0';
end if;
end if;
end if;
end process;
end rtl;
本人使用的quartus II 7.2; 消耗141个LE, 修改后消耗9个LE,多么浪费啊,切记切记......
查看大图请点击图片再最大化窗口然后展开图片
下面是功能仿真图 ;
查看大图请点击图片再最大化窗口然后展开图片
下面是我自己的功能分析PDF版,有说明,清晰可放大缩小,不知道为什么直接PDF上传不行,所以只能打包了;
https://static.assets-stash.eet-china.com/album/old-resources/2009/2/3/9e61cb1c-8a31-468a-beb1-ceff9dd061af.rar 点击下载
文章评论(0条评论)
登录后参与讨论