Verilog小练习- 看时序写代码(01--02)

    技术2022-09-01  100

    写在前面

    整理一些简单的根据时序图编写Verilog代码的实例,帮助新手学习,老手巩固。每次更新两题,根据难度会挑选一些进行讲解。

    题目 01

    题目 01 答案

    always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt <= 0; end else if(add_cnt)begin if(end_cnt) cnt <= 0; else cnt <= cnt + 1; end end assign add_cnt = dout == 1; assign end_cnt = add_cnt && cnt== 5-1; always @(posedge clk or negedge rst_n)begin if(rst_n == 1'b0)begin dout<= 0; end else if(en==1)begin dout<= 1; end else if(end_cnt==1)begin dout<= 0; end end

    题目 02

    题目 02 答案

    本题和01类似,只不过需要切换计数器的时间

    always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt <= 0; end else if(add_cnt)begin if(end_cnt) cnt <= 0; else cnt <= cnt + 1; end end assign add_cnt = dout == 1; assign end_cnt = add_cnt && cnt== x-1; always @(posedge clk or negedge rst_n)begin if(rst_n == 1'b0)begin dout<= 0; end else if(en1==1||en2==1)begin dout<= 1; end else if(end_cnt==1)begin dout<= 0; end end always @(posedge clk or negedge rst_n)begin if(rst_n == 1'b0)begin x<=0; end else if (en1==1)begin x<=2; end else if(en2==1)begin x<=4; end end
    Processed: 0.011, SQL: 9