【STA】SRAM / DDR SDRAM 接口时序约束学习记录

1. SRAM接口

  相比于DDR SDRAM,SRAM接口数据与控制信号共享同一时钟。在用户逻辑(这里记作DUA(Design Under Analysis))将数据写到SRAM中去的写周期中,数据和地址从DUA传送到SRAM中,并都在有效时钟沿处被锁存在SRAM中。在DUA从SRAM中取数据的读周期中,地址信号从DUA传送到SRAM中去,数据信号由SRAM输出给DUA。
  DUA与SRAM的接口简化如下
在这里插入图片描述
  AC特性如下,图中Data in指写入SRAM,Data out指从SRAM读出
在这里插入图片描述
对应时序约束如下:

create_clock -name PLL_CLK -period 5 [get_pins UPLL0/CLKOUT]
create_generated_clock -name SRAM_CLK -source [get_pins UPLL0/CLKOUT] -divide_by 1 [get_ports
SRAM_CLK]
set_output_delay -max 1.5 -clock SRAM_CLK [get_ports ADDR[*]]
set_output_delay -min -0.5 -clock SRAM_CLK [get_ports ADDR[*]]
set_output_delay -max 1.7 -clock SRAM_CLK [get_ports DQ[*]]
set_output_delay -min -0.8 -clock SRAM_CLK [get_ports DQ[*]]
set_input_delay -max 3.2 -clock SRAM_CLK [get_ports DQ[*]]
set_input_delay -min 1.7 -clock SRAM_CLK [get_ports DQ[*]]

2. DDR SDRAM接口

  相比SRAM,SDRAM的数据传输采用独立时钟(DQS),且采用双边沿触发的形式传输数据,数据位宽不限为1。在SDRAM的读模式期间,DQ与DQS均由SDRAM提供,DQ总线与数据选通引脚DQS双边沿对齐。在SDRAM的写模式期间,DQ与DQS均由DUA提供,DQS与DQ总线相移90度。为了降低偏斜平衡的实现复杂度,DQS与8个DQ(及一个dm_dbi_n)一组,在FPGA中能用SelectIO的一个半字节组对应。
  DUA与SDRAM的接口简化如下
在这里插入图片描述
  CAC控制引脚在DUA处的AC特性如下
在这里插入图片描述
对应时序约束如下:

create_generated_clock -name DDRCLK -source [get_pins UPLL0/CLKOUT] -divide_by 1 [get_ports
DDRCLK]
set_output_delay -max 0.75 -clock DDRCLK [get_ports CAC]
set_output_delay -min -0.75 -clock DDRCLK [get_ports CAC]

  数据引脚在DUA处的AC特性需分情况考虑,

  • 读周期

   在读周期中,存储器输出的数据与DQS是边沿对齐的,为了满足DFF时序,通常使用DLL(或其它替代方法来实现四分之一周期延迟)来延迟DQS,从而使DQS的边沿对齐于数据有效窗口的中心。
在这里插入图片描述
  在DUA进行双边沿数据读取时,使用UFF0上升沿触发的触发器在DQS_DLL的上升沿捕获数据DQ,使用UFF5下降沿触发的触发器在DQS_DLL的下降沿捕获数据DQ。
在这里插入图片描述
  对应的时序约束如下,对于下降沿的时序约束,使用-clock_fall标识

create_clock -period 5 -name DQS [get_ports DQS]
set_input_delay 0.4 -max -clock DQS [get_ports DQ]
set_input_delay -0.4 -min -clock DQS [get_ports DQ]
set_input_delay 0.35 -max -clock DQS -clock_fall [get_ports DQ]
set_input_delay -0.35 -min -clock DQS -clock_fall [get_ports DQ]
set_multicycle_path 0 -setup -to UFF0/D
set_multicycle_path 0 -setup -to UFF5/D
  • 写周期

  写周期中DQS边沿与从DUA内存储控制器输出的DQ信号相差四分之一周期,因此存储器可以直接使用DQS选通脉冲去捕获
数据。在存储器引脚处,DQS信号必须与DQ数据窗口的中心对齐。
在这里插入图片描述
  对引脚处DQS与DQ的约束取决于DUA时钟的生成方式。

  • 两倍频时钟

  该方式下,对于DQ驱动采用两倍DQS频率的CLK2X时钟驱动,对应原理图如下
在这里插入图片描述
  对应时序约束如下,DLL会对UFF1/Q进行延时,延时时长为1.5ns

create_clock -period 3 [get_ports CLK2X]
create_generated_clock -name pre_DQS -source CLK2X -divide_by 2 [get_pins UFF1/Q]
create_generated_clock -name DQS -source UFF1/Q -edges {1 2 3} -edge_shift {1.5 1.5 1.5} [get_ports DQS]

  假设DDR SDRAM的DQ和DQS引脚之间建立时间要求分别为DQ上升沿的0.25ns和下降沿的0.4ns。类似地,假设DQ引脚上升
沿和下降沿的保持时间要求分别为0.15ns和0.2ns。DQS输出上的DLL延迟已设置为四分之一周期,即1.5ns,波形如下

在这里插入图片描述
  时序约束如下,利用-rise、-fall区分上升与下降沿

