易灵思FPGA-钛金的Hyperram Controller设置使用

这篇具有很好参考价值的文章主要介绍了易灵思FPGA-钛金的Hyperram Controller设置使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



一、Hyperam没简介

就是一个多路高速大号掉电易失Spi Flash,主要特点就是一个小封装和低功耗,具体的芯片的接口协议没研究,基本上每家FPGA或者MCU公司建议用hyperram的,都会有对应的控制器 ,直接搞控制器就行。

hyperram,易灵思,fpga开发

二、硬件设计

原理图设计没啥说的 ,正常链接管脚就行,400M的线速度 ,做好等长就行;
hyperram,易灵思,fpga开发
这是HyperRAM的上电和掉电过程
hyperram,易灵思,fpga开发
hyperram,易灵思,fpga开发

三.Interface Designer 设计

hyperram,易灵思,fpga开发

对于Ti60F100 来说 ,IC里面集成了hyperam 所以在interface design里面直接例化就行 ;
hyperram,易灵思,fpga开发

对于其他芯片来说 ,参考对应Ti60F225的实例工程,直接copy 对应的 IO管脚 ,interface 里面导出导入;input output inout 只需要根据自己实际硬件设计,关联好对应的pad就行;

hyperram,易灵思,fpga开发

四、代码定义

如果你用了AXI3接口 ,建议将这些参数提到顶层,方便实际用起来修改

//Hyeperram  Signal
#(
`ifndef EFX_IPM
    parameter                   AXI_DBW = 128,		//	AXI位宽 根据你的需求来
    parameter                   AXI_SBW = AXI_DBW/8,
`endif
    parameter                   AWR_LEN = 63,
    parameter                   TOP_DBW = 16		//	实际hyperram的位宽
)
	input  wire                 clk,				// PLL 输出给到逻辑 一般100M就行
    input  wire                 hbramClk,			//	PLL-OUT到逻辑  和控制器的参数设置给的一样即可  一般选择200M  250M不推荐
    input  wire                 hbramClk_cal,		//	和hbramClk 90度相位差
    input  wire                 hbramClk_pll_locked,//  PLL稳定信号后,IP再工作不迟
    output wire                 hbramClk_pll_rstn,	//  复位低有效

// =============== PLL Phase Settings ======================
    output wire [2:0]           hbc_cal_SHIFT,		//  动态校准PLL的,流程可参考笔者其他工程
    output wire [4:0]           hbc_cal_SHIFT_SEL,	//  动态校准PLL的,流程可参考笔者其他工程
    output wire                 hbc_cal_SHIFT_ENA,	//  动态校准PLL的,流程可参考笔者其他工程
// =============== HBRAM Related Signals ===================
    output wire                 hbc_rst_n,	//下面就是Hyperram的接口
    output wire                 hbc_cs_n,
    output wire                 hbc_ck_p_HI,
    output wire                 hbc_ck_p_LO,
    output wire                 hbc_ck_n_HI,
    output wire                 hbc_ck_n_LO,
    output wire [TOP_DBW/8-1:0] hbc_rwds_OUT_HI,
    output wire [TOP_DBW/8-1:0] hbc_rwds_OUT_LO,
    input  wire [TOP_DBW/8-1:0] hbc_rwds_IN_HI,
    input  wire [TOP_DBW/8-1:0] hbc_rwds_IN_LO,
    input  wire [TOP_DBW-1:0]   hbc_dq_IN_LO,
    input  wire [TOP_DBW-1:0]   hbc_dq_IN_HI,
    output wire [TOP_DBW/8-1:0] hbc_rwds_OE,
    output wire [TOP_DBW-1:0]   hbc_dq_OUT_HI,
    output wire [TOP_DBW-1:0]   hbc_dq_OUT_LO,
    output wire [TOP_DBW-1:0]   hbc_dq_OE,

如图所示 ,笔者通常将控制器的IP 直接加到工程中 ,修改红色框中的参数,比如频率,突发个数,突发模式等 ,方便各个平台移植 ,不用考虑软件兼容问题;
hyperram,易灵思,fpga开发

下图是控制器例化的文件,在IP 管理器里面生成 Hyperram Controller ,对应的IP文件夹底下直接copy;

逻辑端和Controller 的连接方式有两种 ,常见的Native 接口 和 AXI3接口 ;我们推荐Native ,主打的就是一个简单好上手。

红色是时钟 IP核的时钟一般给200M 和200M@90度 ;
绿色是逻辑和 通过和interface designer锁定,与实际物理上HyperRAM互相连接的管脚
黄色部分是用户逻辑和控制器相连接的Native 地址和数据接口;
hyperram,易灵思,fpga开发

官方的hyperram读写 实际回环测验控制器的数据流 是AXI3接口的,笔者觉得麻烦没怎么用;
下面是自己根据用户端接口,自己做了个读写的回环测验:

Native 的 读时序:

hyperram,易灵思,fpga开发

hyperram,易灵思,fpga开发

Native 的 写时序:

hyperram,易灵思,fpga开发

hyperram,易灵思,fpga开发


