Verilog HDL计数器组合电路(作业2)

本文介绍了使用Verilog HDL在DE0 FPGA开发板上实现循环计数器的设计,计数器在复位后从0递增到9,然后循环回6,每秒变化一次。实验内容包括Visio绘制的RTL图,Quartus生成的RTL视图,SignalTap截图以及详细的代码展示。此外,还展示了如何在四个HEX LED数码管上实现不同计数范围的显示,并通过数码管选择器和译码器控制显示。

目录

实验内容一

使用Veriog - HDL语言,DE0 FPGA开发板在 DE0 开发板的最右侧的 HEX LED 数码管上,进行计数并用十进制数进行显示。计数器特征如下:

该计数器在电路复位后会循环的从0值递增计数到最大值,计数最大值是一个循环变化的过程,计数器复位之后,第一次计数最大值是6,然后是7、8、9,然后计数最大值又变成6,如此往复循环, 计数数值变化的时间间隔是1秒 ,计数过程如下所示:

0 1 … 6 0 1 … 7 0 1 … 8 0 1 …9 0 1 … 6

Visio绘制的RTL

实验一的RTL手绘
其中,max表示计数最大值;CNTVAL表示计数值,计数最大值要依次加一,加到9时再变为6。max[3..0]和CNTVAL[3..0]构成D触发器。CLK为1s周期。

Quartus扫描生成的RTL

顶层RTL:
顶层RTL
cnt_sync为第一级计数器,其OV输出端用于产生1s的时钟信号;
cnt_0to9为第二级计数器,用于产生显示的计数值;
tubedec_4to16为数码管译码电路。
cnt_0to9底层RTL:
底层RTL

计数值的SignalTap截图

SignalTap

代码

Verilog HDL代码:

module cnt_sync(
  RESET ,
  CLK   ,   // clock
  CNTVAL,   // counter value
  OV    );  // overflow
input CLK,RESET;
output [32-1:0] CNTVAL;
output OV;
parameter MAX_VAL = 50_000_000;  //50MHz下为1s
reg [32-1:0] CNTVAL;
reg OV;

always @ (posedge CLK) 
begin
  if (!RESET) 
  begin
    CNTVAL <= 0;
  end
  else
  begin
    if(CNTVAL >= MAX_VAL)
      CNTVAL <= 0;
    else
      CNTVAL <= CNTVAL + 1'b1;  
  end
end

always @ (CNTVAL) begin
  if(CNTVAL == MAX_VAL)
    OV = 1'b1;
  else
    OV = 1'b0;
end

endmodule   // module cnt_sync
////////////////////////////////////////////////////////
module cnt_en_0to9(
  EN    ,
  RESET ,
  CLK   ,   // clock
  CNTVAL);   // counter value
//  OV    );  // overflow
input CLK,RESET,EN;
output [4-1:0] CNTVAL;
//output OV;

reg [4-1:0] CNTVAL;
//reg OV;
reg [4-1:0] max=6;  

always @ (posedge CLK or negedge RESET) 
begin
  if(!RESET)  //when rst, set max=6
  begin
    max <= 6;   
    CNTVAL <= 0;
  end 
  else if(EN)
  begin
    if(CNTVAL >= max)   //when OV, max++, if max=9,then max=6
    begin
      CNTVAL <= 0;
      max <= max + 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值