【verilog】含异步清零和同步使能的加/减法计数器

这篇具有很好参考价值的文章主要介绍了【verilog】含异步清零和同步使能的加/减法计数器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 实验目的
    1. 掌握二进制计数器的工作原理。
    2. 能使用verilog设计计数器。

3、进一步熟悉QUARTUSII软件的使用方法和verilog输入方式

  • 实验原理与内容
  1. 实验原理

二进制计数器中应用最多、功能最全的计数器之一,是含异步清零和同步使能的具有并行载入功能的加/减法计数器。其具体工作过程如下:

复位信号有效(低电平有效)时,计数值清零。并行载入控制信号有效时,并行数据输入端的数据存入计数器中。使能信号有效时,根据加减法控制信号来进行加法或者减法计数。具有并行载入数据功能的4位加法计数器原理图如图所示。请参考该图,设计具有异步复位和加/减法功能的计数器。

计数清零 verilog,数字逻辑,fpga开发

2.实验内容

本实验要求完成的任务是使用verilog和Quartus II,设计一个4位2进制计数器,并在可编程逻辑器件中实现。在时钟信号的作用下,通过加减控制信号、使能端、并行载入控制信号和复位信号来控制完成加/减法计数和并行载入数据的功能。实验中时钟信号使用数字时钟源模块的1HZ信号,用一位拨动开关K1表示使能端信号,用一位拨动开关K2表示加减控制信号,用一位拨动开关K3表示并行载入数据控制信号,用拨动开关K4~K7表示4位并行载入数据,用复位开关S1表示复位信号,用LED模块的LED1~LED4来表示4位计数器的二进制计数值,用LED12表示加/减法计数时的进位/借位信号。实验LED亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。通过输入不同的值实现计数器的工作时序,观察计数的结果。

数字时钟信号模块的电路原理如图所示,

计数清零 verilog,数字逻辑,fpga开发

下表是其时钟输出与FPGA的管脚连接表。

信号名称

对应FPGA管脚名

说明

DIGITAL-CLK

K7

数字时钟信号送至FPGA的K7

按键开关模块的电路原理如下图所示,下表是按键开关的输出与FPGA的管脚连接表。

计数清零 verilog,数字逻辑,fpga开发

信号名称

FPGA I/O名称

核心板接口管脚号

功能说明

S[0]

Pin_B12

JP1_79

‘S1’ Switch

S[1]

Pin_B11

JP1_77

‘S2’ Switch

S[2]

Pin_V4

JP3_56

‘S3’ Switch

S[3]

Pin_T4

JP3_52

‘S4’ Switch

S[4]

Pin_P3

JP3_48

‘S5’ Switch

S[5]

Pin_AB11

JP3_40

‘S6’ Switch

S[6]

Pin_A12

JP3_78

‘S7’ Switch

S[7]

Pin_A11

JP3_76

‘S8’ Switch

S[8]

Pin_V5

JP1_55

‘S9’ Switch

S[9]

Pin_T3

JP1_51

‘S10’ Switch

S[10]

Pin_AA12

JP3_43

‘S11’ Switch

S[11]

Pin_T1

JP3_11

‘S12’ Switch

三.实验过程

1.打开QUARTUSII软件,新建一个名为exp2的工程

2.建完工程之后,再新建一个verilog文件,打开verilog编辑器对话框编写verilog程序如下:

