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

本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授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. 有自循环的需要写反馈逻辑。

下面来看一个例子

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Linux] Bash脚本多函数应该如何执行?使用eval提高脚本编写效率!

在工作过程中经常会编写一些测试脚本,有些脚本里有多个函数,要通过用户输入执行对应的函数,如这样: 这也太麻烦了吧 执行如下: 这样在函数多的情况下需要写很多判断,效率低下。 我们可以使用eval命令来进行…

MySQL之数据库及表操作

MySQL之数据库及表操作 文章目录 MySQL之数据库及表操作一、数据库的基本结构二、数据库的创建和删除三、数据表的结构定义和操作四、数据的插入五、主键和自增长属性1、什么是主键2、自增长属性 一、数据库的基本结构 数据库系统由数据库服务器为载体,拥有一个或者…

pymol使用

1.pymol使用小技巧8-选取配体周围氨基酸 select ligand,resn x[/code] PS: x为配体名字 color red, ligand[/code] select 5A, byres ligand around 5[/code] PS: 配体5埃范围内的残基 show sticks, 5A color yellow, …

区块链媒体:Web3.0时代的推广创新10爆款策略概览-华媒舍

随着Web3.0时代的到来,互联网推广正经历着一场创新的革命。在这个新的时代背景下,一系列全新的推广策略正在兴起,引领着市场的变革。本文将基于这一背景,为大家介绍Web3.0时代中的10大爆款推广策略概览。 1. 个性化推广 在Web3.0…

在 JavaScript 中导入和导出 Excel XLSX 文件:SpreadJS

在 JavaScript 中导入和导出 Excel XLSX 文件 2023 年 12 月 5 日 使用 MESCIUS 的 SpreadJS 将完整的 JavaScript 电子表格添加到您的企业应用程序中。 SpreadJS 是一个完整的企业 JavaScript 电子表格解决方案,用于创建财务报告和仪表板、预算和预测模型、科学、工…

移动app测试要不要做第三方软件测试?

移动app测试是指通过对移动应用进行全面的评估和验证,以确保其功能和性能符合设计要求,以提供给用户最好的体验。通常包括功能测试、界面测试、性能测试、兼容性测试等多个环节。由于现在越来越多的软件企业会选择将测试工作交由第三方软件测试进行&…

PHP 阿里云短信服务

目录 1、申请3个月免费短信 2、获取阿里云AccessKey ID 和 AccessKey Secret 3、php安装阿里云sdk 4、复制下面代码调用sdk替换自己key、运行该代码 1、申请3个月免费短信 2、获取阿里云AccessKey ID 和 AccessKey Secret 3、php安装阿里云sdk 开发文档短信服务_SDK中…

在linux上如何运用虚拟数据优化器VDO

本章主要介绍虚拟化数据优化器。 什么是虚拟数据优化器VDO 创建VDO设备以节约硬盘空间 16.1 了解什么是VDO VDO全称是Virtual Data Optimize(虚拟数据优化),主要是为了节省硬盘空间。 现在假设有两个文件file1和 file2,大小都是10G。file…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发,可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

HarmonyOS4.0从零开始的开发教程05 应用程序入口—UIAbility的使用

HarmonyOS(三)应用程序入口—UIAbility的使用 UIAbility概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。 每一个UIAbility实例,…

视觉资料记录

1. 江南才尽,年少无知!_RK3399移植,(02)Cartographer源码无死角解析-免费,(01)ORB-SLAM2源码无死角解析-免费-CSDN博客江南才尽,年少无知!擅长RK3399移植,(02)Cartographer源码无死角解析-免费,(01)ORB-SLAM2源码无死角解析-免费,…

jira创建用例,与任务关联

项目用的jira,但之前的用例放在禅道上,或者归档于svn,都不是很好用,所以研究了下jira的用法 1、下载插件: synapseRT - Test management and QA in JIRA 完成后在tab会多出一个test 2、常用的功能 1、建立用例&#…

node.js和浏览器之间的区别

node.js是什么 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,可以在服务器端运行JavaScript代码 Node.js 在浏览器之外运行 V8 JavaScript 引擎。 这使得 Node.js 非常高效。 浏览器如何运行js代码 nodejs运行环境 在浏览器中,大部分时间你所…

力扣题:字符的统计-12.6

力扣题-12.6 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:696. 计数二进制子串 解题思想:先统计连续的0和连续的1的个数,然后进行相加即可(想不到一点) class Solution(object):def countBinaryS…

利用管道、信号量、信号、共享内存和消息队列进行多进程通信

一.管道(分为命名管道和匿名管道) 管道的特点: ①无论是命名管道还是匿名管道,写入管道的数据都存放在内存之中。 ②管道是一种半双工的通信方式(半双工是指终端A能发信号给终端B,终端B也能发信号给终端…

keil添加了头文件仍然报找不到头文件的原因

如图,我在user分组新建Item,可是keil提示头文件不存在,所有的一切设置都是对的,但就是找不到头文件,找了很久,最后才发现是user分组和文件系统中的文件夹不一致的原因。 如图,在分组的文件系统的…

入门指南:使用Prometheus监控Linux服务器

Prometheus介绍 Prometheus是一款开源的监控系统,主要用于收集、存储和查询时间序列数据,以便于对系统进行监控和分析。以下是Prometheus的架构图介绍: Prometheus的架构由四个主要组件组成: Prometheus Server(Prom…

Win10 安装.NET Framework 3.5 报错0x80240438

环境: Win10专业版 NET Framework 3.5 问题描述: Win10 安装.NET Framework 3.5 报错0x80240438 解决方案: 1.检查自动更新服务是否未开启,开启自动更新失败,用工具开启自动更新,重启电脑(未解决&am…

JVM虚拟机:如何查看JVM初始和最终的参数?

本文重点 在前面的课程中,我们学习了如何查看当前程序所处于的xx参数,本文再介绍一种如何参看JVM的xx参数? 查看JVM的所有初始化参数 方式一:java -XX:PrintFlagsInitial 方式二:java -XX:PrintFlagsInitial -versio…

Java基础50题:14. 使用方法求最大值(2种方法)

概述 使用方法求最大值。 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值函数max3。 要求: 在max3这个方法中,调用max2函数,来实现3个数的最大值计算。 方法一 【代码】 public class P14 {public static int max…