查看: 3540|回复: 3

[提问] 程序求助:work_en_pos是干什么用的?

[复制链接]
发表于 2011-7-6 16:03:45 | 显示全部楼层 |阅读模式
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;这句不是永远也执行不了了吗?
发表于 2011-7-7 18:58:13 | 显示全部楼层
work_en_pos只是个状态量,它由assign形成组合逻辑,但是在第一个always后面,由always里面的变化决定的。
发表于 2011-7-8 10:40:16 | 显示全部楼层
谢谢田鼠!
发表于 2011-11-2 14:44:36 | 显示全部楼层
嗯,同意,但楼主这些语句只能拿来做仿真用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表