首页 > 代码库 > 关于复位赋初值的问题
关于复位赋初值的问题
今天和师哥争论reset赋值和定义时赋值的问题,僵持不下想到真OO无双大神的一句:无code无真相。用code最能说明问题
测试代码随便弄了个加法器:
1 //date: 2014/09/15 2 //version : Quartus II 14.0 3 //designer : pengxiaoen 4 //function : check reset 5 6 module reset_test (clock , 7 reset , 8 in_a , 9 in_b,10 in_c,11 ou_d12 );13 input clock ,reset ; 14 input [3:0] in_a ,in_b ,in_c; 15 output reg [5:0] ou_d ; 16 17 reg [4:0] temp ;//=5‘d2 ;18 19 always @ (posedge clock)20 if(!reset)21 ;//temp <= 5‘d0 ; 22 else 23 temp <= in_a + in_b ;24 25 26 always @ (posedge clock)27 if(!reset)28 ou_d <= 6‘d0 ;29 else 30 ou_d <= temp + in_c ; 31 32 endmodule
此代码中有两处对temp进行赋值,下面来看rtl图示,首先看到的是reset中 temp<= 5‘d2的操作
下面再看定义时初始化为1的图示
看到了吧,QuartusII 14.0 不支持定义初始化
这不禁让我想到曾经用modelsim做个一个M序列的工程,M序列数就是用一个reg存起来的,就是在初始化的时候赋值的。
查到度娘上有人提问,遇到和我一样的问题,最后有人提出: 定义赋值要综合器支持—— 说明Q14.0不支持定义时进行赋值初始化,但是modelsim-altera是支持的。 同时,他们都支持reset赋值初始化。所以不建议使用定义赋值初始化的写法。
关于复位赋初值的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。