4位二进制加减法计数器

贵州大学实验报告

学院: 计算机科学与信息学院 专业:信息安全 班级: 姓名 实验时间 实验项目4位二进制加减法计数器 名称 实1、 了解二进制加减法计数器的设计,进一步了解熟悉和掌握Quartus II的使用方法 验2、 学习Verilog HDL的编程方法 目3、 学习使用Vector Wave功能仿真 的 实验仪器 计数器是数字系统中用的较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时等功能。 计数器的种类很多.按脉冲方式可以分为同步计数器和异步计数器;按进制可以分为二进制计数器和非二进制计数器;按计数过程数字的增减,可分为加计数器、减计数器和可逆. 本实验就是设计一个4位二进制加减法计数器,数器时加计数还是减计数,另外,该计数器可以通过一个实控制信号决定计该寄存器还有一个清零输入,低电平有效。还有一个load装载数据的信号输入,用于预验置数据;还有一个C的输出,用于计数器的级联。 原1.新建工程,取名为counter4. 理 2.新建设计文件,选择“File I New\,单击OK,完成新建设计文件。在New对话框中选择Device Design Files下的Verilog 3.为设计源码生成图形设计文件。在Quartusl冲点击「ile菜单,在Create/Update为这个设计源码生成一个带外围接口的图形。中点击Create Symbol file for Current file。 4.在Quartus\新建图形设计文件.点击File菜单下的New 硬件:FPGA2C35一Ⅱ开发板、USB ByteBlaster下载线 软件:Altera Quartus 11 9.0集成开发环境 2013-11-22 学号 指导教师 栾凤 实验组 成绩 5.打开Project会出现一个counter4,修改名称与源码中端口名一致. 选择Block Diagram/Schematic File.在右侧栏同时会显示它的顶层图形。添加输入输出引脚, 6.管脚分配。 (为观察方便将CLk信号用实验板上一个按码开关替代),管脚分配结束,qsf文件保存关闭。 未使用的管脚设置三态. 编译Quartusil工程.结束后。下载生成的配置文件,观察结果。 module counter4(load,clr,c,DOUT,clk,up_down,DIN); //定义一个名为counter4的模块接口为load,clr,c,DOUT,clk,up_down,DIN input load; //定义load接口为输入接口 input clk; //定义clk接口为输入接口 wire load; //定义load为线网类型 input clr; //定义接口clr为输入接口 input up_down; //定义接口up_down为输入接口 wire up_down; //定义up_down为线网类型 input [3:0]DIN; //定义接口DIN为4为输入接口 wire [3:0] DIN; //定义DIN为线网类型 output c; //定义接口c为输出接口 reg c; //定义c为寄存器类型 output [3:0]DOUT; //定义接口DOUT为4为输出接口 wire [3:0]DOUT; //定义DOUT为线网类型 reg [3:0]data_r; //定义data_r为寄存器类型 assign DOUT=data_r; 将DOUT接口和data_r接口相连 实always@(posedge clk or posedge clr or posedge load) //当clk,clr,posedge上沿到来时执行一次一下过程 验 begin if(clr) //如果clr输入为1执行一下步骤 内 data_r<=0; //将0值赋给data_r 容 else if(load) //如果clr的输入为0,load输入为1 data_r<=DIN; //将DIN的值赋给data_r else begin if (up_down)//如果clr的输入为0,load输入为0,up_down的输入为1则执行以下过程 begin if(data_r==4'b1111)begin //如果data_r的值为1111则执行一下过程 data_r<=4'b0000; //将0000赋给data_r c=1; end else begin //如果data_r的值不为1111则执行一下步骤 data_r<=data_r+1; //将data_r的值增大1 c=0; end end else begin//如果clr的输入为0,load输入为0,up_down的输入为0则执行以下过程 if(data_r==4'b0000)begin //如果data_r的值等于0000则执行以下步骤 data_r<=4'b1111; //将1111赋给data_r c=1; end else begin //如果data_r的值不等于0000则执行以下步骤 data_r<=data_r-1; //将data_r-1的值赋给data_r c=0; end end end end endmodule //模块定义结束 实验数据 从实验结果图可以看出当up_down=1时执行加法计数器,每当clk输入一个上升信号时计数器的值DOUT增加1。当up_down=0时执行减法计数器,每当clk输入一个上升信号时计数器的值DOUT减少1。当load=1是计数器载入预留值即DOUT=DIN。当clr输入为1是计数器执行清零操作。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4