1、前言

新项目中打算对现有的TMS320C6455+Kintex7 FPGA平台进行升级,采用TMS320C6657作为新核心,主要考虑到几点点:

1)具备DDR3接口,可以更加方便的移植图像处理算法,不再受片上L2空间大小的限制;

2)双核DSP,可实现更多的功能;

3)与C6455相比为新一代工艺,能耗比更高。

本文主要包含了硬件设计过程中的几个tips。

2、tips 1 : Flash

EMIF16是C6657的外部存储器控制接口,可以实现与多种异步存储器如ASRAM,NOR FLASH和NAND FLASH存储器的无缝连接,它只有异步传输模式。C6657的EMIF16接口数据位宽为16bit,地址位宽为24bit,片选CE0~CE4。

1)若选择NAND Flash作为程序存储器,由于8/16bit的IO口可复用为数据/地址/命令的传输通道,不仅能减少PIN的数量,而且在不同容量的器件之间可以保证接口的兼容,对存储容量进行升级时无需更改设计。8bit和16bit的连接方式如下:

NAND Flash的型号常于Micron公司生产的 SLC NAND Flash Devices中选择,但不建议再使用50-series (50nm)系列器件,而应该从60-series (34nm)系列器件中选择需要的容量,在工艺、ECC功能、支持的命令、性能等表现方面,60系列均比50系列有所提升。若参考EVM板进行原理图设计,则注意对其板载NAND FLASH的型号更新如下:

2) Nor Flash

采用Nor Flash时,需要注意EMIFA信号与NorFlash地址信号的连接顺序,8bit/16bit模式各不相同,对于16bit模式,EMIFA23应该连接到NorFlash的A0;而对于8bit模式,EMIFA[23:22] 连接到Nor Flash的A[1:0],如下图所示。数据线是否有顺序要求,参考所采用的Flash Datasheet。

3、tips 2:boot configuration

C6657的boot配置由GPIO[15:0]来控制,常规的做法是设置Pull Up/Pull Down电阻构成配置矩阵,通过选择性焊接的方式来设置启动方式。缺点是需要占用一定的PCB面积。

本次设计的板卡中包含一片Artix 7系列FPGA,用户IO 250个,将DSP的GPIO[15:0]连接到FPGA的未用IO上,由FPGA来控制DSP的启动模式。这种方式有两个要点:

1)FPGA的BANK必须为1.8V,否则需要添加电平转换芯片;

2)DSP的POR在deassert时,一定要保证FPGA已经加载完毕且给出正确的GPIO配置值,否则DSP无法正常启动。这里可以通过“与门”芯片级联成整板的复位链实现,即级联关系:

PWR GOOD ---> FPGA boot complete ---> FPGA working --->DSP POR deassert;

或者由FPGA统一控制整板芯片的复位时序关系。

4、tips 3:时钟电路

C6657支持的时钟输入频率范围以及类型如下:

1)C6657内置了并联终端电阻100Ω,因此必须采用AC耦合的方式。

2)对于未采用的时钟输入引脚的处理方式:连接到合适的电源轨道以保证稳定的电压。官方推荐增加1k的下拉电阻以降低功耗,如下图:

可以连接的电源如下:

3)AC耦合电容尽可能靠近DSP端放置;

4)要求POR拉高之前,时钟有效;但是在CVDD有效之前,时钟端必须为高阻态。

5、tips 4:启动配置和初始化

GPIO[0:15]的用来配置系统的启动方式,一般采用上拉/下拉电阻或者FPGA对其进行设置,根据器件内部默认上下拉的配置不同,外部的电阻容量也是不同的:若外部拉电平与内部默认拉电平相同,则采用4.7k电阻;否则,采用1k电阻;根据器件手册,只有GPIO[0]是内部上拉,GPIO[1:15]都是内部下拉的,因此,对于GPIO[0]而言,外部上拉时采用4.7k,下拉采用1k;而对于GPIO[1:15]而言,外部上拉需要1k电阻,下拉需要4.7k电阻。

启动模式和其它器件配置在RESETFULL引脚的上升沿被锁存。当这些引脚的电平值被锁存到配置寄存器后,这些引脚即可用作用户IO。

6、tips 5:复位顺序

1)POR:

  • 上电过程中以及时钟有效之前必须持续为低,此时,几乎所有的输出都为Hi-Z状态。
  • RESET先于POR释放;
  • POR内部电路无法检测电源系统的有效性,因此在释放POR之前,一定要保证电源正常。
  • 一般采用电压监视电路,检测到DSP电源失效后,拉低POR,以免过流烧毁器件。

2)ResetFull

用于复位内部的配置寄存器到默认值,功能与POR类似。要求ResetFull滞后于POR/RESET释放。而当POR被拉低时,要求RESERFULL同时被拉低。

3)Reset

Reset并不会锁存boot配置以及其它配置,也不会复位内部已经锁存的相关数据。

7、tips 6:关于SmartReflex

对于C6657这一类KeyStone器件而言,CVDD是可调的,CVDD的实际电压值可在一定范围内变化,并且每个器件都是不同的,因此对于CVDD的供电,必须使用SmartReflex-compliant电路。初始时被设定为1.1V,然后被SmartRefex电路调整到器件所需的值。

每个器件由制造商进行的生产测试确定了一套编码用于标识理想电压值:

