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代码编写出来感觉还是很神奇的,而且用代码写出来的计数器简单易理解。由此认识到这门课程进行数字设计非常有效率,所以在今后的学习中一定努力学习,勤学多问。对于这次实验,由于比较简单,所以做的挺顺利的,基本没什么问题。