设计含异步清零和同步时钟使能的加法计数器 下载本文

内容发布更新时间 : 2024/4/25 15:51:30星期一 下面是文章的全部内容请认真阅读。

附表1:

广州大学学生实验报告

开课学院及实验室:物理与电子工程学院-电子楼317室 2016 年 4 月 21 日

学 院 物 电 年级、专业、班 姓名 Jason.P 学号 成绩 实验课程名称 实验项目名称 一、 实验目的: EDA技术实验 设计含异步清零和同步时钟使能的加法计数器 指 导 教 师 学习计数器的设计、仿真和硬件测试,进一步熟悉VerilogHDL设计技术。 二、 实验内容: 含异步清0和同步时钟使能的4位加法器 (1)实验原理: 上图是一含计数使能、异步复位的4位加法计数器,书中例3-15是其VerilogHDL描述。由图2-1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3:0]是4位数据输入端。当ENA为‘1’时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为‘0’时保持上一次的输出。 (2)实验步骤: (2)-1按照发给大家的文件“Quartus II 9.0基本设计流程-VerilogHDL.ppt”所讲述的步骤,在QuartusII上对例3-15(第四版)(第五版p124例5-15)进行编辑、编译、综合、适配、仿真。说明例2-1各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

(2)-2引脚锁定以及硬件下载测试:

若目标器件是EP3C40Q240C8N,建议选实验电路模式5,用键8(PIO7)控制RST;用键7控制ENA;计数溢出COUT接发光管D8;OUTY是计数输出接数码1;时钟CLK接clock2,通过跳线选择4Hz信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。

三、 实验HDL描述:

module CNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA)

input CLK,EN,RST,LOAD; //定义输入信号

input[3:0] DATA; //定义4位的并行加载数据DATA output[3:0] DOUT; //定义4位的计数输出数据DOUT output COUT; //定义进位输出信号COUT reg[3:0] Q1; //定义4位的寄存器型中间变量Q1 reg COUT;

assign DOUT = Q1; //将内部寄存器的计数结果输出至DOUT always @(posedge CLK or negedge RST) //时序过程 begin

if(!RST) Q1 <= 0; //RST=0时,对内部寄存器单元异步清0 else if(EN)

begin //同步使能EN=1,则允许加载或计数 if(!LOAD) Q1 <= DATA; //当LOAD=0,向内部寄存器加载数据 else if(Q1<9) Q1 <=Q1+1; //当Q1小于9时,允许累加 else Q1 <=4'b0000; //否则一个时钟后清零返回初值 end end

always @(Q1) //组合过程 if (Q1==4'h9) COUT = 1'b1; else COUT = 1'b0; endmodule

四、仿真结果:

图1

图2

由图1的时序波形可见,当EN=0时,DOUT的输出数据3保持了一段时间;

当EN=1,且在时钟CLK的上升沿时间范围LOAD=0时,4位输入数据DATA=0被加载,在LOAD=1后作为计数器的计数初值(图1); 当EN=1,LOAD=1时,输入的数据不被加载;

RST在任意时刻均有效,即使CLK非上升沿时,计数也能即刻清0(图2:计数到3后清0); 当计数到9时,COUT输出进位1,如图2所示。

五、引脚锁定:

六、硬件测试结果:

程序下载

硬件测试效果(模式5)

硬件测试的结果现象为:当键1(RST)、键2(EN)、键3(LOAD)均处于高电平时,数码管1依照时钟信号的周期(CLOCK0=1Hz),从0依次变化到9,当计数到9时,LED灯(D8:COUT)亮起。

数码管1显示的过程中,按下键1(RST)时(变为低电平),数码管1即刻清零;按下键2(EN)时(变为低电平),数码管1保持显示当前的数字(如上硬件测试效果图:保持显示数字5);按下键3(LOAD)时(变为低电平),数码管1显示的数字变为由键8-键5确定的DATA值(上图为:0011B,就是十进制数3),恢复键1-键3的高电平状态,计数功能正常运行。

七、实验心得:

通过本次实验,使我进一步熟悉了QuartusII的VerilogHDL文本设计流程以及电路仿真和硬件测试。本次实验的重难点是引脚锁定,数码管的显示是需要先经过译码器的处理,所以我选择了模式5。通过对照实验电路结构图以及芯片引脚的定义表,正确进行引脚锁定,否则编译会出错或者达不到预期的效果。总的来说,本次实验还是有一定的挑战性。

八、思考题:

给出含异步清零和同步使能的16位二进制加减可控计数器的VerilogHDL描述。 module UPDOWNCNT16(Q,COUT,DATA,LOAD,EN,CLK,RST,UP_DOWN) input[15:0] DATA;

input LOAD,EN,CLK,RST,UP_DOWN; output[15:0] Q;