八位二进制计数器代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数字电路课程设计设计题目计数器设计:设计一个8位二进制计数器。功能要求:加减控制信号为1时,加计数;0时,减计数。使能控制信号为1时,停止计数,并将当前计数值设置为输入值;使能控制信号为0时,计数器按照加减控制信号工作。要求写出Verilog代码,给出仿真波形一、设计思路1、认真理解题目(1)作为一个八位二进制计数器,首先,这个计数器有八个比特位;其次,二进制计数器必须按照二进制的递增计数,于一般二进制不一样。(2)使能信号为1是停止计数,为0是开始计数。说明该计数器的使能端信号低有效。(3)控制信号位1时递增计数。控制信号位0时递减计数,说明该计数器位双向计数器。2、设计思路(1)递增计数和递减计数两种模式在控制变量1和0的选择下进入,因而可以采用if语句的嵌套来实现比较容易。(2)停止计数时可以只把之前的计数输出赋值给置位信号。(3)经过分析,该模型的变量有使能信号、置位信号、选择模式信号、时钟信号、输出状态。二、verilog程序/******************************分频模块*************************************/`timescale1ns/1psmodulequ_dou(clk,rst,a,b);inputclk;wireclk;inputrst;inputa;wirea;outputb;regb;reg[31:0]cnt;regclkout;always@(posedgeclkornegedgerst)beginif(rst==1'b0)cnt=0;elsebeginif(a==1'b1)beginif(cnt=32'd3000000)b=1;elsecnt=cnt+1'b1;endelsebeginb=1'b0;cnt=0;endendendendmodule`timescale1ns/1psmodulecounter4(load,clr,c,DOUT,clk,up_down,DIN,sysclk,rst);inputload;inputclk;wireload;inputclr;wireclr;inputup_down;wireup_down;input[3:0]DIN;wire[3:0]DIN;inputsysclk;inputrst;outputc;regc;output[7:0]DOUT;wire[7:0]DOUT;reg[7:0]data_r;/*****************例化去抖模块*************************************/wireclk_r;qu_douqu_dou(.clk(sysclk),.rst(rst),.a(clk),.b(clk_r));//*********************************************************************assignDOUT=data_r;always@(posedgeclk_rorposedgeclrorposedgeload)beginif(clr==1)//同步清零data_r=0;elseif(load==1)//同步预置data_r=DIN;elsebeginif(up_down==1)beginif(data_r==8'b11111111)begin//加计数data_r=8'b00000000;c=1;endelsebegin//减计数data_r=data_r+1;c=0;endendelsebeginif(data_r==8'b00000000)begin//加计数data_r=8'b11111111;c=1;endelsebegin//减计数data_r=data_r-1;c=0;endendendendendmodule三、仿真波形四、结果及分析在程序设计中,当置数控制端口为高电平时,允许为该计数器置初值,把置数端口的值附给计数器,即高电平时有效。如果清零信号为1时,则将对计数器清零,即复位;当为低电平时,如果清零为0',则看是否有时钟上升沿,此时如果有时钟信号,又测得使能信号位为'1',同时k='1',则允许加法计数;如果有时钟信号,又测得使能信号为'1',同时测得k='0',则减法计数。如果测得如使能信号'0',则跳出if语句,使qq保持原值,并将所计数的数值向输出端口输出。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功