查看: 1156|回复: 3

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

bg9acn (离线)
积分
460
帖子
1
发表于 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;这句不是永远也执行不了了吗?
忘情天书 (离线)
积分
38038
帖子
1741
发表于 2011-7-7 18:58:13 |显示全部楼层
work_en_pos只是个状态量,它由assign形成组合逻辑,但是在第一个always后面,由always里面的变化决定的。
老郭 (离线)
积分
869211
帖子
5419
发表于 2011-7-8 10:40:16 |显示全部楼层
谢谢田鼠!
zhulinxy123 (离线)
积分
146
帖子
25
发表于 2011-11-2 14:44:36 |显示全部楼层
嗯,同意,但楼主这些语句只能拿来做仿真用
您需要登录后才可以发表评论 登录 | 立即注册

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