1、湘 潭 大 学 实 验 报 告课程名称 实用数字电子技术基础 实验名称_计数器和移位寄存器_ 页数 专业 计算机科学与技术 班级_1 班_ 同组者姓名 组别 学号 2015551118 姓名 扶智宏 实验日期_2016 年 5 月 14 日星期六_计数器实验一、 实验目的1. 验证同步十六进制计数器的功能。2. 进一步熟悉 Quartus II 的 Verilog HDL 文本设计流程,掌握组合电路的设计仿真和硬件测试。3. 初步掌握 Quartus II 基于 LPM 宏模块的设计流程与方法,并由此引出基于 LPM 模块的许多其他实用数学系统的自动设计技术。二、 实验原理计数器能记忆脉冲的个
2、数,主要用于定时、分频、产生节拍脉冲及进行数字运算等。加法计数器每输入一个 CP 脉冲,加法计数器的计数值加 1.十六进制计数即从0000 一直计数到 1111;当计数到 1111 时,若再来一个 CP 脉冲,则回到 0000,同时产生进位 1。同步十六进制计数器设计采用 if-else 语句对计数器的输出分别进行赋值,能实现对输入脉冲的计数,并具有使能和异步清零功能。三、 实验内容和实验要求1, 找到书上代码中的两个错误并且修改,试说明各个语句的含义,以及该例的整体功能,并在 QuartusII 上对该例进行编辑,编译综合,适配,仿真,给出其所有信号的时许仿真波形。第一处,书上为 outpu
3、t3:0 cout 应该为 output cout (cout 不是总线输出)第二处,书上为 if(clr) outy=4b1111 应该为 if(clr) outy=4b0000(清零端有效时,应该输出 0)2, 计数器加译码器设计(1 ) ,功能描述风格的 Verilog 的计数器设计。(2 ) ,基于 LPM 宏模块的计数器设计。四、实验环境与设备GW48-CP+五,实验代码设计(含符号说明)module count(en,clk,clr,cout,outy);input en,clk,clr; /en 为使能输入,clk 为时钟信号,clr 为清零标志output 3:0 outy;
4、/outy 是输出结果output cout; /进位输出reg 3:0 outy;always (posedge clk or posedge clr)beginif(clr=1) outy = 4b0000;else if(en=1)begin if(outy=4b1111) outy = 4b0000;else outy = outy+1b1;endendassign cout=(outy=4b1111)endmodulemodule decl7s(a,led7s);input 3:0 a; /四位二进制输入output 6:0 led7s; /七位译码管显示四位二进制数的值reg 6:
5、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
6、;4b1100:led7s=7b0111001;4b1101:led7s=7b1011110;4b1110:led7s=7b1111001;4b1111:led7s=7b1110001;default:led7s=7b0000000;endcaseendmodule六、实验检验与测试Verilog 的原理图如下:LPM 的原理图:引脚锁定如下:通过编译,表明没有问题七、测试数据仿真波形如下:由仿真图可以看出清零端是有效的,并且当计数到最大值时会异步清零八、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等)1,实验现象:仿真出来的波形图看不到明显现象原因分析:设置的时间间隔
7、不合理排故障的方法:重新设置仿真时钟信号,以及清零端的时间间隔2,实验现象:在硬件上面操作没反应,原因分析: 下载失败排故障的方法:编译后再次下载移位寄存器实验一、 实验目的1, 设计一个 8 位双向移位寄存器,理解移位寄存器的工作原理,掌握串入/ 并出端口控制的描述方法。2, 熟悉 QuartusII,掌握 Verilog HDL 编程,编译和仿真,以及硬件测试方法。二、 实验原理移位寄存器不仅具有存储代码的功能,而且在移位脉冲作用下,还有左移、右移等功能。设计一个 8 位二进制双向移位寄存器,能实现数据保持、右移、左移、并行置入和并行输出等功能。移位寄存器有三种输入方式:8 位并行输入、
8、1 位左移串行输入、1 位右移串行输入;有一种输出方式:8 位并行输出。双向移位寄存器工作过程如下:(1 )当 1 位数据从左移串行输入端输入时,首先进入内部寄存器最高位,并在并行输出口最高位输出,后由同步时钟的上升沿触发向左移位。(2 )当 1 位数据从右移串行输入端输入时,首先进入内部寄存器最低位,并在并行输出口最低位输出,后由同步时钟的上升沿触发向右移位。三、 实验内容和要求8 位双向移位寄存器设计通过 Verilog HDL 语言编程,实现双向移位寄存器,其输入,输出端口设计具体要求如下:Clr :异步清零信号,低电平有效,当 clr=0 时,8 位输出端清零Clk:移位寄存器时钟脉冲
9、输入,上升沿有效Srsi:串行右移输入端Slsi:串行左移输入端。Din:8 位并行数据输入端Dout:8 位并行数据输出端S: 2 位控制端,当 s=00 时,8 位输出端保持原来状态不变,当 s=01 时,允许串行左移输入一位数据,当 s=10 时,允许串行右移输入一位数据,当 s=11 时,允许 8 位数据从并行端口输入四、 实验环境与设备GW48-CP+五、 实验代码设计(含符号说明)module mooc(clr,clk,srsi,slsi,din,dout,s);input clr,clk,srsi,slsi; /clr 为清零信号,clk 为时钟输入, srsi 为右移输入,sl
10、si 为左移输入input 7:0din; /8 位二进制输入input 1:0s; /控制左移还是右移output 7:0dout; /输出情况reg 7:0dout;always (negedge clr or posedge clk)beginif(!clr) dout = 8b00000000;else if(s = 2b01) begindout0 = dout1;dout1 = dout2;dout2 = dout3;dout3 = dout4;dout4 = dout5;dout5 = dout6;dout6 = dout7;dout7 = slsi;endelse if(s =
11、 2b10)begindout7 = dout6;dout6 = dout5;dout5 = dout4;dout4 = dout3;dout3 = dout2;dout2 = dout1;dout1 = dout0;dout0 = srsi;endelse if(s = 2b11)dout7:0 = din7:0;endendmodule六、 实验检验与测试原理图如下:引脚锁定如下:编译结果如下:编译结果表明设计原理图时没有出现问题七、 测试数据仿真图如下:由此可知实验成功,最后在器件箱上进行下载实验也成功八、实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等)1,实验现象:仿真出来的波形图错误原因分析:clr 为低电平有效 排故障的方法:重新设置仿真信号,在某些地方改为低电平,其他大部分都是高电平2,实验现象: 无法下载到器件上面原因分析: 未知排故障的方法:请同学帮忙下载到试验箱上进行实验3,实验现象:不知道怎么进行实验的演示原因分析: 对实验不熟悉排故障的方法:多看书几次,再请同学帮忙在试验箱上进行演示