视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验四 4 位计数器设计
2025-09-29 18:23:51 责编:小OO
文档
实验四     4 位计数器设计

1.实验目的

学习quartusii 和modelsim的使用方法;

学习原理图和veriloghdl混合输入设计方法;

掌握4 位计数器设计的设计及仿真方法。

2.实验原理

根据下面FPGA内部电路,设计4 位计数器,并在在kx3c10F+开发板上实现该电路,并作仿真。 

设计其中的计数器模块CNT4B和数码管译码驱动模块DECL7S的verilogHDL代码,并作出整个系统仿真。

2.1  4位计数器模块代码

m定义模块名和各个端口

 定义输出端口

 定义输入时钟和复位

 定义四位计数器

 上升沿时钟和下降沿复位

  begin

    if(!RST)                  //低电平复位

 每一个clk计数

  end

endmodule

效果图:

2.2七段数码管代码

module segled(out1,a); //定义模块名和输入输出端口

i输入一个3位矢量

o输出一个6位矢量

r型变量用于always语句

a敏感信号a

begin

c语句用于选择输出

4'b0001:out1<=7'b0000110;

4'b0010:out1<=7'b1011011;

4'b0011:out1<=7'b1001111;

4'b0100:out1<=7'b1100110;

4'b0101:out1<=7'b1101101;

4'b0110:out1<=7'b1111101;

4'b0111:out1<=7'b0000111;

4'b1000:out1<=7'b1111111;

4'b1001:out1<=7'b1101111;

4'b1010:out1<=7'b1110111;

4'b1011:out1<=7'b1111100;

4'b1100:out1<=7'b0111001;

4'b1101:out1<=7'b1011110;

4'b1110:out1<=7'b1111001;

4'b1111:out1<=7'b1110001;

endcase

end

endmodule  //模块结束

效果图:

2.3综合模块代码

// Copyright (C) 1991-2013 Altera Corporation

// Your use of Altera Corporation's design tools, logic functions 

// and other software and tools, and its AMPP partner logic 

// functions, and any output files from any of the foregoing 

// (including device programming or simulation files), and any 

// associated documentation or information are expressly subject 

// to the terms and conditions of the Altera Program License 

// Subscription Agreement, Altera MegaCore Function License 

// Agreement, or other applicable license agreement, including, 

// without limitation, that your use is for the sole purpose of 

// programming logic devices manufactured by Altera and sold by 

// Altera or its authorized distributors.  Please refer to the 

// applicable agreement for further details.

// PROGRAM 

// VERSION 

// CREATED 

module cou(

);

input wire

input wire

output wire

wire

CNT4B

segled

endmodule

效果图:

3.实验设备

kx3c10F+开发板,电脑。

4.实验步骤

4.1编译

4.1.1编译结果如下图所示:

编译解释:

在这个报告中,我们可以看到如下信息: 

        Total logic elements 11/5136(<1%): 该芯片有5136个LE资源,其中的11个在这个工程的这次编译中得到了使用。

        Total combinational functions 11/5136(<1%): 该芯片的5136个LE资源中,其中11个用于实现组合逻辑。 

        Dedicated logic registers 4/5136(0%): 该芯片的5136个LE资源中,其中4个用于实现寄存器,即时序逻辑。

从上述信息中,可以得到组合逻辑与时序逻辑的使用比例——11/4= 2.75:1。

4.1.2综合出来的电路图

电路图解释:

从以上电路图可以看出本电路图主要由计数器(CNT4B)和七段数码管显示程序(segled)组成。从CNT4B的CLK端输入CLK信号,RST为低电平复位信号,本实验是四位二进制计数器可以计数16个,每个CLK上升沿计数一次,其中七段数码管是通过输入的四位二进制数来选择相应的断码进行输出显示。

4.2管脚分配

管脚连接:通过双击Location选择与芯片上相应的引脚进行连接。

4.3仿真

1.测试模块的代码

module test;

  reg  CLK, RST;  //对输入信号定义reg型变量

 输出定义为wire型

 变量初始化

  end

 always #50 CLK=~CLK;  //产生时钟信号

 元件例化

  endmodule

2.modesim仿真图

仿真图解释:

通过仿真图我们可以看到程序一开始低电平复位,然后rst高电平。计数器开始计数,每过一个clk上升沿,七段数码管相应断码加1,与理论值相同,所以仿真验证成功,可以进行硬件仿真

4.4下载验证

5.实验体会

通过本次实验我学到了计数器的工作原理,计数器虽然也曾经在数电上学过,但是用Verilog代码编写出来感觉还是很神奇的,而且用代码写出来的计数器简单易理解。由此认识到这门课程进行数字设计非常有效率,所以在今后的学习中一定努力学习,勤学多问。对于这次实验,由于比较简单,所以做的挺顺利的,基本没什么问题。下载本文

显示全文
专题