第3章  存储器

本章介绍了TMS320C54x DSP存储器的构成和操作。一般来说,C54x器件共有192K 16位字的存储窨,这个空间分成3个专用的部分:64K字程序、64K字数据和64K字I/O口。在某些C54x器件中,存储器结构已经通过重叠和分页的方法加以改变,这样就增加了存储器空间的容量。

C54x体系结构上的并行特点和片内RAM的双存取能力使C54x可以在任意给定的机器周期内同时进行4个存储器操作:一条指令的读取操作、两个操作数读操作以及一个操作数写操作。

在片内存储器中操作有如下几个优点:

Higher performance because no wait states are required
      Lower cost than external memory
      Lower power than external memory

The main advantage of operating from off-chip memory is the ability to access a larger memory space.

3.1 存储器空间

C54x DSP的存储器划分成3种独立可选的空间:程序、数据和I/O。这些空间中的RAM、ROM、EPROM、EEPROM或者存储器映射的外设可以位于片内或片外。

程序存储器中包含要执行的指令和执行指令时所需的表,数据存储器空间存储指令所需的数据,I/O存储空间连接外部的存储器映射外设,也可作外部数据存储空间。

按芯片各类的不同,C54x的片内存储器有这样几种类型:双存取RAM(DARAM)、单存取(SARAM)、双向共享RAM和ROM。RAM总是映射到数据空间,但也可以映射到程序空间。ROM可以被激活并映射到程序空间,也可部分映射到数据空间。

在CPU状态寄存器中有3位影响存储器的结构。这3位产生的影响因器件不同而不同。

MP/$\overline {MC}$、OVLY和DROM 3位在处理器模式状态寄存器(PMST)中。

3.2 程序存储器

The external program memory on most C54x devices can address up to 64K 16-bit words. The C54x devices have on-chip ROM, dual-access RAM(DARAM), single-access RAM (SARAM), and two-way shared RAM that can be mapped by software into the program-memory space. Table 3–1 shows the on-chip program memory available on the various C54x devices. For devicespecific on-chip program memory configurations, see the device data sheet.

When the memory cells are mapped into program space, the C54x device automatically accesses these memory cells when addresses fall within the boundaries of the on-chip memory. When the program address generation unit(PAGEN) generates an address outside the boundaries of the on-chip memory, the device automatically generates an external access.

3.2.1 程序存储器配置

MP/$\overline {MC}$和OVLY位决定了哪些片内存储器在程序空间有效。复位时,MP/$\overline {MC}$引脚上所接的逻辑电平被传送到PMST寄存器中的MP/$\overline {MC}$位。MP/$\overline {MC}$位决定是否使能片内ROM。若MP/$\overline {MC}$=1,器件被构造成微处理器(microprocessor),片内ROM被禁止。若MP/$\overline {MC}$=0,器件被构造成微处理机(microcomputer),片内ROM被使能。MP/$\overline {MC}$引脚只在复位时才被采样,但是用户可以通过软件设置或清除PMST寄存器的MP/$\overline {MC}$位以使能或禁止片内ROM。

3.2.2 片内ROM组织

片内ROM被划分成块,并以块来组织,以提高性能。例如,块的组织形式可使用户从ROM的某一块记取一条指令,同时又不影响对另一个ROM块的数据访问。

3.2.3 程序存储器地址映射和片内ROM内容

在器件复位时,复位、中断和陷阱向量被映射到程序空间从地址FF80h开始的页(128个字)中。但是,这些向量在器件复位以后可以重新映射到程序存储器任意页(128个字)的开始处。这个特点可以很方便地把向量表从引导ROM中移出,而且把ROM从存储器映射中移走。

注意:在片内ROM中,128个字被保留用作器件测试。要在片内ROM中实现的应用程序代码不能占用程序空间FF00h~FF7Fh的128个字。

3.2.4 片内ROM代码内容和映射

具有片内引导装载ROM的C54x器件,根据不同的器件,F800h~FFFFh的2K字可能包括以下一项或多项内容:

