当前位置: 首页 > news >正文

VHDL语言基础-时序逻辑电路-触发器

目录

触发器:

D触发器:

触发器的VHDL描述:

触发器的仿真波形如下:​编辑

时钟边沿检测的三种方法:

方法一:

方法二:

方法三:

带有Q非的D触发器:

带有Q非的D触发器的描述:

JK触发器:

JK触发器:

JK触发器的VHDL描述:

T触发器:

真值表:

T触发器:

T触发器的VHDL描述:


触发器:

触发器是指边沿触发的寄存器,常见的有D型,JK型,T型。在描述触发器前要注意时钟上升沿的描述


D触发器:

D触发器是最常用的触发器,几乎所有的逻辑电路都可以描述成D触发器与组合逻辑电路

触发器的VHDL描述:

Library ieee;

Use ieee.std_logic_1164.all;

Entity D_FF1 is

    port ( D, clk: in std_logic;

              Q: out std_logic);

End D_FF1;

Architecture behav of D_FF1 is

Begin

--方法一

process(clk)

     begin

           if ( clk’s event and clk=‘1’)

           then Q<=D;

           end if;

     end process;

End behav;

--方法二

process

       begin

             wait until (clk=‘1’) ; 

--等同于 wait until clk’event and clk=‘1’

             Q<=D;

       end process;

End behav;

方法三

process(clk)

       begin

            if  (clk=‘1’) then

                 Q<=D;         

--利用进程启动特性产生对clk的边沿检测

            end if ;

       end process;

  end behav;

触发器的仿真波形如下:

当时钟上升沿到来时,把D的值赋给Q,之后保持不变。到下一个时钟上升沿到来时,再次把D的值赋给Q。


时钟边沿检测的三种方法:

方法一:

       上升沿:clock’  event and clock=‘1’

       下降沿:clock’  event and clock=‘0’;

注意:if clock’ event and clock=‘1’语句后面不存在else分支。当clock为std_logic类型时,也可以利用 if rising_edge(clk)或If falling_edge(clk)进行时钟边沿检测。

方法二:

       利用WAIT语句启动进程,检测colck的上升沿

方法三:

使用PROCESS语句和IF语句相结合实现。当colck发生跳变的时候启动PROCESS进程,而在执行IF语句时,满足clock=‘1’时才对Q进行赋值更新,所以相当于clock发生跳变且跳变为‘1’时,将D赋给Q,实际上就是D出发器的描述。


带有Q非的D触发器:

由下图可知,与D触发器相比,该触发器多了Qbar与低电平有效的异步复位信号

带有Q非的D触发器的描述:

Architecture sig of D_FF is

      signal state: std_logic ;

Begin

      process( clock, reset)

      begin

  if (reset=‘0’) then           state<=‘0’;

          else

           if rising_edge(clock)

          then state<=D;

          end if;

      end process;

     Q<=state;

     Qbar<=not state ;           

End sig;

 

 

Architecture var of D_FF is

Begin

     process(clock, reset)

         variable state: std_logic ;

     begin

         if (reset=‘0’) then  state:=‘0’;

         elsif rising_edge(clock)

         then state:=D;

         end if;

         Q<=state;

         Qbar<=not state;

      end process;

End var;

 

当state定义为变量时,其有效范围在process内。因此,Q和Q非的赋值语句只能放在process里面。 


JK触发器:

真值表:

JK触发器:

JK触发器的VHDL描述:

Entity JK_FF is

     port ( J, K: in std_logic;

               clock,reset:in  std_logic;

               Q, Qbar : out std_logic );

End JK_FF; 

Architecture  behav of  JK_FF  is

      signal state : std_logic ;

Begin

      process( clock, reset) is

     variable jk: std_logic_vector(1 downto 0);

      begin

           jk:=J&K;

           if  (reset=‘0’) then state<=‘0’;

elsif  rising_edge(clock) then

        case jk is

        when “11”=> state<=not state;

        when “10”=> state<=‘1’;

        when “01”=> state<=‘0’;

        when others  => null;

        end case;

   end if;

end process;

      Q<=state;

      Qbar<=not state ;

end  behav;

CASE语句要完整,所以在CASE JK的时候要加when others =>null;


