Verilog基础之一、触发器实现

news2024/11/24 10:55:09

目录

一、触发器简介

    1.1 触发器作用

    1.2 触发器信号

    1.3 使用规范

    1.4 Vivado综合触发器

二、代码实现

三、综合结果


一、触发器简介

    1.1 触发器作用

    触发器是工程中基础的单元结构也是相当重要的组成,时序电路的实现离不开触发器。触发器是具有存储功能的器件,时钟脉冲的边沿触发状态改变。通常,触发器可分为D触发器,T触发器,JK触发器等。

    1.2 触发器信号

    触发器的输入信号分为两类:数据信号,控制信号,控制信号包括时钟信号,异步或同步置位/复位信号,时钟使能信号。

    1.3 使用规范

    在使用触发器时,根据以往的经验,有一些尽量避免的使用规范,遵循这些规范可以避免很多问题。

    a. 不要使用异步置位/复位寄存器

    b. 触发器中不要同时存在置位和复位信号

    c. 避免单独的置位/复位逻辑,尽量使用全局复位可以在更少的资源下达到想要的效果

    d.时钟使能信号,置位/复位信号使用高电平生效,如果低电平有效,则需要一个反相器,这将会降低电路性能。

    1.4 Vivado综合触发器

    Vivado会根据设计综合出触发器,综合出的触发器有4类D触发器,FDCE,FDPE,FDSE和FDRE。

FDCE:具有时钟使能和异步清零

FDPE:具有时钟使能和异步置位

FDSE:具有时钟使能和同步置位

FDRE:具有时钟使能和同步复位

    在vivado的综合报告中可以查看设计中使用的寄存器数目,但有时会出现统计的数目和实际使用的数目不一致,主要是有以下3个原因的影响

a.有一部分寄存器被吸收进入到DSP块或块状RAM中

b.存在寄存器复制

c.无输入的寄存器或者作用相同的寄存器被移除了

二、代码实现

代码中包含了四个寄存器fdce,fdpe,fdse,fdre,对应vivado所能综合的四种寄存器类型。

module FF(d,ce,clk,clr,set,out  );
input [3:0] d;
input ce;
input clk;
input clr;
input set;
output [3:0] out;
reg fdce,fdpe,fdse,fdre;
always@(posedge clk,posedge clr)
    begin
    if(clr)
        fdce<=0;
    else
        if(ce)
            fdce<=d[0];
     end
assign out[0]=fdce;
 always@(posedge clk,posedge clr)
    begin
    if(clr)
        fdpe<=1;
    else
        if(ce)
            fdpe<=d[1];
     end
assign out[1]=fdpe;
always@(posedge clk)
    begin
    if(set)
        fdse<=1;
    else
        if(ce)
            fdse<=d[2];
     end
assign out[2]=fdse;
 
always@(posedge clk)
    begin
    if(set)
        fdre<=0;
    else
        if(ce)
            fdre<=d[3];
    end
assign out[3]=fdre;       
endmodule

     

三、综合结果

上述代码综合结果如下图,四个触发器的实现类型符合预期,分别为FDCE,FDPE,FDRE,FDSE

​    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python升序排序不用sort

Python 升序排序不用 sort 如果你在Python编程领域有多年的经验&#xff0c;那么你肯定对sort函数非常熟悉。sort是Python自带的用于列表或数组进行排序的函数。sort函数可以根据元素的值进行升序排序或降序排序&#xff0c;非常方便。但是&#xff0c;如果你需要在不使用sort…

【小白教程】Docker安装使用教程,以及常用命令!

【小白教程】Docker安装使用教程&#xff0c;以及常用命令&#xff01; - 带你薅羊毛最近调试Docker内容&#xff0c;顺手记录一下&#xff0c;我常用的几个命令&#xff01;这里总结一下&#xff0c;方便自己也同时方便大家使用&#xff01; 内容慢慢完善更新&#xff01;如有…

Linux 之JavaEE定制篇-搭建JavaEE 环境

Linux 之JavaEE 定制篇-搭建JavaEE 环境 注意 本篇软件链接提供 链接&#xff1a;https://pan.baidu.com/s/1y5qqQvWGQ-iz5M2WUrjD3A?pwdv5l2 提取码&#xff1a;v5l2 如果嫌自己下载麻烦或者难找可以考虑 概述 如果需要在Linux 下进行JavaEE 的开发&#xff0c;我们需要…

极速版手机蓝牙APP开发

极速版手机蓝牙APP开发 零、效果展示一、环境介绍二、开发过程控件布局代码逻辑蓝牙部分摇杆部分其他部分 三、整体优化四、结束语 零、效果展示 “这是一个充满科技风的手机蓝牙APP” 一、环境介绍 App Inventor是一款谷歌公司开发的手机编程软件&#xff0c;主要支持各种…

vue 实现 dragover拖拽到页面底部时元素自动向下滚动

公司要求做一个类似于企业微信的日程功能 然后呢 日程组件 需要能拖拽时间段创建 这里 我们使用 dragstartdragenddragover 记录被拖动位置完成的 如果没接触过 可以查看我的文章 vue记录鼠标拖拽划过位置并将划过位置变色 这里的话 其实可以在dragover中做操作 界面上 drag…

【C++ 基础篇:20】:类的 (const)static 静态成员:面试题:实现一个类,计算程序中创建出了多少个类对象?

本系列 C 相关文章 仅为笔者学习笔记记录&#xff0c;用自己的理解记录学习&#xff01;C 学习系列将分为三个阶段&#xff1a;基础篇、STL 篇、高阶数据结构与算法篇&#xff0c;相关重点内容如下&#xff1a; 基础篇&#xff1a;类与对象&#xff08;涉及C的三大特性等&#…

