集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1305|回复: 2

求助

[复制链接]
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[25:0] <= #U_DLY 26'd0;
    else if(work_en_pos) cnt_cycle[25:0] <= #U_DLY CNT_INIT;
    else if....
     else....
end

work_en_pos是干什么用的?时钟一来不就变成0了吗。那else if(work_en_pos) cnt_cycle[25:0] <= #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[25:0] <= #U_DLY CNT_INIT;
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-6-17 20:46 , Processed in 0.063854 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表