T触发器:

真值表:

T触发器:

T触发器的VHDL描述:

Entity T_FF is

     port ( T, clock, reset : in  std_logic ;

               Q, Qbar : out  std_logic );

End T_FF;

Architecture  behav  of   T_FF  is

Begin

      process(clock, reset)

           variable  state:  std_logic ;    

      begin

          if  (reset =‘0’)  then state:=‘0’;

          elsif  rising_edge(clock) then

               if   T=‘1’then

                     state := not state;

                end if;

            end if ;

            Q<=state;

            Qbar<= not state;

       end process;

End  behav ;

相关文章:

VHDL语言基础-时序逻辑电路-触发器

目录 触发器&#xff1a; D触发器&#xff1a; 触发器的VHDL描述&#xff1a; 触发器的仿真波形如下&#xff1a;​编辑 时钟边沿检测的三种方法&#xff1a; 方法一: 方法二&#xff1a; 方法三&#xff1a; 带有Q非的D触发器&#xff1a; 带有Q非的D触发器的描述&am…...

也许你应该学学 postman了

使用 最简单的方法就是直接在浏览器中复制 Copy as cURL &#xff0c;然后把数据导入 postman&#xff0c;然后 send &#xff0c;收工。 我们这里拿 知乎首页 举例 在对应的请求下复制 cURL 打开 postman &#xff0c; 点击左上角的 Import &#xff0c; 选择Paste Raw Tex…...

VHDL语言基础-状态机设计-ASM图法状态机设计

目录 有限状态机的描述方法&#xff1a; ASM图&#xff1a; 状态转移图&#xff1a; 状态转移列表&#xff1a; MDS图&#xff1a; ASM图法状态机设计&#xff1a; ASM图的组成&#xff1a; 状态框&#xff1a; 判断框&#xff1a; 条件框&#xff1a; 状态框与条件框…...

Python文件的属性获取,重命名,目录的创建,显示和改变

1. 文件的属性获取 os.stat()函数可以获取文件的属性&#xff0c;该函数会返回一个和系统平台有关的stat_result对象&#xff0c; 具备一组可访问的属性&#xff0c;可以通过 stat_result.attribute 这样的格式来访问各个属性的值。 字 段描 述st_modeinode 保护模式st_inoin…...

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起&#xff0c;我们总是假设这些信息在我们需要的时候可以随时访问。然而&#xff0c;事实是&#xff0c;意想不到的“不幸”发生了&#xff0c;比如 iOS 升级失败、忘记密码&#xff0c;或者更严重的情况&#xff0c;如进水或被盗。…...

Linux搭建redis集群6.x版本【超简单】

Linux搭建redis集群6.x版本【超简单】&#xff1a;&#xff1a;&#xff1a;&#xff1a;本文主要展示如何在一台服务器上搭建集群&#xff0c;核心思想就是复制实例&#xff0c;修改启动端口&#xff0c;实际上跟在几台服务器的操作都是一样的。一.安装redis wget http://dow…...

双重检查锁是如何避免缓存雪崩的,代码例子说明

双重检查锁是如何避免缓存雪崩的什么是缓存雪崩解决方案双重检查锁是如何工作的什么是缓存雪崩 缓存雪崩是指缓存同时失效&#xff0c;造成大量的缓存请求都请求到后端数据库&#xff0c;导致后端系统压力过大而瘫痪的情况。 解决方案 设置缓存的失效时间为随机值&#xff0…...

【成为架构师课程系列】架构设计中的核心思维方法

架构设计中的核心思维方法 目录 前言 #一、抽象思维 #二、分层思维 #三、分治思维 #四、演化思维 #五、如何培养架构设计思维...

Apollo/Nacos配置动态刷新原理及优劣

一. 配置方式 这里只说与Spring集成后的配置方式&#xff0c;这也是项目中主要使用的方式 Apollo 在属性上直接加value注解&#xff0c;这个属性就会随着配置的更改动态更新类实现ConfigChangeListener&#xff0c;在类中方法上ApolloConfigChangeListener注解&#xff0c;注解…...

docker的基本管理