set_output_delay -clock DQS -max 0.25 -rise [get_ports DQ]
set_output_delay -clock DQS -max 0.4 -fall [get_ports DQ]
set_output_delay -clock DQS -min -0.15 -rise [get_ports DQ]
set_output_delay -clock DQS -min -0.2 -fall [get_ports DQ]
  • 内部一倍频时钟

  使用POSEDGE_REG DFF与NEGEDGE_REG DFF分别在CLK1X上升沿、下降沿生成DQ数据,利用CLK1X的高低电平作为选择器的选择信号,CLK1X为高电平时,触发器NEGEDGE_REG的输出发送到DQ;而当CLK1X为低电平时,触发器POSEDGE_REG的输出发送到DQ。从而保证在时钟CLK1X的两个边沿都有新的数据输出DQ。
  每个触发器都需要有半个CLK1X周期将数据传播到多路复用器的输入端,以保证在由CLK1X边沿选择输入数据之前,已在多路复用器的输入端口上准备好了输入数据。
在这里插入图片描述
  对应波形如下:
在这里插入图片描述
  对应时序约束如下:

create_clock -name CLK1X -period 6 [get_ports CLK1X]
create_generated_clock -name DQS -source CLK1X -edges {1 2 3} -edge_shift {1.5 1.5 1.5} [get_ports DQS]
set_output_delay -max 0.25 -clock DQS [get_ports DQ]
set_output_delay -max 0.3 -clock DQS -clock_fall [get_ports DQ]
set_output_delay -min -0.2 -clock DQS [get_ports DQ]
set_output_delay -min -0.27 -clock DQS -clock_fall [get_ports DQ]

  为了减少由于DRAM和DUA处的阻抗不匹配而引起的反射,DDR接口的DQ和DQS信号在读模式和写模式下可能使用终端电阻ODT(On-Die Termination)。在使用ODT的情况下,STA将无法提供足够的精度。这时需要使用如详尽的电路级仿真的方式来验证SDRAM的接口时序。

3. DAC接口

  下图展示了一个视频DAC(数模转换)转换接口,高速时钟将数据传输到DAC的低速时钟接口,其中UDFF0采用上升沿触发,UDAC2采用下降沿触发
在这里插入图片描述
  在这种情况下,可以根据需要将从快时钟域到慢时钟域的接口指定为多周期(两周期)路径,也可以将建立时间视作单周期
(XPLL_CLK)路径。最关键的保持时间检查是在发起沿和捕获沿重合处执行的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】代码随想录算法训练营第四十四天 |完全背包,518. 零钱兑换 II , 377. 组合总和 Ⅳ (待补充)

完全背包理论基础 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和…

Docker镜像及Dockerfile详解

1 Docker镜像用途 统一应用发布的标准格式支撑一个Docker容器的运行 2 Docker镜像的创建方法 基于已有镜像创建基于本地模板创建基于Dockerfile创建 (实际环境中用的最多) 2.1 基于已有镜像的创建 将容器里面运行的程序及运行环境打包生成新的镜像 …

基于斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)的无人机三维路径规划(MATLAB)

一、无人机路径规划模型介绍 二、算法介绍 斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO),是由Abdelazim Hussien于2024年提出的一种基于群体的新型元启发式算法,它从自然界中观察到的斑翠鸟独特的狩猎行为和共生关系中汲取灵…

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结:Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备:1.Spring Bean生命周期机制(IOC)2.Spring依赖注入机制(DI)(1)Autowired注解标注属性set方法注入(2&…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 Function函数详解

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 函数概述 …

Python Pip 命令大全及其技术应用指南【第119篇—Pip 命令】

Python Pip 命令大全及其技术应用指南 Python 的包管理工具 Pip 是开发者们在构建、分享和安装 Python 包的重要工具之一。本文将深入介绍 Pip 命令的各种用法,旨在帮助开发者更好地利用 Pip 管理项目依赖、安装库和进行版本控制。 1. Pip 安装与升级 首先&#x…

202109 CSP认证 | 脉冲神经网络

3. 脉冲神经网络 好久之前第一次写的时候完全对第三题没感觉,提交上去得了个0 分… 这次自己再写了一遍,花的时间不多,写的时候感觉逻辑也不是特别难。最后是超时了,感觉第三题开始涉及到优化了,不仅仅是暴力模拟就可以…

查看pip当前关联python版本及位置

好久没用python了,把各种pip指向的环境忘光光啦,这里记录一下查看pip当前关联的python版本及位置的方法: pip -V结果: 我一般不用这个版本的python,去环境变量看了一下,原来是anaconda的Scripts自带pip&a…

VUE_自适应布局lib-flexible+postcss-pxtorem、lib-flexible + postcss-px2rem,nuxt页面自适配

lib-flexible postcss-pxtorem适配 我采用的是flexable.js和postcss-pxtorem。我一开始用的是postcss-px2rem后来发现和nuxt引入公共css的时候发生了冲突所以改用了postcss-pxtorem。 安装依赖 npm i lib-flexible -S npm install postcss-pxtorem --save 1、lib-flexible.…

Spring Boot 面试题及答案整理,最新面试题

Spring Boot中的自动配置是如何工作的? Spring Boot的自动配置是其核心特性之一,它通过以下方式工作: 1、EnableAutoConfiguration注解: 这个注解告诉Spring Boot开始查找添加了Configuration注解的类,并自动配置它们…

突破编程_前端_JS编程实例(目录导航)

1 开发目标 目录导航组件旨在提供一个滚动目录导航功能,使得用户可以方便地通过点击目录条目快速定位到对应的内容标题位置,同时也能够随着滚动条的移动动态显示当前位置在目录中的位置: 2 详细需求 2.1 标题提取与目录生成 组件需要能够自…

Java 中的 File 类常用方法介绍

Java 中的 File 类是 java.io 包的一部分,它提供了丰富的文件操作方法。File 类可以用来表示文件和目录路径名的抽象表示形式,即它可以用来获取文件或目录的属性,也可以用来创建、删除、重命名文件和目录。下面是一些常用的 File 类方法&…