西南科技大学实验报告课程名称: 基于 FPGA 的现代数字系统设计实验名称: 基于 HDL 十进制计数、显示系统设计姓名: 学号:班级: 通信 1301 指导教师: 刘桂华西南科技大学信息工程学院制 2 基于 HDL 十进制计数、显示系统设计一、实验目的 1、掌握基于语言的 ISE 设计全流程; 2、熟悉、应用 VerilogHDL 描述数字电路; 3、掌握基于 Verilog 的组合和时序逻辑电路的设计方法; 4、掌握 chipscope 片内逻辑分析仪的使用与调试方法。二、实验原理 1、实验内容: 设计具有异步复位、同步使能的十进制计数器, 其计数结果可以通过七段数码管、发光二极管等进行显示。 2、模块端口信号说明: 输入信号: Clk_50m --- 系统采样时钟 clk ------- 待计数的时钟 clr --------- 异步清零信号,当 clr=0 ,输出复位为 0 ,当 clr=1 , 正常计数 ena--------- 使能控制信号,当 ena=1 , 电路正常累加计数, 否则电 3 路不工作输出信号: q[6 : 0]--------- 驱动数码管,显示计数值的个位 cout -----------1bit 数据,----------- 共阳级数码管, 公共端(接地,参考开发板原理图 3、以自顶向下的设计思路进行模块划分: 整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按键为实现硬件防抖,则需要将按键输入的时钟 clk ,先通过消抖模块消抖后,再输出至后续使用。 1) 十进制计数器模块设计输入: CLK ------- 待计数的时钟 CLR --------- 异步清零信号,当 CLR =0 ,输出复位为 0 ,当 CLR =1 ,正常计数。 EN--------- 使能控制信号,当 EN=1 , 电路正常累加计数, 否则电路不工作输出: SUM[3:0]---------- 计数值的个位。即,在 CLK 上升沿检测到 SUM=9 时, SUM 将被置 0 ,开始新一轮的计数。 4 tc ------------ 计数值的十位进位,即:只有在时钟 CLK 上升沿检测到 SUM=9 时, TC 将被置 1 ,其余情况下 TC=0; 在设计中可以使用 always , if-else-if 语句实现, 设计中注意不要在两个以上的 always 模块中对同一个变量进行赋值,否则会产生多重赋值源( multi-source )的问题。 2) 数码管显示驱动模块( ) 输入: input4[3:0] ------- 待显示的数值输出: out 7 [6:0] ---------- 驱动数码管的七位数值( 注意下表中 out 的对应位) 数码输入 sum 输出 out 3210 A out[0] B out[1] C out[2] D out[3] E out[4] 0000000000 1000110011 2001000100 3001100001 4010010011 5010101001 6011001000 7011100011 8100000000 9100100001 A101000010 5 b101111000 C110001100 d110110000 E111001100 F111101110 3 )消抖模块(1 )按键抖动的产生原因: 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。(2 )本次实验提供的消抖模块简介电平检查模块:检测输入的按键是否被按下或者释放,并分别将 H2L_Sig,L2H_Sig 拉高, 并随后拉低, 给出按键的操作信息。延时模块: 对输入的信号变化时刻进行计时并观察信号的变换情况, 对输出端口进行恰当地赋值实验资料中将给出消抖模块设计源代码。对模块的具体设计细节不需理解,消抖模块不要求仿真三、实验步骤 6 1、创建工程。为工程,为工程命名、指定存储路径个文件夹。 2、计数器及数码管驱动模块设计创建 VHD 模块文件,对各个模块进行设计(1) 计数器模块代码编写 t10(clk,clr,en,sum,tc ); input clk,clr,en; output reg [3:0] sum;output tc; assign tc=(sum==4'b1111); always @(posedge clk ,negedge clr) begin if(~clr) sum<=4'b0000; else if(en) begin sum=sum+1'b1; i
FPGA实验报告实验2 来自淘豆网m.daumloan.com转载请标明出处.