实验二 基于HDL十进制计数器设计指导书.pdf
实验二基于HDL十进制计数、显示系统设计
一、实验目的
1.掌握基于语言的ISE设计全流程;
2.熟悉、应用VerilogHDL描述数字电路;
3.掌握基于Verilo的组合和时序逻辑电路的设计方法;
4.掌握chipscope片内逻辑分析仪的使用与调试方法。
二、实验原理
1、实验内容:设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数
码管、发光二极管等进行显示。
使能控制端十进制计七段数码管
时钟端数器显示译码器
异步清零端
FPGA
进位
图2-1系统原理图
2、模块端口信号说明
输入信号:
Clk_50m系统采样时钟
clk待计数的时钟
clr异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数
ena使能控制信号,当ena=1,电路正常累加计数,否则电路不工作
输出信号:
q[6:0]驱动数码管,显示计数值的个位
cout1bit数据,显示计数值向十位的进位
COM共阳级数码管,公共端(接地,参考开发板原理图)
3、以自顶向下的设计思路进行模块划分:
整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按
键为实现硬件防抖,则需要将按键输入的时钟clk,先通过消抖模块消抖后,再输出至
后续使用。
图2-2系统模块划分和引脚连线图
1)十进制计数器模块设计
输入:
CLK待计数的时钟
CLR异步清零信号,当CLR=1,输出复位为0,当CLR=0,正常计数
ENA使能控制信号,当ENA=1,电路正常累加计数,否则电路不工作
输出:
SUM[3:0]计数值的个位。即,在CLK上升沿检测到SUM=9时,SUM将被置
0,开始新一轮的计数。
COUT计数值的十位进位,即:只有在时钟CLK上升沿检测到SUM=9时,
COUT将被置1,其余情况下COUT=0;
在设计中可以使用always,if-else-if语句实现,设计中注意不要在两个以上的always
模块中对同一个变量进行赋值,否则会产生多重赋值源(multi-source)的问题。
2)数码管显示驱动模块(led.v)
输入:sum[3:0]待显示的数值
输出:out[6:0]驱动数码管的七位数值(注意下表中out的对应位)
表2-1共阳极数码管驱动模块输入与输出关系表
输入sum输出out
对应码
数码ABCDEFG
3210(h)
out[0]out[1]out[2]out[3]out[4]out[5]out[6]
00000000000181
100011001111CF
2001000