BEAR2009 发表于 2010-8-24 15:49:21

关于进程执行的小问题!急求高手解答。

ARCHITECTURE behav OF cpout IS
        SIGNAL 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么?
--其实这个问题就是问:结构体开始那段信号赋值程序,在一次程序运行中执行几次,以及,进程开始的那段变量赋值程序,在进程循环执行中运行多少次?(都是在程序只运行一次的情况下)

BEAR2009 发表于 2010-8-24 16:53:55

没有人帮忙解答么????

BEAR2009 发表于 2010-8-24 21:51:44

没人说句话么?高手帮帮忙呢,难道我写的大家看不懂么?

无名 发表于 2010-8-24 22:19:13

学Verilog的飘过,貌似在这里问问题很难找到答案。。。

BEAR2009 发表于 2010-8-25 13:49:28

寻求高手解决问题!!!

awy0903 发表于 2010-8-25 14:31:28

大哥,你可以仿真看看。VHDL语言和C及51核汇编运行进程是不一样的,他是并行的,就是一起同时运行,就是0时刻赋值语句也运行了,但是PROCESS里的语句是顺序进行的,所以当PROCESS用到FIAG时赋值语句已经运行完成了,像VERILOG里的BEGIN..END语句一样。只不过PROCESS里程序语句多,要的时间长,PROCESS里的循环和开始赋值什么关系???时序问题。希望对你有帮助,VHDL我还是大学写过,现在外面都不用了

sprone 发表于 2010-8-26 23:45:50

就LZ的问题来看,估计是以前从ACM转过来的吧~呵呵~
VHDL语言不像C,更不像C++之流~它描述的不是简单的一个思想~而是具体的一个电路~
因此LZ在学好VHDL的同时,应该有数字逻辑的意识在里面。。。
不需要像现在这样分析来分析去~因为它本身只是一个电路而已。。。

honglinlang 发表于 2010-8-28 12:27:14

结构体开始那段信号赋值程序,在一次程序运行中执行一次,那是电路初始化时电路的初始值
进程开始的那段变量赋值程序,也就是电路中的电线,是没有赋值的概念的,每次的电路是0,电线值就是0,是1就是1,只要有时钟存在就会一直执行的
页: [1]
查看完整版本: 关于进程执行的小问题!急求高手解答。