计数器 FPGA 电路实验 作业

该博客详细介绍了在DE0开发板上进行的两个FPGA电路实验,包括设计一个变换计数最大值的循环计数器,该计数器在复位后能从0递增到最大值6、7、8、9,并在数码管上以1秒为间隔显示变化。实验内容涵盖RTL图设计、Quartus II编译、数码管译码及Signal Tap分析。
摘要由CSDN通过智能技术生成

实验一
1.设计功能描述

在 DE0 开发板上,设计一个变换计数最大值的循环计数器:在电路复位后会循环的从0值递增计数到最大值,第一次计数最大值是6,然后是7、8、9,然后计数最大值又变成6,如此往复循环; 计数数值以十进制数在最右侧的 HEX LED 数码管上显示,变化的时间间隔是1秒 ,复位时,数码管熄灭。
2.手工绘制的RTL图
这里写图片描述

3.Quartus Ⅱ9.0 编译生成的RTL电路图

总体结构图

(1)时间基准电路

时间基准电路模块

(2)计数器模块

计数器模块

(3)数码管译码模块

数码管显示译码模块

4.程序源代码

///时间基准电路/
module cnt_sync(  
  CLK   ,    
  CNTVAL,     
  OV    );   
input CLK;  
output [32-1:0] CNTVAL;  
output OV;  
parameter MAX_VAL = 25_000_000;
reg [32-1:0] CNTVAL;  
reg OV;   

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

always @ (CNTVAL) begin  
  if(CNTVAL == MAX_VAL)  
    OV = 1'b1;  
  else  
    OV = 1'b0;  
end  
endmodule 
 //计数器模块/ 
  module counter(                     //对1s基本信号计数
EN,                                 //计数使能控制
CLK,
COU,
RST);
input RST, EN, CLK;
output reg [3:0] COU;               
reg [1:0] M;
reg [3:0] MAX = 4'b0110;

always @ (posedge CLK)
    if (RST == 1)                  
        if (EN == 1)
            if (COU != MAX)
            begin
                COU <= COU + 1'b1;
                M <= M;
            end
            else
            begin
                COU <= 4'b0000;
                M <= M + 1<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值