Upload
irish
View
173
Download
0
Embed Size (px)
DESCRIPTION
DSP 原理及应用 I. 主讲人:陈朋 博士、讲师 地 址:广 C321 室 Phone : 13819195905 Email : [email protected]. 1 、系统时钟 1 ) DSP 时钟: 30MHz , 5 倍频; 2 )高 / 低速外设时钟设置与使能. 上次课的内容回顾. 2 、看门狗模块 1 )使能 / 屏蔽看门狗; 2 )复位看门狗( 0x55+0xAA ). 3 、 CPU 通用定时器 1 ) 32 + 16 位计数器; 2 )递减计数,产生周期性中断. 4 、通用 I/O - PowerPoint PPT Presentation
Citation preview
1
主讲人:陈朋 博士、讲师地 址:广 C321 室Phone : 13819195905Email : [email protected]
2
1 、系统时钟 1 ) DSP 时钟: 30MHz , 5倍频; 2)高 /低速外设时钟设置与使能
上次课的内容回顾
2 、看门狗模块 1 )使能 /屏蔽看门狗; 2)复位看门狗( 0x55+0xAA )
4 、通用 I/O
1 )高达 56个,与外设复用; 2)可配置为输入或输出
3 、 CPU 通用定时器 1 ) 32 + 16 位计数器; 2)递减计数,产生周期性中断
5 、 PIE 中断 1 ) 12×8个中断源( INT1 - INT12 , INTx.1 - INTx.8 ) 2 )中断向量表用来存在中断服务程序的地址
3
讲课内容
• 第 3 章“存储器及外部接口”
1.片内存储器
2.寄存器映射空间
3.外部扩展接口
4.与外部存储器的接口
4
1. 片内存储器 程序存储器:
ROM/PROM
EPROM FLASH EEPROM DiskOnChip
数据存储器: SRAM
DRAM EEPROM Dual Port RAM
5
F281× 采用增强的哈佛总线结构,能够并行访问程序和数据存储空间,如可以并行实现程序读、数据读、数据写这三个操作。 片内集成了大量的 SRAM 、 ROM 、 FLASH 等存储器,采用统一编址方式,方便程序开发。
1. 片内存储器 ( 续 )
F2812 提供了外部并行总线扩展接口,可提供 1M 字( 三个外部扩展空间:两个 512K ,一个 16K) 的寻址空间,有利于开发较复杂的系统,如扩展 FLASH 、 RA
M 、 ADC 、 DAC 、 RTC 、 LCD 、 USB 、 LAN 等。
Functional Overview
片内存储器
扩展接口
①
②
③
④
0
⑤⑥…
56 个
Memory Map
⑤⑥…
⑤⑥…⑤⑥…
①
②
③④
0⑤⑥…
/XZCS0AND1
/XZCS2
/XZCS6AND7
8
程序读
数据写
数据读
CPU
程序 / 数据空间的写操作共用数据总线 DWD
B ,两个操作不能同时进行; 从程序空间读 (PAB 、PRDB) ,从数据空间读(DRAB 、 DRDB) ,向数据空间写 (DWAB 、 DW
DB)
这 3 个操作可以同时进行。
9
片内存储器均采用 32 位数据总线; F2812 采用 32 位格式访问存储器或外设时,分配的必须是偶地址。绝大部分指令是采用 32 位格式从程序存储空间读取的。 各个数据存储器块 M0 (1k) 、 M1 (1k) 、 L0 (4k) 、 L1 (4k) 、H0 (8k) 均可以映射到程序和数据空间。
FLASH 具有如下特点: FLASH 分成 10 个扇区,每个扇区可以单独擦除与编程; 代码可安全保护( 128 位密匙);
可根据 CPU 频率调整等待状态; 具有低功耗模式; 流水线模式能够提高代码执行效率。
1. 片内存储器(续)
10
F2810
F2812
F2811
128kW
64kW
11
Flash 选项寄存器( FOPT )
Flash 读操作等待状态寄存器( FBANKWAIT )
1. 片内存储器 ( 续 )
12
1. 片内 Flash 存储器 ( 续 )
12
// 下面的函数初始化 Flash 控制寄存器, DSP 时钟频率 150MHz
void InitFlash(void){ EALLOW; FlashRegs.FOPT.bit.ENPIPE = 1; // 使能 Flash 流水线模式以提高代码执行效率 FlashRegs.FBANKWAIT.bit.RANDWAIT = 5; // 设置随机访问的等待状态数目 FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5; // 设置按页访问的等待状态数目 EDIS;
asm(“ RPT #7 || NOP”); // 软件延迟,等待流水线刷新}
提示:初始化 Flash 寄存器的代码必须从 RAM中运行,从 Flash 中执行将导致不可预测的结果。
13
F281X 和 C281X 器件包含三个外设寄存器空间。这些空间分为以下三组:
1) Peripheral Frame0: 直接映射到 CPU的存储器总线,支持 16位和 32位数据访问。
2) Peripheral Frame1: 映射到 32位的外设总线,必须采用 32位读写方式(限对偶地址访问)。
3) Peripheral Frame2: 映射到 16位的外设总线,仅支持 16为访问。
2. 外设寄存器映射空间
14
2. 外设寄存器映射空间 ( 续 )
16/32
/* Peripheral Frame 0: */ DEV_EMU : origin = 0x000880, length = 0x000180 XINTF : origin = 0x000B20, length = 0x000020 PIE_CTRL : origin = 0x000CE0, length = 0x000020 PIE_VECT : origin = 0x000D00, length = 0x000100 FLASH_REGS : origin = 0x000A80, length = 0x000060 CSM : origin = 0x000AE0, length = 0x000010 CPU_TIMER0 : origin = 0x000C00, length = 0x000008 CPU_TIMER1 : origin = 0x000C08, length = 0x000008 CPU_TIMER2 : origin = 0x000C10, length = 0x000008
F2812.cmd
15
2. 外设寄存器映射空间 ( 续 )
32
/* Peripheral Frame 1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100
F2812.cmd
16
/* Peripheral Frame 2: */ SYSTEM : origin = 0x007010, length = 0x000020 XINTRUPT : origin = 0x007070, length = 0x000010 GPIOMUX : origin = 0x0070C0, length = 0x000020 GPIODAT : origin = 0x0070E0, length = 0x000020 EV_A : origin = 0x007400, length = 0x000040 EV_B : origin = 0x007500, length = 0x000040 MCBSP_A : origin = 0x007800, length = 0x000040 SCI_A : origin = 0x007050, length = 0x000010 SCI_B : origin = 0x007750, length = 0x000010 SPI_A : origin = 0x007040, length = 0x000010 ADC : origin = 0x007100, length = 0x000020
F2812.cmd
名称 等待状态 说 明RAM块M0和M1
0 无需设置等待状态
外设帧 PF0 0 无需设置等待状态外设帧 PF1 0(写操作)
2(读操作)固定数目的等待周期
外设帧 PF2 0(写操作)2(读操作)
固定数目的等待周期
RAM块 L0和L1
0 无需设置等待状态
Flash 0- 15(可编程)
可通过 Flash的等待状态寄存器编程
SARAM块 H0 0 无需设置等待状态引导 ROM 1 固定数目的等待周期XINTF 1- 54(可编
程)可通过 XINTF寄存器编程
提示: Flash 和 XINTF 的等待状态与 DSP 时钟频率有关。
存储器和寄存器的等待状态
18
F28×系列 DSP中有些寄存器的内容是受保护的,其目的是为了避免用户程序错误地改变这些寄存器的值。当受保护后,允许 CPU对该寄存器进行读操作,但任何写操作均被忽略。
如果寄存器是 EALLOWEALLOW 保护的,在对该寄存器进行写操作前必须首先执行 EALLOW 指令使能;而完成后执行 EDISEDIS 指令则可以禁止写操作。
2. 外设寄存器映射空间 ( 续 )
19
3. 外部扩展接口
F2812 的外部接口( XINTF )采用异步、非复用的扩展总线,与 C240× 的外部接口相似;
F2812 的 XINTF 映射到 5 个独立的存储空间。当访问相应的存储空间时,就会产生一个片选信号。 每个空间都可以独立地设置访问建立、有效和跟踪时间,同时还可以通过 XREADY 信号来与外设的访问速度和时序匹配。
20
16 位
19 位
XZCS7 取决于 MP/MC 的状态
XINTF
See p.42 (datasheet)
2812.pdf
21
所有外部扩展接口的建立、激活和跟踪时间均以时钟 XTIMCLK 为基准; 所有外部接口的访问周期均在 XCLKOUT 的上升沿开始有效。
3. 外部扩展接口 ( 续 )
22
3. 外部扩展接口 ( 续 ) 任何对 XINTF 空间的读 /写时序都可以分为三个阶段:
持续的 XTIMCLK 周期数( tc—XTIMCLK 的周期; WS—XREADY 引入的等待周期数) 缺省值
WS=0
建立阶段:所访问空间的片选信号为低电平,产生有效的地址在 AB上;
保持阶段:读 /写信号变为高后,保持片选信号为低电平的一段时间。
有效阶段:读操作 (/XRD=0) 数据锁存到 DSP ;写 (/XWE = 0) 操作数据至DB;
23
访问周期的计算(不使用 XREADY 信号)
1~3 0~3
0~7
0~3 0~6 0~6 0~12
1~3 2~6 2~6 4~12
1~8
1~15 1~16
1~30
2SYSCLKOUT≤ 访问周期≤ 54SYSCLKOUT
参照课本 P.63-64
24
Lead = 2 , Active = 2 , Trail= 2
XTIMCLK=SYSCLKOUT
7
7
25
Lead = 2 , Active =2 , Trail = 2
XTIMCLK=SYSCLKOUT/2
14
14
26
XREADY 信号 DSP 通过检测 XREADY 信号,可以延长 DSP 访问外设的有效阶段;
在对 XREADY 信号采样时刻,如果信号为低电平,则有效阶段将延长一个 XTIMCLK 周期,然后在下一个 XTIMCLK 的上升沿继续采样,直到检测到 XREADY 为高电平,完成正常的读 /写周期;
器件上所有外设空间共用一个 XREADY 信号,低电平有效; 每个空间可以独立配置为检测或不检测 XREADY 信号;
每个空间可以选择同步或异步检测(缺省方式) XREADY 信号。 同步检测:在设定的建立和有效周期结束之前,对 XREADY信号采样一个 XTIMCLK 周期。 异步检测:在设定的建立和有效周期结束之前,对 XREADY信号采样三个 XTIMCLK 周期。
3. 外部扩展接口 ( 续 )
27
3XTIMCLK
1XTIMCLK
异步检测
同步检测
XTIMCLK = SYSCLKOUT2 23/1
读周期
28
1XTIMCLK
3XTIMCLK同步检测
异步检测
2 23/1
XTIMCLK = SYSCLKOUT写周期
29
1 、什么情况下需要 XREADY 信号?
2 、是否有必要使用 XREADY 信号?
外设速度特别慢,依靠软件插入等待状态无法满足要求; 一个 XINTF区( ZONE )的外设较多,速度快慢差异较大。
绝大多数情况下不必使用 XREADY 信号,直接将该引脚上拉至高电平(说明一直有效); 对于扩展外部设备较多,且访问速度相差较大的情况,可以将外设按快慢分组,分别配置到不同的 XINTF 空间。
3. 外部扩展接口 ( 续 )
30
void InitXintf(void){ // Timing for all zones based on XTIMCLK = SYSCLKOUT XintfRegs.XINTCNF2.bit.XTIMCLK = 0; // Zone 0 -- 设置写周期时序 // 缺省为使用 XREADY 信号,异步采样方式, ACTIVE 必须大于或等于 1 。 XintfRegs.XTIMING0.bit.XWRLEAD = 1; XintfRegs.XTIMING0.bit.XWRACTIVE = 3; XintfRegs.XTIMING0.bit.XWRTRAIL = 1; XintfRegs.XTIMING0.bit.X2TIMING = 0; // Zone0 的 Lead/Acitve/Trail 时间不加倍
// Zone 2 --设置读周期时序 XintfRegs.XTIMING2.bit.USEREADY = 0; // Zone2 忽略 XREADY 信号,缺省为 1 XintfRegs.XTIMING2.bit.XRDLEAD = 3; XintfRegs.XTIMING2.bit.XRDACTIVE = 7; XintfRegs.XTIMING2.bit.XRDTRAIL = 3; XintfRegs.XTIMING2.bit.X2TIMING = 1; // Zone2 的 Lead/Acitve/Trail 时间加倍}
XINTF 的初始化
31
复位时 XMP/MC 引脚的状态决定了 DSP 的工作模式:
如果 XMP/MC= 0(微控制器模式),使能 BootROM,Zone7被屏蔽,在应用中,这也是比较常用的系统工作模式。
如果 XMP/MC= 1(微处理器模式),使能 Zone7空间(映射到 0x3FC000),并从外部存储器获取中断向量表。此时,为了正确执行代码,必须将复位向量指针指向一个有效的存储空间。
复位后,可以通过 XINTFCNF2 寄存器改变工作模式,即从 BootROM 引导,后通过软件使 XMP/MC = 0 ,从而可以访问 Zone7 。
DSP 的工作模式
32
外部接口支持程序 / 数据存储器的 DMA 传输,如从外部存储器加载引导程序, DMA 操作由 /XHOLD 和 /XHOLDA 信号控制。 DMA 操作步骤:
外设产生一个低电平信号送 /XHOLD引脚; DSP 完成对所有外部接口的访问后将 /XHOLDA引脚置为低电平(设置 XINTCNF2 寄存器); 随后 XINF 的总线处于高阻状态(地址、数据、读写与片选信号), DSP 可以继续执行片内程序存储器中的程序; 其它设备可以控制对外部程序、数据存储器的访问; DMA 操作完成后送高电平信号至 XHOLD引脚。
提示: DMA 过程 DSP 芯片可使外部总线处于三态,但本身并不具备 DMA 控制能力,需要外设扩展专门的 DMA 控制芯片。
XINF 的 DMA 操作
TSSOP44
CY7C1021V33
特点: 3.3V电压( 3.0-3.6V) 高速( 10/12/15ns ) 片选无效时自动降低功耗
200mA
200mA5mA
4. 与外部存储器的接口
34
A05
A14
A23
A32
A41
A544
A643
A742
A827
A926
A1025
A1124
A1221
A1320
A1419
A1518
/CE6
/WE17
/OE41
/BHE40
/BLE39
I/O 31
VCC33
VSS34
I/O 30
I/O 32
I/O 7
I/O 8
I/O 9
I/O 10
I/O 14
I/O 29
I/O 13
I/O 15
I/O 16
I/O 35
I/O 36
I/O 37
I/O 38
VCC11
VSS12
SRAM
CY7C1021V33-12
XA7XA8
XA3
XA1
XA4
XA0
XA6XA5
XA10XA9
XA11XA12
XA15
XA2
XA13XA14
XZCS6AND7nXWEnXRDn
XD0XD1XD2XD3XD4XD5XD6XD7XD8XD9XD10XD11
XD15XD14XD13XD12
3.3V
XA[0..15] XD[0..15]
XZCS6AND7nXWEnXRDn
C2
0.1uF
3.3V
C1
0.1uF
4. 与外部存储器的接口( 续 )
35
100100100110
XINTCNF.bit.XTIMCLK = 0XTIMING6.bit.XWRLEAD = 1;XTIMING6.bit.XWRACTIVE = 1;XTIMING6.bit.XWRTRAIL = 0;XTIMING6.bit.X2TIMING = 0
tWCWrite Cycle Time 12
tSCECE Low to Write End 9
tAWAddress Set-up to Write End 8
tPWEWE Pulse Width 8
min
写周期分析CY7C1021V33-12
150MHz-------6.67ns
36
100100100
XINTCNF.bit.XTIMCLK = 0XTIMING6.bit.XRDLEAD = 1;XTIMING6.bit.XRDACTIVE = 0-2;XTIMING6.bit.XRDTRAIL = 0;XTIMING6.bit.X2TIMING = 0
tRCRead Cycle Time 12
tACECE Low to Data Valid 12
tDOEOE Low to Data Valid 6
min
max
读周期分析150MHz-------6.67ns
37
提示下次上课内容:第 10 章 “ TMS320C28X 的软件
开发”
作业: 3- 2 , 3-4