微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog语言中怎么实现从0计数到255再计回到0,以此循环呢?

verilog语言中怎么实现从0计数到255再计回到0,以此循环呢?

时间:10-02 整理:3721RD 点击:
verilog语言中怎么实现从0计数到255再计回到0,以此循环呢?
求大神提示啊 拜托拜托!

reg  [7:0]   cnt;
always@(posedge  clk)
begin
       if(rst)
            begin
                   cnt<=8'd0;
            end
       else
            begin
                    cnt<=cnt+8'd1;
            end
end

你好,我是想先从0以步长1一直加到255,然后再以步长32一直减到0,这要怎么实现呢?谢谢哈!

reg[7:0] cnt;
always[url=]@(posedge[/url] clk)
begin
if(cnt<255) cnt<=cnt+1;
else if(cnt==255) cnt<=cnt-32;
end

reg [6:0]cnt;
always@(posedge clk or negedge rst_n)
begin
   if(!rst_n)
        begin
              cnt<=0;  
        end
  else
        begin
              if(cnt<255)
                 begin
                     cnt<=cnt+1;
                end
             else  
                begin
                     cnt<=cnt-32;
                 end
        end
end

reg [7:0]cnt;
always@(.....)

加一个标志位,0时以1步长加,1时以32步长减。

同意楼上。

  1. module counter(input clk,input rst,output reg [7:0] count);
  2. reg   flag;
  3. always@(posedge clk)
  4. begin
  5. if(!rst)
  6.    begin
  7.    count <=0;
  8.    flag  <=0;
  9.    end
  10. else
  11.    begin
  12.     if(flag==0)
  13.        begin
  14.          if(count == 255)
  15.             begin
  16.             count<=count-31;
  17.             flag<=1;
  18.             end
  19.          else count<=count+1;
  20.        end
  21.     else
  22.       begin
  23.         count <=count -32;
  24.         if(count==0)
  25.            flag<=0;
  26.       end
  27.    end
  28. end

复制代码

谢谢分享哈!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top