测试结束后,器件可接受的最低电压对应的编码被永久性的写入到器件中,这个6bit的编码,称作VID(Voltage Identification)值,代表着该器件的最优化电压。

每个器件的VCNTL[3:0]引脚用于传输6bit编码至SmartReflex电路中,这组引脚为OD输出,需要接4.7k上拉电阻至DVDD1V8。注意:this transition will occur only a single time after a power-up reset has occurred.关于其详细描述如下:

The falling edge of VIDS latches in the data from VIDC, VIDB, and VIDA as the lower three LSB of the IDAC value. After a minimum hold time, the rising edge of VIDS latches in the data from VIDC, VIDB, and VIDA as the upper three LSB of the IDAC value . Four pins are used to communicate with the LM10010. VIDC, VIDB, and VIDA are data lines, while VIDS is a latching strobe that programs in the LM10010 data. As shown in the Timing Diagram in Figure 2, the falling edge of VIDS latches in the data from VIDC, VIDB, and VIDA as the lower three LSB of the IDAC value. After a minimum hold time, the rising edge of VIDS latches in the data from VIDC, VIDB, and VIDA as the upper three LSB of the IDAC value. Internally, a delay on VIDS allows for the setting of all VID lines simultaneously.The VID data word is set so that the lowest output current is seen at the highest VID data word (59.2 µA at a code of 0d). Conversely, the lowest current is seen at the highest VID data word (0 µA at 63d). During VID operation with the regulator, this will translate to the lowest output voltage with the lowest VID word, and the highest output voltage with the highest VID word. The communications pins can be used with a low voltage microcontroller, with a maximum VIL of 0.4V and a minimum VIH of 1.1V. Upon startup, the IDAC is set at a code of 46d, which translates to approximately 16 µA. This default startupvalue is trimmed at final test.

总结:具备了电源、时钟、正确的复位顺序以及FLASH之后,C6657就具备了正常工作的环境,可连接仿真器进行调试。其它外设根据系统的需求进行增加即可。在图像处理系统中,一般还需要添加一组DDR3作为图像缓存,并打开SRIO接口作为图像的输入与输出端口。到此,基本完成了以DSP为运算核心的板卡设计。

TMS320C6657双核DSP的图像处理系统开发(1):硬件相关tips的更多相关文章

  1. DSP+ARM多核异构开发环境SYSLINK搭建OMAPL138

    DSP+ARM多核异构开发环境搭建OMAPL138 注意: 环境为Ubuntu 12.04 只能是这个环境.我甚至在Ubuntu16.04上面安装了VMware,然后,在装了一个Ubuntu 12.0 ...

  2. 《Android系统开发》笔记

    <Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包含安全性.内 ...

  3. 关于java' web杂谈(其实是课后作业1)1 网站系统开发需要掌握的技术

    1 网站系统开发需要掌握的技术:(借鉴度娘)https://zhidao.baidu.com/question/1701850648247880220.html 需要掌握的有:Java(JavaEE) ...

  4. 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程

    平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统  / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...

  5. 移动电商时代、微分销商城O2O生活圈系统开发功能分析

    O2O生活圈系统的功能管理简单易用,随时随地发布新商品然后进行分类.管理,老少皆宜童叟无欺,实现多供应商多店铺经营模式的多层分润分销平台,满足企业自营商品与第三方供应商商品共存,打造京东+拍拍微店模式 ...

  6. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  7. 微信小程序购物商城系统开发系列-目录结构

    上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...

  8. MIS系统开发利器,实施、维护人员自定义报表的福音,AgileEAS.NET SOA平台动态报表指南

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  9. MIS系统开发利器,快速的字典录入解决方案,另类的、可管理的.NET DataWindow

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

随机推荐

  1. bzoj3495

    题解: 对于每一条边的两段都有,很简单 然后处理国家 容易发现前缀和为1 代码: #include<cstdio> #include<algorithm> using name ...

  2. ClassPathXmlApplicationContext类

    org.springframework.context.support Class ClassPathXmlApplicationContext java.lang.Objectorg.springf ...

  3. Redis数据结构:链表

    链表被广泛用于Redis的各种功能,比如列表键.发布与订阅.慢查询.监视器等. 每个链表节点由一个listNode结构表示,每个节点都有前置节点和后置节点. 每个链表使用一个list结构来表示,这个结 ...

  4. Map以及其子类

    package com.Map; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; i ...

  5. PriorityBlockingQueue用法

    摘自<Java编程思想> package com.test.concurrency; import java.util.ArrayList; import java.util.List; ...

  6. ES6入门之对象扩展

    ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...

  7. Docker的安装及操作

    1. 在Ubuntu中安装Docker 更新ubuntu的apt源索引 sudo apt-get update 安装包允许apt通过HTTPS使用仓库 sudo apt-get install \ a ...

  8. 状态保持: cookier及session简介

    状态保持 因为 http 是一种无状态协议,浏览器请求服务器是无状态的. 无状态:指一次用户请求时,浏览器.服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求. 无状态原因:浏览器与服务器是 ...

  9. flask中过滤器的使用

    过滤器 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器. 使用方 ...

  10. functools 和 itertools

    functools 补充 1 wraps 在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响.wraps 保存被装饰函数的原信息 def ...