bg9acn 发表于 2011-7-6 15:56:31

求助

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;这句不是永远也执行不了了吗?

njithjw 发表于 2011-7-6 21:42:05

用于检测一个信号的上升沿的,楼主可以自己画一下时序图就知道了

chat1 发表于 2011-7-8 20:37:10

”work_en_pos是干什么用的?时钟一来不就变成0了吗。“

work_en_pos 在第一个时钟后才为 1'b0;
说明在第一个时钟时有可能执行else if(work_en_pos) cnt_cycle <= #U_DLY CNT_INIT;
页: [1]
查看完整版本: 求助