超大规模集成电路设计----FPGA时序模型及FSM的设计(八)

news2024/11/24 12:57:06

本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT

超大规模集成电路设计----RTL级设计之FSM(八)

  • 7.1 CPLD的时序模型
    • 7.1.1 XPLA3 时序模型
    • 7.1.2 具体时序组成(重点)
      • 1. Pad to Pad(tPD)
      • 2. Clock Pad to Output Pad (tCO)
      • 3. Clock to Setup (tCYC)
      • 4. Clock to Pad
      • 5. Path Ending at Clock Pin of Flip-Flop
      • 6. Pad to Setup
      • 7.Setup to Clock at Pad (tSU or tSUF)
      • 8. fSYS
      • 9. 总结
  • 7.2 使用FSM设计存储控制器
    • 单个写、阵发读的存储器控制原理
    • 状态机的泡泡图
  • 补充:如何寻找状态转移图中能够使用移位寄存器制作的部分

为什么要学习这一章:详细讲述了FPGA的时序模型及FSM的设计。标黄部分属于必须掌握的部分,黑体部分表示强调部分,有助于理解,对于普通字体部分,时间紧急的浏览者可以选择忽略,对于初学者,建议博文每部分都需要连贯阅读。

7.1 CPLD的时序模型

7.1.1 XPLA3 时序模型

在这里插入图片描述

  • T L O G I 1 \color{red}{\mathrm{T}_{\mathrm{LOGI1}}} TLOGI1是简单逻辑的延时
  • T L O G I 2 \color{red}{\mathrm{T}_{\mathrm{LOGI}2}} TLOGI2是复杂逻辑的延时
  • T L O G I 3 \color{red}{\mathrm{T}_{\mathrm{LOGI3}}} TLOGI3是反馈逻辑的延时
  • T F I N \color{red}T_{\mathrm{FIN}} TFIN是快速输入的逻辑延时
  • T I N , T O U T \color{red}{\mathrm{T}_{\mathrm{IN}},\mathrm{T}_{\mathrm{OUT}}} TIN,TOUT是输入输出路径的延时
  • T F \color{red}{\mathrm{T}_{\mathrm{F}}} TF是输出反馈路径的延时
  • T P T C K \color{red}{\mathrm{T}_{\mathrm{PTCK}}} TPTCK乘积项时间
  • T G C K \color{red}{\mathrm{T}_{\mathrm{GCK}}} TGCK是全局时钟

7.1.2 具体时序组成(重点)

1. Pad to Pad(tPD)

从输入焊盘(Input Pads)开始,到输出焊盘(Output Pads)结束所经路径的时间。路径不通过寄存器。
在这里插入图片描述
如图所示, tPD \text{tPD} tPD延时按该公式 tPD=tIN+tLOGI2(tLOGI1)+tOUT \text{tPD=tIN+tLOGI2(tLOGI1)+tOUT} tPD=tIN+tLOGI2(tLOGI1)+tOUT 计算

2. Clock Pad to Output Pad (tCO)

时钟在时钟输入的焊盘跳变开始,到寄存器数据输出到该单元的输出焊盘结束所花的时间,路径不通过寄存器。

在这里插入图片描述
tCO=tGCK + tCOI + tF + tLOGI2 (or tLOGI1) + tOUT \text{tCO=tGCK + tCOI + tF + tLOGI2 (or tLOGI1) + tOUT} tCO=tGCK + tCOI + tF + tLOGI2 (or tLOGI1) + tOUT

3. Clock to Setup (tCYC)

寄存器到寄存器的周期时间。包括源寄存器 tCO 和目标寄存器 tSU。假设所有寄存器都对上升沿敏感。
在这里插入图片描述
tCYC=tCOI+tF+tLOGI2+tSUI \text{tCYC=tCOI+tF+tLOGI2+tSUI} tCYC=tCOI+tF+tLOGI2+tSUI

4. Clock to Pad

从寄存器的时钟引脚(Clock Pin)开始,到输出焊盘(Output Pad)结束。
在这里插入图片描述

