|
|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 acel 于 2014-4-8 22:18 编辑
下面这段程序是从《arm9兼容内核》上抄下来的,这个always block应该是完成 对cmd_flag的赋值。我不明白的是为什么在to_rf_vld也需要给cmd_flag赋0, 因为to_rf_vld是ID的生成的,如果为1,则表示清空流水线中正在decode的指令前面的所有指令,因为PC会被改写。但是如果to_rf_vld为高电平,就设置cmd_flag,那么当前decode出来的指令到了EX阶段,就不会被执行了,这里是不是有什么问题?
- always @ ( posedge clk or posedge rst )
- if ( rst )
- cmd_flag <= #`DEL 1'd0;
- else if ( cpu_en )
- if ( int_all )
- cmd_flag <= #`DEL 0;
- else if ( ~hold_en )
- if ( wait_en | to_rf_vld | cha_rf_vld | go_rf_vld )
- cmd_flag <= #`DEL 0;
- else
- cmd_flag <= #`DEL code_flag;
- else;
- else;
复制代码 |
|