其他

  1. 首先要找FAE要 HyperRAM Controller CoreUser Guide 。 基本上所有的IO说明,设计注意事项里面都有提;

  2. Native模式下 ,读写FIFO的深度设置 ,根据公式:
    Write FIFO Depth Size = ((DQ Width * 2)/ Data width) * native_ram_burst_len

  3. 如上图所示,笔者给的数据就是32bit的,F225和F100的hyperram接口是16bit的,所以我一次突发写FIFO的个数最少是256 ,所以深度我就是256个;
    hyperram,易灵思,fpga开发

  4. 按照32bit ,256个突发 ,这一次我给的地址是000000h ,下一次写的地址 我就给 002000h;

  5. native 模式下的HyperRAM只能采用linear模式,必须要把
    native_ram_address[31] 这一根地址线一直拉高;

  6. 官方的例程里面 PLL会正式工作前,会有一个自动校准的调相功能,直接copy就行了;
    hyperram,易灵思,fpga开发

  7. 手册里面没有AXI3的时序;

  8. 有需要我补充的不吝赐教,我再补充更新。文章来源地址https://www.toymoban.com/news/detail-808044.html

到了这里,关于易灵思FPGA-钛金的Hyperram Controller设置使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高云FPGA使用过程中端口复用设置

    高云FPGA使用过程中端口复用设置 使用芯片:GW2AR-18C; 编译环境:高云Version:1.9.8; 在移植FPGA程序过程中,由于使用了SSPI专用管脚,所以在把专用管脚当做普通IO的时候,就会报错,说当前管脚不支持; 在之前使用Quartus的Cyclone芯片的时候,里面有一个管脚复用的设置,那

    2024年02月07日
    浏览(33)
  • 【Unity ShaderGraph】| 快速制作一个 钛金化不锈钢效果

    前言 本文将使用ShaderGraph制作一个 钛金化不锈钢 效果,可以直接拿到项目中使用。 对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例 下面就开始看一下具体的制作流程,然后自己动手制作一个吧!

    2024年02月08日
    浏览(40)
  • I.MX RT1170之FlexSPI(4):HyperRAM手册分析和参数配置详解

    在上一篇文章中我分析了NOR Flash的手册和FlexSPI的相关配置,在这篇文章中,我将以HyperRAM为例,看看八线的HyperRAM在硬件设计和软件配置上有增加什么引脚和参数,然后以ISIS型号为 IS66WVH64M8DALL/BLL 的HyperRAM为例,看看如何根据手册来配置FlexSPI的参数。 以下是官方EVKBoard中的八

    2024年02月13日
    浏览(41)
  • Loadrunner之使用Controller负载测试

    进入controller中,导入做好的脚本,开始设置场景(条件)。 添加虚拟用户数量:如设置50个VUser(50个虚拟用户),每隔几秒增加几个虚拟用户。 设置退出条件:完成一个退出一个,还是全部完成后一起退出 运行时间:完成后直接退出,还是持续运行多少分钟(如果设置5分

    2023年04月20日
    浏览(44)
  • SpringBoot使用MockMVC单元测试Controller

    对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以 通过引入Mock

    2024年01月18日
    浏览(39)
  • SpringBoot 增强Controller方法,@ControllerAdvice注解的使用

    参考资料 @ControllerAdvice 用法 SpringBoot使用@ControllerAdvice注解 @ControllerAdvice ,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller进行增强处理。 配合 @ExceptionHandler 注解,进行全局异常处理。 配合 @InitBinder 注解,用来设置 WebDataBinder ,用于自动绑定前台请求参数到

    2024年02月08日
    浏览(32)
  • ESP32-USB Serial/JTAG Controller使用

    ESP32-c3内部带有1个USB Serial/JTAG控制器,可用于下载flash程序、JTAG调试、虚拟串口通信等功能。硬件框图如下: 其主要特性如下: 支持usb全速设备(12Mbps),不支持高速(480Mbps) 固定为CDC-ACM设备(Communication Device Class - Abstract Control Model) 64byte硬件缓冲区 大多数操作系统即插即用

    2024年02月09日
    浏览(25)
  • ARM DMA Controller PL330 使用经验分享

    DMAC提供一个AXI主接口来执行DMA传输,并提供两个APB从接口来控制其操作。DMAC采用TrustZone技术,其中一个APB接口运行在secure状态,另一个运行在非secure状态。 secure策略是ARM的TrustZone技术一部分。 整个DMA操作受一个小的指令集控制,这是与传统链表BD模式的不同之处。 由图中可

    2024年02月05日
    浏览(24)
  • 【Loadrunner】学习loadrunner——Controller与Analysis的使用(三)

    【Loadrunner】学习loadrunner——性能测试基础篇(一) 【Loadrunner】学习loadrunner——性能测试基础篇VUG的使用(二) 了解了脚本是如何写的之后,我们继续学习loadrunner的另外两个组件的使用。 1)在VUG中对写好的脚本创建场景 2)手动打开controller进行脚本的添加并创建场景 进入

    2024年02月06日
    浏览(27)
  • Java | 使用切面AOP拦截并修改Controller接口请求参数

    关注common wx: CodingTechWork   在开发过程中,会有一些需求将controller层的一些方法入参进行全量转换,最容易想到的可能是在调用下层service方法时,调用公共的方法进行入参转换,这时带来的唯一问题就是代码不雅观,比较冗余。那还有什么方法可以更优雅的解决这个问题

    2024年01月24日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包