A bootloader program that boots from the serial ports, external memory, an I/O port, or the host port interface (if present)
      A 256-word u-law expansion table
      A 256-word A-law expansion table
      A 256-word sine look-up table
      An interrupt vector table

3.2.5 扩展程序存储器

C548、C549、C5402、C5410和C5420的程序存储器空间采用了分页扩展存储器的方法,这样允许访问多达8192字的程序存储器空间。为了实现这种扩展的方法,C548、C549、C5402、C5410和C5420增加了以下特性:

23 address lines, instead of 16 (20 address lines in the C5402, and 18 in the C5420)
      An extra memory-mapped register, the program counter extension register (XPC)
      Six extra instructions for addressing extended program space

XPC是存储器映射寄存器,映射到数据空间的001E地址,它的值决定页号。在硬件复位时,XPC被初始设置为0。

C548、C549、C5402、C5410和C5420的程序存储器被设置为128页(C5402是16页,C5420是4页),每一页为64K字。

当片内RAM映射到程序空间时(OVLY=1),程序存储器的每一页由两部分组成:最多32K字的公共块和32K字的私有块。公共块被所有的页共享,私有块只能通过它所在的页来访问。

如果片内ROM被使能(即MP/$\overline {MC}=0$,那么它只能放在0页上,而不能映射到程序存储器其它页上。

为了方便用软件对页进行切换,C548、C549、C5402、C5410和C5420有6条影响XPC的专用指令。

FB – Far branch (with or without delay)
      FBACC – Far branch to the location specified by the value in accumulator A or accumulator B (with or without delay)
      FCALA – Far call to the location specified by the value in accumulator A or accumulator B (with or without delay)
      FCALL – Far call (with or without delay)
      FRET – Far return (with or without delay)
      FRETE – Far return with interrupts enabled (with or without delay)

3.3 数据存储器

C54x中的数据存储器最多包含64$\times$16位字。除了双存取RAM(DARAM)和单存取RAM(SARAM)以外,C54x器件片内ROM也以用软件映射成数据ROM(DROM)。当访问地址属于片内存储器时,就可以进行RAM或数据ROM(在其有效的情况下)的访问。当数据地址产生逻辑(DAGEN)产生一个超出片内存储器范围的地址时,器件自动产生一个外部访问。

3.3.1 数据存储器配置

数据存储器可以在片内或片外。片内DARAM被映射到数据存储器空间。对某些C54x器件而言,用户可以通过置PMST寄存器中的DROM位将部分片内ROM映射到数据空间。这一部分片内ROM既可以映射到数据空间(用DROM位),又可以映射到程序空间(用MP/$overline {MC}$位)。这种情况下,指令可以把ROM作为数据空间的数据ROM来使用。复位时,处理器将DROM位清零。

当使用单向数据存储器操作数寻址时,那么指纹在单周期内读出ROM数据,包括带有32位长字节操作数的指令。在双向存储器操作数寻址时,如果两个操作数都驻留在相同的块中,那么读取需要2个周期。如果两个操作数驻留在不同的块中,则读取只需1个周期。

3.3.2 片内RAM组织

片内RAM被分成块,并以块为单位来进行组织,以提高性能。所有C54x器件中的DARAM的第一个1K字存储器包含了存储器映射CPU和外设寄存器、32个字的便笺式DARAM和896个字的DARAM。

3.3.3 存储器映射寄存器

64K字数据存储空间包括器件的存储器映射寄存器,它们驻留在数据空间的第0页中(数据地址0000h~007Fh)。数据空间的第0页包括以下内容:

The CPU registers (26 total) are accessible with no wait states.
      The peripheral registers are used as control and data registers in peripheral circuits. These registers reside within addresses 0020h–005F and reside on a dedicated peripheral bus structure.
      The scratch-pad RAM block (60h–7Fh in data memory) includes 32 words of DARAM for variable storage that helps avoid fragmenting the large RAM block.

3.3.4 CPU存储器映射寄存器

表3-3列出了CPU存储器映射寄存器的清单。本节给出这些寄存器的一个简单总结。

3.

3.3.4.1 中断寄存器(IMR、IFR)

中断屏蔽寄存器(IMR)在需要时可以独立地屏蔽某些中断。中断标志寄存器(IFR)指出当前中断的状态。

3.3.4.2 状态寄存器(ST0、ST1)

状态寄存器ST0和ST1包含C54x器件各种条件和模式的状态。ST0包括算术操作和位操作产生的特别贵标志(OVA、OVB、C和TC),另外ST0还包括DP和ARP字段。ST1反映处理器运行模式和指令状态。

3.3.4.3 累加器(A、B)

C54x器件有两个40位的累加器:累加器A和累加器B。每个累加器都采用存储器映射方式,并且分成累加器低位字(AL、BL)、累加器高位字(AH、BH)和累加器保护位(AG、BG)几部分。

3.3.4.4 暂存寄存器(T)

暂存寄存器T有许多用处,例如,它可存放:

One of the multiplicands for multiply and multiply/accumulate instructions (For more details about the T register and the processes of multiplication
      A dynamic (execution-time programmable) shift count for instructions with shift operation such as the ADD, LD, and SUB instructions
      A dynamic bit address for the BITT instruction
      Branch metrics used by the DADST and DSADT instructions for ACS operation of Viterbi decoding

另外,EXP指令将计算出的指数放入T寄存器,NORM指纹使用T寄存器的值来标准化数据。

3.3.4.5 状态转移寄存器(TRN)

这是用于在Viterbi算法中记录转移路径的寄存器。CMPS指令(比较、选择最大值并存储)在比较累加器高位字和低位字的基础上,修改TRN寄存器内容。

3.3.4.6 辅助寄存器(AR0~AR7)

8个16位的辅助寄存器可以被CPU访问,可以用辅助寄存器算术单元(ARAU)进行修改。辅助寄存器最主要的功能是产生访问数据空间的16位地址,但它们也可以作为通用寄存器或计数器来使用。

3.3.4.7 堆栈指针寄存器(SP)

16位堆栈指针寄存器(SP)存有系统堆栈顶部的地址。SP总是指向最后一个压入堆栈的指令存放地址。堆栈是使用中断、转移、调用、返回和PSHD、PSHM、POPD、POPM指令来进行操作的。在数据压入堆栈之前,SP中的16位值要作递减操作,然后才能将数据压入堆栈。而当数据弹出堆栈之后,SP的值要作增量运算。

3.3.4.8 循环缓冲容量大小寄存器(BK)

循环缓冲容量大小寄存器(BK)是一个16位寄存器。在循环寻址时,辅助寄存器算术单元(ARAU)使用它来说明数据块的容量大小。

3.3.4.9 块重复寄存器(BRC、RSA、REA)

当一个代码段要重复执行时,用16位的块重复计数寄存器(BRC)来指明代码段重复执行的次数。16位的块重复开始地址寄存器(RSA)和16位的块重复结束地址寄存器(REA)分别存放要重复执行的程序存储的首地址和末地址。

3.3.4.10 处理器模式状态寄存器(PMST)

处理器模式状态寄存器(PMST)是一个16位的状态寄存器,它用来控制C54x装置的存储器配置状态。

3.3.4.11 程序计数器扩展寄存器(XPC)

程序计数器扩展寄存器(XPC)是一个包含当前程序存储器地址高7位的寄存器。只有C548/C549/C5402/C5410/C5420几种器件具有程序计数器扩展寄存器(XPC)。

3.4 I/O存储器

C54x器件除了提供程序和数据存储空间之外,还提供I/O存储空间。I/O存储空间有64K字寻址范围(0000h~FFFFh)且只存在于片外,PORTR和PORTW指令可以访问I/O空间。I/O空间的读操作访问时序不财政开支程序和数据存储空间的访问,这样可以使访问独立的I/O映射器件比访问存在器更加方便。

3.5 程序和数据安全保护

C54x有两级安全选项:片内ROM级别安全选项和片内ROM/RAM级别安全选项。表3-4总结了存储器安全模式的内容,表3-5总结了在使用存储器安全模式时HPI存储器的访问。

TMS320C54x系列DSP的CPU与外设——第3章 存储器的更多相关文章

  1. TMS320C54x系列DSP的CPU与外设——第1章 绪论

    第1章 绪论 TMS320C54x DSP是TMS320系列DSP产品中的定点数字信号处理器.C54x DSP满足了实时嵌入式应用的一些要求,例如通信方面的应用. C54x的中央处理单元(CPU)具有 ...

  2. TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍

    第2章 TMS320C54x DSP体系结构总体介绍 本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU).存在器和片内外设. C54x DSP采用了高级的改进哈佛结构,用8 ...

  3. TMS320C54x系列DSP的CPU与外设——第8章 流水线

    第8章 流水线 本章描述了TMS320C54x DSP流水线的操作,列出了对不同寄存器操作时的流水线延迟周期.(对应英语原文第7章) 8.1 流水线操作 TMS320C54x DSP有一个6段的指令流 ...

  4. TMS320C54x系列DSP的CPU与外设——第5章 数据寻址

    第5章 数据寻址 C54x DSP提供7种基本寻址方式. ■ Immediate addressing uses the instruction to encode a fixed value.    ...

  5. TMS320C54x系列DSP指令和编程指南——第1章 汇编语言工具概述

    第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■  Assembler      ■  Archiver      ■  Linker      ■  Absolut ...

  6. TMS320C54x系列DSP指令和编程指南——第2章 通目标文件格式介绍

    第2章 通用目标文件格式介绍 汇编器和连接器可以产生在TMS320C54x器件上执行的目标文件,这些目标文件的格式称为通用目标文件格式(COFF).采用COFF格式有利于程序的模式化编程,因为它支持用 ...

  7. CPU与外设传送数据方式

    7.2 CPU与外设之间数据传送的方式 在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式.中断传送方式和直接存储器存取(DMA)传送方式,分别介绍如下.     7.2.1 程序传 ...

  8. 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法

    有不少人问到:flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位.为什么要偏1位? (全文有点晦涩,建议收藏本文对 ...

  9. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统

    C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...

随机推荐

  1. leetcode 104 Maximum Depth of Binary Tree ----- java

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  2. AJAX保留浏览历史的解决方案——hashchange()

    在ajax请求中,不能更新地址栏,地址栏上的“前进”和“后退”按钮就失效了,带来了另外一种糟糕的用户体验. 解决方案如下: 方案一:使用window. Onhashchange 事件 如下面Html片 ...

  3. 【NOIP2008】双栈排序

    感觉看了题解还是挺简单的,不知道当年chty同学为什么被卡了呢么久--所以说我还是看题解了 原题: Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将 ...

  4. SqlAlchemy初探

    SqlAlchemy是Python下的一个成熟的ORM框架.下面我们对他的使用做一个简略的介绍. 0.安装 如果有pip,使用pip安装,更便捷.pip install sqlalchemy 也可以下 ...

  5. vi基本操作

    vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command m ...

  6. 常见HTTP状态(304,200等)

    一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器超时 下面提供 HTTP 状态码的完整列表.点击链接可了解详情.您也可以访问 HTTP 状态码上的 ...

  7. matlab 相关代码记录

    1. 判断是否存在指定的video_name, 若不存在,则在给定save_path下,新建一个video_name文件夹: 1 sec_path = [save_path, video_name, ...

  8. JSBinding + SharpKit / Important Notes

    Serialization of List<T> is not supported. 1 public int v; // SUPPORTED 2 public GameObject go ...

  9. Understanding virtualxid && transactionid

    对pg_locks视图中的virtualxid和transactionid字段感到困惑,经查阅资料,特此在此整理一下学习内容: pg_locks Columns Name Type Reference ...

  10. open_table与opened_table

    好多人在调优Mysql的时候,总是对open_tables和opend_tables两个参数分别不清. 网上好多解释都是这样的:open_tables:当前打开表的数量opened_tables:当前 ...