微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教:关于process中语句执行问题

请教:关于process中语句执行问题

时间:10-02 整理:3721RD 点击:
这有段程序代码:
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,point3ut 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;以后就三条语句都开始了。那么这样来看的话,是不是执行这种由时钟控制的进程中语句时,执行一条语句需要一个时钟周期?
还请赐教。

node3,point3:                out std_logic

就应该是这样呀,仿真结果没错呀!

仿真结果应该正确。再补充下:由于有node0的process中没有时钟控制,所以即使是顺序执行,效果也几乎是瞬时的。我想请教的是,我对两个进程结果的解释对不对?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top