Clock to Pad =tCOI+tF+tLOGI2+tSUI. \text{Clock to Pad =tCOI+tF+tLOGI2+tSUI.} Clock to Pad =tCOI+tF+tLOGI2+tSUI.
Clock Pad to Output Pad (tCO) = Clock to Pad+tGCK \text{Clock Pad to Output Pad (tCO) = Clock to Pad+tGCK} Clock Pad to Output Pad (tCO) = Clock to Pad+tGCK

5. Path Ending at Clock Pin of Flip-Flop

从触发器的时钟的输入焊盘开始到触发器时钟Pin输入结束的路径。路径不通过寄存器。
这个时间就是 tGCK \text{tGCK} tGCK

6. Pad to Setup

从焊盘开始到寄存器D/T输入结束的路径(包括接收触发器的tSUI)。路径不通过寄存器。
Pad to Setup=tIN+tLOGI2+tSUI \text{Pad to Setup=tIN+tLOGI2+tSUI} Pad to Setup=tIN+tLOGI2+tSUI

7.Setup to Clock at Pad (tSU or tSUF)

Setup to Clock at Pad (tSU or tSUF)=Pad to Setup - tGCK \text{Setup to Clock at Pad (tSU or tSUF)=Pad to Setup - tGCK} Setup to Clock at Pad (tSU or tSUF)=Pad to Setup - tGCK

8. fSYS

最大时钟工作频率
寄存器到寄存器路径从触发器时钟输入开始,通过触发器 Q 输出和任意数量的组合逻辑电平传播,并在接收触发器 D/T 输入(包括接收触发器的 tSUI)结束。

9. 总结

  • tPD = tIN + tLogiC + tOUT
  • tCO = tGCK + tCOI + tF + tLogic + tOUT
  • tCYC = tCOI + tF + tLogic + tSUI
  • Clock to Pad = tCOI + tF + tLogic + tOUT
  • Path Ending at Clock Pin of Flip-Flop = tGCK
  • Pad to Setup = tIN + tLogic + tSUI
  • Setup to Clock at Pad = Pad to Setup - tGCK
  • tSYS = 最大工作频率

tSU和tSUI的区别在于前一个是D Pad的建立时间,后一个是D pin的建立时间
tCO和tCOI的区别在于前一个是Clock Pad到寄存器输出的时间,后一个是Clock Pin 到寄存器输出的时间。

7.2 使用FSM设计存储控制器

单个写、阵发读的存储器控制原理

在这里插入图片描述

状态机的泡泡图

在这里插入图片描述

在上面的FSM中,最复杂的是IDLE电路,如下图所示。
在这里插入图片描述
上面的转移图中,能画成移位寄存器的部分如下。

在这里插入图片描述

补充:如何寻找状态转移图中能够使用移位寄存器制作的部分

  1. 找到除自循环只有一个输入的所有状态。
  2. 把第一个只有一个输出的状态作为第一个寄存器的输入。
  3. 有自循环的需要写反馈逻辑。

下面来看一个例子

在这里插入图片描述
认为其可使用移位寄存器的部分如下红线所示。
在这里插入图片描述
画出移位寄存器电路如下。

在这里插入图片描述

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

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

相关文章

算法___

文章目录 算法两数之和 算法 两数之和 题目如下图: 我的答案如下图: 我采用的是最笨的思路,直接暴力的两次循环,第一次外循环是取数组的第一个元素,然后内循环会遍历数组后面除第一个的所有元素,然后和…

煤矿电力监控系统

煤矿电力监控系统是一种用于煤矿电力系统的监控解决方案。该系统在重点煤矿的矿井变电站、主运输、主通风、主排水、主副提升等重要设备上加装智能用电融合终端,实时监测煤矿重要设备的电流、电压、负载等主要数据变化。为管理人员提供实时监测、报表管理、告警中心…

初始类与对象

初始类与对象 实验介绍 本课程是进一步对类与对象的深入认识,如何定义并实例化一个类,介绍如何使用 C 标准库 string 类等。 知识点 认识类与对象内联函数string 类类的定义与实例化 认识类与对象 官方定义 类:在面向对象编程中是一种…

小白学习java理解栈手写栈——第四关(青铜挑战)

