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==3'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==3'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触发器),另外还有一个加法器和一个比较器。

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

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值