在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1521|回复: 2

[原创] 初学Verilog,请教一段程序问题

[复制链接]
发表于 2016-3-24 17:41:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
module stop_watch_if

(

input wire clk,

input wire go,clr,

output wire [3:0] d2,d1,d0

);

localparam DVSR = 5000000;

reg [22:0] ms_reg;

wire [22:0] ms_next;

reg [3:0] d2_reg,d1_reg,d0_reg;

reg [3:0] d2_next,d1_next,d0_next;

reg d1_en,d2_en,d0_en;

wire ms_tick,d0_tick,d1_tick;



always @(posedge clk)

begin

ms_reg <= ms_next;

d2_reg <= d2_next;

d1_reg <= d1_next;

d0_reg <= d0_next;

end

assign ms_next = (clr||((ms_reg==DVSR)&&go)) ? 4'b0 :

(go) ? ms_reg + 1 :

ms_reg;

assign ms_tick = (ms_reg==DVSR) ? 1'b1 : 1'b0;

always @*

begin

ms_reg <= ms_next;

d0_next = d0_reg;

d1_next = d1_reg;

d2_next = d2_reg;

if(clr)

begin

d0_next = 4'b0;

d1_next = 4'b0;

d2_next = 4'b0;

end

else if (ms_tick)

if (d0_reg != 9)

d0_next = d0_reg + 1;

else

begin

d0_next = 4'b0;

if (d1_reg != 9)

d1_next = d1_reg + 1;

else

begin

d1_next = 4'b0;

if (d2_reg != 9)

d2_next = d2_reg + 1;

else d2_next = 4'b0;

end

end

end



assign d0 = d0_reg;

assign d1 = d1_reg;

assign d2 = d2_reg;
endmodule

这段程序里面第一个always是啥意义啊

d2_reg <= d2_next;

d1_reg <= d1_next;

       d0_reg <= d0_next;

这段跟第二个always里面的那段功能难道不一样么[size=13.3333px];
发表于 2016-3-24 20:35:30 | 显示全部楼层
状态机三段式,看仔细点。。。是反的,感觉你一点都不认真!
发表于 2016-3-25 01:40:52 | 显示全部楼层
Yes , it's the registers
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-28 15:20 , Processed in 0.097040 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表