module exp2(R,Resetn,Clk,Load,En,up_down,Count,Q);
    /*
    * 说明:
    * R         输入向量    提供并行数据
    * Resetn    复位输入
    * Clock     时钟信号 
    * Load      Load==0(计数模式)     Load==1(加载模式)
    * En        使能输入端
    * up_down   用于识别计数器执行加/减运算
    * Q         输出向量 
    * Count     进位/借位信号
    */
    input [3:0]R;
    input Resetn,Clk,Load,En,up_down;
    output reg [3:0]Q;
    output reg Count;

    reg Clock_1hz;          //1Hz分频新信号
    reg [26:0]Counter;      //计数器用于分频时计数


    //实现50MHz到1Hz分频操作,产生频率为1Hz的时钟信号
    always @(posedge Clk)
    begin
        if(Counter == 'd25000000)
        begin
            Clock_1hz <= ~Clock_1hz;
            Counter <= 0;
        end
        else
            Counter <= Counter + 1;
    end
  //主程序部分,实现键控加法减法计数、并行载入数据、进位/借位输出
    always @(negedge Resetn,posedge Clock_1hz)
    begin
        if(Resetn == 0)
		  begin
            Q <= 0;
				Count<=0;
			end
        else if(Load)
            Q <= R;
        else if(En)
        begin
            Q <= Q + (up_down ? 1 : -1);
            if(up_down)
                Count = (Q[3]&Q[2]&Q[1]&Q[0]);
            else
                Count = (!(Q[3]|Q[2]|Q[1]|Q[0]));
        end
	end
endmodule

3.对编写的verilog程序进行编译并仿真,对程序的错误进行修改。

波形图如下:

计数清零 verilog,数字逻辑,fpga开发

4.编译仿真无误后,依照拨动开关、LED与FPGA的管脚连接表或参照实验箱用户手册进行管脚分配,分配完成后,再进行全编译一次,以使管脚分配生效,管脚分配图如下:

计数清零 verilog,数字逻辑,fpga开发

实验结果:

不拨动开关,即K7 K6 K5 K4表示D3 D2 D1 D0为0000;

拨动开关K4,即K7 K6 K5 K4表示D3 D2 D1 D0为0001;

拨动开关K5,即K7 K6 K5 K4表示D3 D2 D1 D0为0010;

拨动开关K5K4,即K7 K6 K5 K4表示D3 D2 D1 D0为0011;

拨动开关K6,即K7 K6 K5 K4表示D3 D2 D1 D0为0100;

拨动开关K6K4,即K7 K6 K5 K4表示D3 D2 D1 D0为0101;

拨动开关K6K5,即K7 K6 K5 K4表示D3 D2 D1 D0为0110;

拨动开关K6K5K4,即K7 K6 K5 K4表示D3 D2 D1 D0为0111;

拨动开关K7,即K7 K6 K5 K4表示D3 D2 D1 D0为1000;

计数清零 verilog,数字逻辑,fpga开发

计数清零 verilog,数字逻辑,fpga开发

拨动开关K1,使得CLK信号为1,计数器开始工作,前四个LED灯通过8421码计数0000,0001,0010,0011,0100,0101,0110,0111,1000并通过显示屏显示出数字,可以通过开关K2设置递增计数与递减计数,通过LOAD端表示存入一个数并从此数开始计数,通过Reset端进行复位清零,达到所需功能。

四、实验总结

本实验最重要的是设计到复位清零端进行复位清零,对于递增计数与递减计数的设置需要清除verilog代码编写上的问题,设置Load端控制存入所需数字时高位低位互相对应,否则会产生一些不必要的问题,造成一些麻烦,在进行管脚分配的时候也要一一对应。文章来源地址https://www.toymoban.com/news/detail-781806.html

到了这里,关于【verilog】含异步清零和同步使能的加/减法计数器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • verilog设计技巧 (1) :复位技术(同步复位、异步复位、异步复位同步释放)

    一、复位的类型和划分 通常,芯片的复位信号分为两大类, 全局复位 和 局部复位 ; 全局复位: 能够确保每个寄存器都处于可控的状态; 局部复位: 基于软件功能的需求而存在的独立复位,对于某一个模块的单独控制,建议使用局部复位; ( 等待完善 ) 二、同步复位 定义

    2023年04月21日
    浏览(38)
  • 数电与Verilog基础知识之同步和异步、同步复位与异步复位

    同步和异步是两种不同的处理方式,它们的区别主要在于是否需要等待结果。同步是指一个任务在执行过程中,必须等待上一个任务完成后才能继续执行下一个任务;异步是指一个任务在执行过程中,不需要等待上一个任务完成,可以同时执行多个任务。同步和异步的优缺点

    2024年02月14日
    浏览(54)
  • 使用funcgraph-retval和bpftrace/kprobe快速定位并解决cpu控制器无法使能的问题

    Linux 6.5 在学习cgroupv2的时候,想给子cgroup开启cpu控制器结果失败了: 在给子cgroup开启cpu控制器时提示参数无效,即-EINVAL,错误码是-22. 之前给linux内核的function graph增加了显示函数返回值的功能,正好可以派上用场。 使用下面的命令配置ftrace 目前社区版本还不支持funcgraph-r

    2024年02月05日
    浏览(53)
  • verilog|关于异步复位,同步释放的几个思考

    异步复位,同步释放是一种常见的设计思路,那么 什么情况下,复位信号需要做“异步复位,同步释放”处理? 一般来说,同步系统,都使用异步复位。这是因为同步复位的电路实现,比异步复位的电路实现,要浪费更多电路资源。 未在本模块时钟域做过“异步复位,同步

    2023年04月15日
    浏览(35)
  • FIFO设计笔记(双口RAM、同步FIFO、异步FIFO)Verilog及仿真

    0.1、FIFO FIFO (First-In-First-Out) 是一种先进先出的数据缓存器,在数字ASIC设计中常常被使用。在实际开发中,多数都是直接使用公司经过top-out验证的FIFO IP或者是ISE/Vivado工具自带的FIFO IP,并不需要自己造轮子。但是,作为设计者,必须要掌握FIFO的设计方法,这样可以适配于各种

    2023年04月09日
    浏览(41)
  • 【FPGA】Verilog:时序电路 | 触发器电路 | 上升沿触发 | 同步置位 | 异步置位

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:触发器电路    ​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用IO:Sw

    2024年02月11日
    浏览(39)
  • 【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现

    目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)

    2024年02月05日
    浏览(54)
  • 从D的触发机制到寄存器的同步清零

    之前助教向我们介绍了利用MUX进行同步清零的操作,但是对于寄存器的clk端没有进行使用。当我在看到D的触发器的触发冒险机制时,我在思考能否将这种机制应用到寄存器的同步复位上,最终结果证明是可行的。 D触发器的实现 我在这里截取了PPT中D触发器的一种实现方式,

    2024年02月08日
    浏览(39)
  • 北邮22级信通院数电:Verilog-FPGA(9)第九周实验(3)实现一个具有清零功能的按键计数器,对按键进行计数并显示

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客   目录 一.代码部分 1.1 counter.v 1.2 debounce.v 二.管脚分配 三.实现效果

    2024年02月05日
    浏览(60)
  • 同步复位、异步复位和异步复位同步释放

    复位的基本目的是使器件进入到可以稳定工作的确定状态,避免器件在上电后进入随机状态。 同步复位就是在是在时钟上升沿到来时,复位信号有效。 下面是一个简单的同步复位的D触发器,代码如下: 同步复位的优点: 1、抗干扰性高,可以剔除复位信号中周期短于时钟周

    2024年01月18日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包