区块链基础之共识机制

1.1共识机制 1.1.1核心定义 区块链上的共识机制主要解决由谁来构造区块&#xff0c;以及如何维护区块链统一的问题 1.1.2共识机制分类 1.1.3 共识算法 1.1.3.1 POW(工作量证明) 代表项目&#xff1a;BTC 由于不同的节点接受数据有所区别&#xff0c;为了保证数据一致性&a…

改善录音直播收音环境,只需一副监听耳机,丁一号G800S体验

现在很多人已经习惯了使用蓝牙耳机&#xff0c;但在平时直播、录音的时候&#xff0c;把蓝牙耳机当作耳返工具并不好用&#xff0c;经常有延迟高之类的问题&#xff0c;影响我们的录音效果和沟通体验&#xff0c;这时候需要配备一个监听耳机&#xff0c;才能够了解到实际的收音…

斐波那契数列题解(非递归c++方法实现)

在做信奥赛&#xff08;信息学奥赛&#xff09;中的for循环题目时&#xff0c;有一道斐波那契数列&#xff0c;想到的第一个方法是使用递归求解&#xff1b;因为以往题目最多使用的就是递归形式&#xff0c;但鉴于该题目在for循环题目堆&#xff0c;所以就思考了一些新方法&…

果推断17--基于反事实因果推断的度小满额度模型学习笔记

目录 一、原文地址 二、一些问题 2.1如何从RCT随机样本过渡到观测样本因果建模&#xff1f; 2.2反事实学习的核心思想 2.3度小满的连续反事实额度模型 Mono-CFR 2.4Mono-CFR代码实现&#xff08;待补充&#xff09; 2.5CFR学习 2.5.1CFR 2.5.2DR-CFR 参考 一、原文地…

2.C++多线程--危险点分析

1.detach使用时分析 使用detach时&#xff0c;子线程一定不要传入指针 #include<iostream> #include<thread> using namespace std;void my_print(const int& num1,const char* str) {cout << num1 << " " << str << endl; …

MySQL 事务处理语言 TCL

文章目录 事务处理语言 TCL事务简介事务控制并发事务的隔离挑战脏读不可重复读幻读 事务的隔离级别未提交读&#xff08;READ-UNCOMMITED&#xff09;提交读&#xff08;READ COMMITED&#xff09;可重复读&#xff08;REPEATABLE READ&#xff09;可串行化&#xff08;SERIALI…

虹科案例 | 筒仓液位测量可以这么简单?

Part.01 行业挑战 在料箱、料斗或筒仓中使用散装物料的制造商需要准确可靠的液位检测来管理和处理库存&#xff0c;并最大限度地减少生产延迟。 塑料成型、食品加工和建筑材料等行业都依赖于散装材料。随着这些行业越来越接近准时制&#xff08;JIT&#xff09;制造&#xff…

认识协议【网络基础】

文章目录 什么是协议结构化数据结构化数据非结构化数据半结构化数据 结构化数据的传输序列化和反序列化 网络版计算器概述制定协议通过字符串传输结构化数据序列化与反序列化 实现计算器网络相关接口框架服务端客户端 制定协议请求响应发送和接收数据 计算逻辑测试存在的问题 T…

修改数组【并查集】

这里写自定义目录标题 并查集并查集的表示方法 题目输入描述输入示例输出示例 解题思路参考连接 并查集 并查集就是对集合的合并和查询操作的统称。他要求参与运算的两个集合是不相交的(不含有相同的元素)。针对这两个集合可以进行的操作&#xff1a; 1.合并&#xff1a;将两个…

复习之Linux系统中的进程管理

1.什么是进程&#xff1f;线程&#xff1f; 进程&#xff08;Process&#xff09;&#xff1a;是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。每启动一个进程&#xff0c;操作系统就会为它分配一块独立的内存空间&#xff0c;用于存储PCB、数据段、程…

如何从复盘中获得真正的收获?持续改进是关键!

复盘&#xff0c;本是围棋术语&#xff0c;每次博弈结束后&#xff0c;双方棋手把刚才的对局复演一遍&#xff0c;分析对局当中得失关键&#xff0c;提升自己棋力的好方法。复盘是对思维的训练。 通过复盘&#xff0c;当类似局面再次出现&#xff0c;你就能快速预测接下来的动态…

【网络】TCP套接字创建服务客户端与守护进程

文章目录 Tcp服务端TcpServer.hppTcpServer.cc Tcp客户端TcpClient.hppTcpClient.cc TCP客户端处理守护进程守护进程化 Tcp服务端 TcpServer.hpp TCP服务端创建流程如下&#xff1a; 创建socket文件套接字对象&#xff0c;面向字节流SOCK_STREAM bind绑定自己的网络信息&…

nacos注册中心配置springboot动态刷新源码解读

0丶简介 如何快速启动,请去官网看文档,言简意赅 https://nacos.io/zh-cn/docs/quick-start.html 只描述为何实现动态刷新的关键源码 1丶基于目前最新版本 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter --> <depend…

命名管道详解

一、命名管道 1、命名管道与匿名管道一个很显著的区别是&#xff1a;匿名管道只能在有血缘关系的进程间进行通信&#xff0c;但命名管道可以让两个毫无关系的进程进行通信。 2、如果我们想在不相关的进程间交换数据&#xff0c;我们可以用到FIFO文件来进行通信&#xff0c;这…