找回密码
 注册
搜索
查看: 694|回复: 4

[讨论] 请教一下各位高手两个关于时钟触发的进程的区别!!

[复制链接]
发表于 2006-7-26 08:36:00 | 显示全部楼层 |阅读模式
请教一下各位高手,以下两个进程到底有什么分别。原因是什么??
ck:in std_logic;
add_or_sub :in std_logic;
signal q:std_logic_vector(17 downto 0);
process(ck)
begin
if ck'event and ck='1' then
   if add_or_sub = '1'  and q>0 then
      q<=q-'1';
   elsif add_or_sub = '0' and q<"111111111111111111" then
      q<=q+'1';
   end if;
end if;
end process;

process(ck)
begin
if add_or_sub = '1'  and q>0 then
    if ck'event and ck='1' then
       q<=q-'1';
    end if;
elsif add_or_sub = '0' and q<"111111111111111111" then
    if ck'event and ck='1' then
       q<=q+'1';
    end if;
end if;
end process;
发表于 2006-7-28 13:32:00 | 显示全部楼层
同步设计和异步设计的区别
具体情况要看电路时序结果
[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-7-29 09:26:00 | 显示全部楼层
前一个是进程是同步使能,后一个是异步使能add_or_sub [br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2007-6-16 18:53:00 | 显示全部楼层
前一个是同步时钟设计;就是说你的add_or_sub = '1'  and q>0这个条件在在ck'event and ck='1' 满足的情况下才可以触发该次进程.
后一个是异步时钟设计add_or_sub = '1'  and q>0与时钟无关,只要条件成立,就可以触发本次进程
点评回复

使用道具 举报

发表于 2007-6-29 14:59:00 | 显示全部楼层
第二中描述方式不符合RTL 规则,故建议使用第一中描述方式
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-24 14:24 , Processed in 0.047712 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表