|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
这有段程序代码:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_unsigned.ALL;
ENTITY runtime IS
PORT(
clk:in std_logic;
node0,point0:in std_logic;
node1,node2,point1,point2:buffer std_logic;
node3,point3 ut std_logic
);
end runtime;
ARCHITECTURE rtl OF runtime IS
begin
process(node0)
begin
node1<=node0;
node2<=node1;
node3<=node2;
end process;
process(clk)
begin
if rising_edge(clk) then
point1<=point0;
point2<=point1;
point3<=point2;
end if;
end process;
end rtl;
在关于node0的那个进程中,通过仿真结果发现,node0,node1,node2,node3的变化几乎是同步的,虽然在process中,它们的赋值语句是顺序执行的。而在point0的那个进程中,point3,point2,point1,point0前者总比前者晚一个时钟周期。我猜想从上电后这个进程执行过程是这样的:第一个时钟来时,执行point1<=point0;第二个时钟来时,执行:point1<=point0; point2<=point1;第三个时钟来时,执行: point1<=point0; point2<=point1; point3<=point2;以后就三条语句都开始了。那么这样来看的话,是不是执行这种由时钟控制的进程中语句时,执行一条语句需要一个时钟周期?
还请赐教。
[ 本帖最后由 sxyfs 于 2008-7-14 14:57 编辑 ] |
|