| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 4142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt0 <= 0; end else if(add_cnt0)begin if(end_cnt0) cnt0 <= 0; else cnt0 <= cnt0 + 1; end end assign add_cnt0 = add_flag ; assign end_cnt0 = add_cnt0 && cnt0==x-1 ; always @(posedge clk or negedge rst_n)begin if(!rst_n)begin cnt1 <= 0; end else if(add_cnt1)begin if(end_cnt1) cnt1 <= 0; else cnt1 <= cnt1 + 1; end end assign add_cnt1 = end_cnt0; assign end_cnt1 = add_cnt1 && cnt1==4-1 ; always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout <= 0; end else if(en_dout)begin dout <= 1; end else if(end_cnt0)begin dout <= 0; end end assign en_dout = add_cnt0 && cnt0 == y-1; always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin add_flag <= 0; end else if(en1||en2)begin add_flag <= 1; end else if(end_cnt1)begin add_flag <= 0; end end always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin sel_flag <= 0; end else if(en1)begin sel_flag <= 0; end else if(en2)begin sel_flag <= 1; end end always @(*)begin if(sel_flag==0)begin if(cnt==0)begin x = 7; y = 2; end else if (cnt1==1)begin x = 9; y = 2; end else if (cnt1==2)begin x = 5; y = 2; end else begin x = 8; y = 2; end end else begin if(cnt==0)begin x = 7; y = 4; end else if (cnt1==1)begin x = 7; y = 1; end else if (cnt1==2)begin x = 9; y = 6; end else begin x = 7; y = 2; end end end |
举报
更多回帖