2157|0

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

【FPGA设计小技巧】同步设计的关键 [复制链接]

从下面的两个电路可以看出同步设计的关键所在

第一个图:同步设计的电路结构:

对应的VHDL 程序可以表示如下:

signal Counter:  std_logic_vector(1 downto 0);
process(Clk)
begin
    if rising_edge(Clk) then
        if INPUT=‘1’ and Counter/=“11” then
     Counter <= Counter + 1;
 end if;
 --组合逻辑用在寄存器的D端,
 --为同步设计,可行
    end if;
 
 
signal Counter:  std_logic_vector(3 downto 0);
signal TC:         std_logic;
signal s:         std_logic;
process(Clk)
begin
    if rising_edge(Clk) then
        if INPUT=‘1’ then
     Counter <= Counter + 1;
 end if;
 if TC=‘1’ then
 --TC 用在寄存器的CE端,为同步设计,可行
     s <= DATA;
end if;
    end if;
end process;
TC <= ‘1’ when Counter=“1111” else ‘0’;
--TC为组合逻辑输出
end process;
第二个结构:禁止异步设计
 
 
signal Counter:  std_logic_vector(1 downto 0);
process(Counter, Clk)
begin
    if Counter=“11” then
 --组合逻辑用作寄存器的异步复位,
 --为异步设计,禁止!!!
        Counter <= 00;
    elsif rising_edge(Clk) then
        if INPUT=‘1’ then
     Counter <= Counter + 1;
 end if;
end if;
end process;
 
 
signal Counter:  std_logic_vector(3 downto 0);
signal TC:         std_logic;
signal s:         std_logic;
process(Clk)
begin
    if rising_edge(Clk) then
        if INPUT=‘1’ then
     Counter <= Counter + 1;
 end if;
end if;
end process;
TC <= ‘1’ when Counter=“1111” else ‘0’;
--TC为组合逻辑输出
process(TC)
begin
    if rising_edge(TC)=‘1’ then
    --TC 用作寄存器的时钟,为异步设计,禁止!
        s <= DATA;
    end if;
end process;
 
 
从上面看出,同步设计的关键就是 系统实战和复位信号一定要是经过触发器后的采样后信号,而不能是门控时钟信号
此帖出自FPGA/CPLD论坛
点赞 关注
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表