内容1.理解栈的基本特征2.理解如何使用数组来构造栈3.理解如何使用链表来构造栈 1.栈的基础知识 1.1栈的特征 栈和队列是比较特殊的线性表,又称为访问受限的线性表。栈是很多表达式、符号等运算的基础,也是递归的底层实现,理论上递归能做的…

vim常见操作

vim常见操作 文章目录 vim常见操作1. 回退/前进2. 搜索3. 删除4. 定位到50行5. 显示行号6. 复制粘贴7. 剪贴8. 替换9. vim打开文件的时候出现 1. 回退/前进 1.esc进入命令模式 2.ctrlr 前进 u 回退2. 搜索 1) esc进入命令模式 2) /text  查找text&am…

JavaScript如何实现按键音效、视频播放,标签分类切换横向滚动

1.使用HTML5的audio标签 &#xff08;音频播放&#xff09; <audio id"click-sound"><source src"audio/show.mp3" type"audio/mpeg"> </audio> <button id"button">按钮</button> var clickSound d…

Linux_vi/vim编辑器

3.VI 与 VIM 3.1概述 vi编辑器&#xff1a;是Linux和Unix上最基本的文本编辑器&#xff0c;工作在字符模式下。由于不需要图形界面&#xff0c;vi是效率很高的文本编辑器。 vim是&#xff1a;vi的增强版&#xff0c;比vi更容易使用。vi的命令几乎全部都可以在vim上使用。 3…

QT----自定义信号和槽

第二天 2.1自定义信号和槽 新建一个Qtclass 自定义信号&#xff1a;返回值是void &#xff0c;只需要声明&#xff0c;不需要实现&#xff0c;可以有参数&#xff0c;可以重载 自定义槽&#xff1a;返回值void &#xff0c;需要声明&#xff0c;也需要实现&#xff0c;可以有…

华为OD机试 - 攀登者1(Java JS Python C)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5…

JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)(附上代码详细讲解)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JDBC常见的几种连接池使用&#xff08;C3P0、Druid、HikariCP 、DBCP&#xff09;以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学…

SpringSecurity6 | 修改默认用户

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容:SpringSecurity6 | 修改默认用户 📚个人知识库 :知识库,欢迎大家访问 学习参考…

C++ STL容器与常用库函数

STL是提高C编写效率的一个利器 STL容器&#xff1a; 一、#include <vector> 英文翻译&#xff1a;vector &#xff1a;向量 vector是变长数组(动态变化)&#xff0c;支持随机访问&#xff0c;不支持在任意位置O(1)插入。为了保证效率&#xff0c;元素的增删一般应该在末尾…

机器学习 sklearn 中的超参数搜索方法

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

软著项目推荐 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

探索SpringBoot发展历程

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

《消息队列MyMQ》——参考RabbitMQ实现

目录 一、什么是消息队列&#xff1f; 二、需求分析 1&#xff09;核心概念 2&#xff09;核心API 3&#xff09;交换机类型 4&#xff09;持久化 5&#xff09;网络通信 ​编辑 6&#xff09;消息应答 三、 模块划分 四、创建核心类 1.ExChange 2.MSGQueue 3.Bind…

系列学习前端之第 4 章:一文精通 JavaScript

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 6666 1、JavaScript 格式 一般放在 html 的 <head> 标签中。type&#xff1a;默认值text/javascript可以不写&#xff0c;不写也是这个值。 <script typ…

C++新经典模板与泛型编程:用成员函数重载实现std::is_class

用成员函数重载实现is_class std::is_class功能&#xff0c;是一个C11标准中用于判断某个类型是否为一个类类型&#xff08;但不是联合类型&#xff09;的类模板。当时在讲解的时候并没有涉及std::is_class的实现代码&#xff0c;在这里实现一下。简单地书写一个IsClass类模板…

【微服务】springboot整合quartz使用详解

目录 一、前言 二、quartz介绍 2.1 quartz概述 2.2 quartz优缺点 2.3 quartz核心概念 2.3.1 Scheduler 2.3.2 Trigger 2.3.3 Job 2.3.4 JobDetail 2.4 Quartz作业存储类型 2.5 适用场景 三、Cron表达式 3.1 Cron表达式语法 3.2 Cron表达式各元素说明 3.3 Cron表达…

从文字到使用,一文读懂Kafka服务使用

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…