完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是我用verilog HDL 写的状态机 写一个能输入时间的电子钟 但是波形仿真不对 应该怎么改?
求帮助 着急。 module clock (CLK,nRST,A,B,O1,O2,O3,O4); input CLK,A,B,nRST; output[3:0] O1,O2,O3,O4; parameter[3:0] s0=4'b0000,s1=4'b0001,s2=4'b0010,s3=4'b0100,s4=4'b1000; reg[3:0] CS,NS; reg[3:0] O1,O2,O3,O4; always@(posedge CLK,negedge nRST)begin if(!nRST)CS<=s0; else CS<=NS; end always@(CS,A,B)begin case(CS) s0:begin if(A&&B) NS=s1; end s1:begin if(A) NS=s1; if(B) NS=s2; end s2:begin if(A) NS=s2; if(B) NS=s3; end s3:begin if(A) NS=s3; if(B) NS=s4; end s4:begin if(A) NS=s4; if(B) NS=s0; end default:begin NS=s0;end endcase end always@(posedge CLK,negedge nRST)begin if(!nRST) begin O1<=4'b0000;O2<=4'b0000;O3<=4'b0000;O4<=4'b0000;end else begin case(NS) s0:begin if(O2>4'b0110) begin O1<=4'b0000;O2<=4'b0000;end if(O3>4'b0011&&O4>4'b0001)begin O1<=4'b0000;O2<=4'b0000;O3<=4'b0000;O4<=4'b0000;end else if(O1<4'b1001) O1<=O1+4'b0001; else begin O1<=0;O2<=O2+4'b0001;end if(O2>4'b0101)begin O3<=O3+4'b0001;O2<=0;end if(O3<4'b1001)begin O4<=04+4'b0001;O3<=0;end end s1:O1<=O1+4'b0001; s2:O2<=O2+4'b0001; s3:O3<=O3+4'b0001; s4:O4<=O4+4'b0001; default:begin O1<=4'b0000;O2<=4'b0000;O3<=4'b0000;O4<=4'b0000;end endcase end end endmodule |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-4 15:44 , Processed in 0.538539 second(s), Total 70, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号