文档详情

实验三 时序电路实验 ——计数器和移位寄存器实验报告.doc

发布:2019-07-22约3.99千字共6页下载文档
文本预览下载声明
湘 潭 大 学 实 验 报 告 课程名称 实用数字电子技术基础 实验名称___计数器和移位寄存器_ 页数 专业 计算机科学与技术 班级_______1班________ 同组者姓名 组别 学号 2015551118 姓名 扶智宏 实验日期___2016年5月14日星期六_ 计数器实验 实验目的 验证同步十六进制计数器的功能。 进一步熟悉Quartus II的Verilog HDL文本设计流程,掌握组合电路的设计仿真和硬件测试。 初步掌握Quartus II基于LPM宏模块的设计流程与方法,并由此引出基于LPM模块的许多其他实用数学系统的自动设计技术。 实验原理 计数器能记忆脉冲的个数,主要用于定时、分频、产生节拍脉冲及进行数字运算等。加法计数器每输入一个CP脉冲,加法计数器的计数值加1.十六进制计数即从0000一直计数到1111;当计数到1111时,若再来一个CP脉冲,则回到0000,同时产生进位1。 同步十六进制计数器设计采用if-else语句对计数器的输出分别进行赋值,能实现对输入脉冲的计数,并具有使能和异步清零功能。 实验内容和实验要求 找到书上代码中的两个错误并且修改,试说明各个语句的含义,以及该例的整体功能,并在QuartusII上对该例进行编辑,编译综合,适配,仿真,给出其所有信号的时许仿真波形。 第一处,书上为 output[3:0] cout 应该为output cout (cout不是总线输出) 第二处,书上为if(clr) outy=4’b1111 应该为if(clr) outy=’4b0000(清零端有效时,应该输出0) 计数器加译码器设计 (1),功能描述风格的Verilog的计数器设计。 (2),基于LPM宏模块的计数器设计。 四、实验环境与设备 GW48-CP++ 五,实验代码设计(含符号说明) module count(en,clk,clr,cout,outy); input en,clk,clr; //en为使能输入,clk为时钟信号,clr为清零标志 output [3:0] outy; //outy是输出结果 output cout; //进位输出 reg [3:0] outy; always @ (posedge clk or posedge clr) begin if(clr==1) outy = 4b0000; else if(en==1) begin if(outy==4b1111) outy = 4b0000; else outy = outy+1b1; end end assign cout=((outy==4b1111)en) ? 1 : 0; endmodule module decl7s(a,led7s); input [3:0] a; //四位二进制输入 output [6:0] led7s; //七位译码管显示四位二进制数的值 reg [6:0] led7s; always @(a) case(a) 4b0000:led7s=7b0111111; 4b0001:led7s=7b0000110; 4b0010:led7s=7b1011011; 4b0011:led7s=7b1001111; 4b0100:led7s=7b1100110; 4b0101:led7s=7b1101101; 4b0110:led7s=7b1111101; 4b0111:led7s=7b0000111; 4b1000:led7s=7b1111111; 4b1001:led7s=7b1101111; 4b1010:led7s=7b1110111; 4b1011:led7s=7b1111100; 4b1100:led7s=7b0111001; 4b1101:led7s=7b1011110; 4b1110:led7s=7b1111001; 4b1111:led7s=7b1110001; default:led7s=7b0000000; endcase endmodule 六、实验检验与测试 Verilog的原理图如下: LPM的原理图: 引脚锁定如下: 通过编译,表明没有问题 七、测试数据 仿真波形如下: 由仿真图可以看出清零端是有效的,并且当计数到最大值时会异步清零 八、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等) 1,实验现象:仿真出来的波形图看不到明显现象 原因分析:设置的时间间隔不合理 排故障的方法:重新设置仿
显示全部
相似文档