Docker的概念云计算三层架构服务说明应用IAAS基础设施及服务硬件&#xff08;服务器、网络设置、防火墙等&#xff09;虚拟化网络虚拟化&#xff08;大二层&#xff09;例&#xff1a;openstackPAAS平台及服务环境例&#xff1a;数据库、 docker 、kubernetesSAAS应用及服务应用…...

2023年房地产投资-租金和IRR研究报告

第一章 概况 房地产投资租赁是指置业投资者在购买到物业后&#xff0c;首先对该物业进行适当整饰与装修&#xff0c;之后以出租人的身份&#xff0c;以口头协议或签订合同的形式&#xff0c;将房屋交付承租人占有、使用与收益&#xff0c;由承租人向出租人交付租金的行为。通过…...

2023-2-10刷题情况

青蛙过河 题目描述 小青蛙住在一条河边, 它想到河对岸的学校去学习。小青蛙打算经过河里 的石头跳到对岸。 河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上。 不过, 每块石头有一个高度, 每次小青蛙从一块石头起跳, 这块石头的高度就 会下降 1 , 当石头…...

Python学习-----无序序列2.0(集合的创建、添加、删除以及运算)

目录 前言&#xff1a; 什么是集合 集合的三大特性 1.集合的创建 &#xff08;1&#xff09;直接创建 &#xff08;2&#xff09;强制转换 2.集合的添加 &#xff08;1&#xff09;add&#xff08;&#xff09;函数 &#xff08;2&#xff09;update() 函数 3.集合元…...

2023最详细的接口测试用例设计教程

一、接口测试流程 1、需求讨论 2、需求评审 3、场景设计 4、数据准备 5、测试执行 二、分析接口文档元素 1、接口名称 2、接口地址 3、支持格式 4、请求方式 5、请求参数&#xff08;参数名称、类型、是否必填、参数说明等&#xff09; 6、返回参数&#xff08;返回…...

【数据库】 数据库的理论基础详解

目录 一&#xff0c; 什么是数据库 二&#xff0c; 数据库管理系统(DBMS) 三&#xff0c;数据库与文件系统的区别 1&#xff0c;对比区别&#xff1a; 2&#xff0c;优缺点总结&#xff1a; 四&#xff0c;数据库的发展史 五&#xff0c;常见数据库 1&#xff0c; 关系型…...

Linux环境运行Maven 生成的hadoop jar包

运行命令&#xff1a; hadoop jar ./jar包名字 class对象路径 输入路径 输出路径 linux内部jar包测试 cd 到以下目录&#xff0c;创建以下文件夹 [rootreagan180 ~]# cd /opt/soft/hadoop313/share/hadoop/mapreduce/ 创建文件夹&#xff08;读取路径&#xff09; [roo…...

ThreadPoolExecutor原理解析

1. 工作原理1.1 流程图1.2 执行示意图从上图得知如果当前运行的线程数小于corePoolSize(核心线程数)&#xff0c;则会创建新线程作为核心线程来执行任务(注意&#xff0c;执行这一步需要获取全局锁)。如果运行的线程等于或多于corePoolSize&#xff0c;则将任务加入BlockingQue…...

谷粒学苑第二章前端框架-2.2前端框架开发过程

一、前端框架开发过程 第一步&#xff1a;添加路由 src/router模块用来管理路由。 第二步&#xff1a;点击某个路由&#xff0c;显示路由对应页面内容 component: () > import(/views/table/index), 表示路由对应的页面&#xff0c;是views/table/index.vue页面 第三步&a…...

权限管理实现的两种方式(详解)

登录的接口请求的三个内容&#xff1a;1. token2. 用户信息、角色信息3. 菜单信息第一种&#xff1a;基于角色Role的动态路由管理 (不推荐&#xff0c;但市场用的比较多)首先列出枚举每个角色对应几个路由&#xff0c;然后根据用户登录的角色遍历枚举出来的角色动态注册对应的路…...

【C++】智能指针思路解析和模拟实现

此篇文章就从以下几个方面出发&#xff0c;带你了解智能指针的方方面面1.为什么需要智能指针当我们开辟内存并使用的时候&#xff0c;我们的顺序应该是这样&#xff1a;开辟内存-》使用内存-》释放内存问题就出现在第三步&#xff0c;开辟好了&#xff0c;也使用了&#xff0c;…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...