程序求助:work_en_pos是干什么用的?

2011年07月06日 16:03    发布者:bg9acn
always @(posedge clk_sys or negedge rst_sys_n)
begin
    if(!rst_sys_n) work_en_1d <= #U_DLY 1'b0;
    else work_en_1d <= #U_DLY work_en;
end

assign work_en_pos = (~work_en_1d)&work_en;

always @(posedge clk_sys or negedge rst_sys_n)
begin
    if(!rst_sys_n) cnt_cycle <= #U_DLY 26'd0;
    else if(work_en_pos) cnt_cycle <= #U_DLY CNT_INIT;
    else if....
     else....
end

work_en_pos是干什么用的?时钟一来不就变成0了吗。那else if(work_en_pos) cnt_cycle <= #U_DLY CNT_INIT;这句不是永远也执行不了了吗?

网友评论

忘情天书 2011年07月07日
work_en_pos只是个状态量,它由assign形成组合逻辑,但是在第一个always后面,由always里面的变化决定的。
老郭 2011年07月08日
谢谢田鼠!
zhulinxy123 2011年11月02日
嗯,同意,但楼主这些语句只能拿来做仿真用