FPGA之计数器与分频器

例子:设计一个同步复位的3位计数器

分析:首先,我们可以看到有哪些信号。复位rst  、计数器3位的、时钟信号。(用到2路选择器。复位和不复位)

         其次,怎样实现,一个时钟过来,记一次数就是加一次,保存(用到D触发器),满之后为0;

        最后,按照以上分析,进行编写程序。

module cunt3(clk,rst,count);
 input clk,rst;
 output [2:0]count;
  reg[2:0] count;
 
always @(clk)//同步复位
  begin
     if(rst==1)
      count=0;
     elseif(count==2'b111)//这就是个D触发器,q=count,d=count+1;
           count=0;
     else
      conunt=count+1;
   end
endmodule
  
module cunt3(clk,rst,count);
 input clk,rst;
 output [2:0]count;
  reg[2:0] count;
 
always @(posedge clk)//同步复位
  begin
     if(rst==1)
      count<=0;
     elseif(count==2'b111)//这就是个D触发器,q=count,d=count+1;
           count<=3'b0;
     else
      count<=count+3'b1;
   end
endmodule

上面是修改过的,由于时序逻辑电路,因此。用非阻塞赋值。q是3位,因此加上3'b1,

  1. 输入代码,选择Processing > start > Analysis & Elaboration
  2. Tools > Netlist viewer > RTL viewer
  3. 经过以上步骤,则得到以下电路。

从图中可以看出有两个2选1选择器和一个D触发器集合(因为存储的是3位数据,需要3个D触发器),另外还有一个加法器和一个比较器。

因此,可以表明从程序里就可以看要用那些元件,从而能更好的理解程序的用途。

猜你喜欢

转载自blog.csdn.net/T_J_S/article/details/83239466