实验_基于HDL十进制计数器设计.doc
文本预览下载声明
西南科技大学
实验报告
课程名称: 基于FPGA的现代数字系统设计
实验名称: 基于HDL十进制计数、显示系统设计
姓 名: 袁谋
学 号:
班 级: 通信1204
指导教师: 龙惠民
西南科技大学信息工程学院
实验目的
1、掌握基于语言的ISE设计全流程;
2、熟悉、应用Verilog HDL描述数字电路;
3、掌握基于Verilog的组合和时序逻辑电路的设计方法。
实验原理
具有数显输出的十进制计数器的设计
图2.1 原理框图
本设计包括3个模块:一个是十进制计数器,一个是驱动七段数码管的模块,一个消抖模块。
输入信号:
CLK_50M-------消抖基准延时
clk -------待计数的时钟
clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数
E---------使能控制信号,当ce=1,电路正常累加计数,否则电路不工作
输出信号:
data_out[6:0]---------驱动数码管,显示计数值的个位
C-----------驱动发光二极管,显示计数值向十位的进位
1、 数码管显示驱动模块
输入:data_in[3:0] -------待显示的数值
输出:data_out[6:0] -------驱动数码管的七位数值(注意表中out的对应位)表2-1 七段字符显示真值表
2、十进制计数器模块
输入信号:
clk -------待计数的时钟
clr ---------异步清零信号,当clr =1,输出复位为0,当clr =0,正常计数
E---------使能控制信号,当E=1,电路正常累加计数,否则电路不工作
输出信号:
data_in[3:0]----------计数值的个位。即,在clk上升沿检测到data_in=9时,data_in将被置0,开始新一轮的计数。
C ------------计数值的十位进位,即:只有在时钟clk上升沿检测到data_in=9时,C将被置1,其余情况下C=0;
3. 消抖模块
(1)按键抖动产生原因:
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
图2.2 按键抖动波形图
本次试验的消抖模块
图2.3 消抖模块框图
电平检查模块:检测输入的按键是否被按下或者释放,并分别将H2L_Sig,L2H_Sig拉高,并随后拉低,给出按键的操作信息。
延时模块:对输入的信号变化时刻进行计时并观察信号的变换情况,对输出端口进行恰当地赋值。
4、顶层模块设计
实验步骤
数码管显示驱动模块的设计
建立工程:file-New Project,并注意器件、EDA工具的正确选择。
图3.1 工程建立及工具选择
建立新Verilog HDL模块编辑窗口,选择资源类型为Verilog Module,并输入合法文件名,在文本编辑窗口输入代码。
图3.2 文本编辑
执行综合得到综合后的电路,并进行功能仿真。
计数器模块的设计
设计步骤同数码管的设计,并完成模块的设计输入、综合、功能仿真。
数码管和计数器组合为一个系统
图3.3 综合原理框图
用Verilog HDL将counter.v和seg7.v组合为一个模块,完成综合、功能仿真,分析波形,修正设计。
module counter_seg7(clk,clr,E,C,data_out);
input clk,clr,E;
output C;
output [6:0] data_out;
wire [3:0] data_in; //两个模块之间的连接数据
counter u1(clk,clr,E,C,data_in); //调用前面写好的计数器函数
seg7 u2(data_in,data_out); //调用前面写好的数码管函数
endmodule
图3.4 综合电路逻辑结构
图3.5 仿真结果
4、消抖模块设计
了解消抖模块的功能,拷贝相关代码,拟采用实验
显示全部