关于进程执行的小问题!急求高手解答。
ARCHITECTURE behav OF cpout ISSIGNAL L: INTEGER := 0;
SIGNAL S: INTEGER := 0;
SIGNAL F: INTEGER := 0;
SIGNAL FS: INTEGER := 0;
SIGNAL tm_l: STD_LOGIC := '0';
BEGIN
PROCESS(clk,tm_l)
VARIABLE Flag: STD_LOGIC := '0';
VARIABLE FlagF: STD_LOGIC := '0';
BEGIN
IF(L = SYNL) THEN
Flag := '1';
END IF;
IF(Flag = '1') THEN
IF(FS = 399) THEN
FS <= 0;
ELSE
FS <= FS + 1;
END IF;
END PROCESS;
END;
就比如上面的程序,我只是谁便抄的一段,所以现在不管程序的对错,也不管其中的一些信号代表什么。
本人就是想问,第一个时钟时程序开始从结构体开始执行,然后到进程再到程序结束,那此时FS信号的值就不是初始值0了,同时如果此时的Flag也不是0了,那么下个时钟的时候,又从进程的开始执行,那么Flag的值会被付成0么?程序一直在执行的话FS信号的值会不会也被赋值成0么?
--其实这个问题就是问:结构体开始那段信号赋值程序,在一次程序运行中执行几次,以及,进程开始的那段变量赋值程序,在进程循环执行中运行多少次?(都是在程序只运行一次的情况下) 没有人帮忙解答么???? 没人说句话么?高手帮帮忙呢,难道我写的大家看不懂么? 学Verilog的飘过,貌似在这里问问题很难找到答案。。。 寻求高手解决问题!!! 大哥,你可以仿真看看。VHDL语言和C及51核汇编运行进程是不一样的,他是并行的,就是一起同时运行,就是0时刻赋值语句也运行了,但是PROCESS里的语句是顺序进行的,所以当PROCESS用到FIAG时赋值语句已经运行完成了,像VERILOG里的BEGIN..END语句一样。只不过PROCESS里程序语句多,要的时间长,PROCESS里的循环和开始赋值什么关系???时序问题。希望对你有帮助,VHDL我还是大学写过,现在外面都不用了 就LZ的问题来看,估计是以前从ACM转过来的吧~呵呵~
VHDL语言不像C,更不像C++之流~它描述的不是简单的一个思想~而是具体的一个电路~
因此LZ在学好VHDL的同时,应该有数字逻辑的意识在里面。。。
不需要像现在这样分析来分析去~因为它本身只是一个电路而已。。。 结构体开始那段信号赋值程序,在一次程序运行中执行一次,那是电路初始化时电路的初始值
进程开始的那段变量赋值程序,也就是电路中的电线,是没有赋值的概念的,每次的电路是0,电线值就是0,是1就是1,只要有时钟存在就会一直执行的
页:
[1]