370 likes | 523 Vues
DSP 原理及应用 I. 主讲人:陈朋 博士、讲师 地 址:广 C321 室 Phone : 13819195905 Email : Chenpeng@zjut.edu.cn. 1 、系统时钟 1 ) DSP 时钟: 30MHz , 5 倍频; 2 )高 / 低速外设时钟设置与使能. 上次课的内容回顾. 2 、看门狗模块 1 )使能 / 屏蔽看门狗; 2 )复位看门狗( 0x55+0xAA ). 3 、 CPU 通用定时器 1 ) 32 + 16 位计数器; 2 )递减计数,产生周期性中断. 4 、通用 I/O
E N D
DSP原理及应用I 主讲人:陈朋 博士、讲师 地 址:广C321室 Phone:13819195905 Email:Chenpeng@zjut.edu.cn
1、系统时钟 1)DSP时钟:30MHz,5倍频;2)高/低速外设时钟设置与使能 上次课的内容回顾 2、看门狗模块 1)使能/屏蔽看门狗;2)复位看门狗(0x55+0xAA) 3、CPU通用定时器 1)32+16位计数器;2)递减计数,产生周期性中断 4、通用I/O 1)高达56个,与外设复用;2)可配置为输入或输出 5、PIE中断 1)12×8个中断源(INT1-INT12,INTx.1-INTx.8) 2)中断向量表用来存在中断服务程序的地址
讲课内容 • 第3章“存储器及外部接口” 片内存储器 寄存器映射空间 外部扩展接口 与外部存储器的接口
1. 片内存储器 • 程序存储器: • ROM/PROM • EPROM • FLASH • EEPROM • DiskOnChip • 数据存储器: • SRAM • DRAM • EEPROM • Dual Port RAM
1. 片内存储器(续) • F281×采用增强的哈佛总线结构,能够并行访问程序和数据存储空间,如可以并行实现程序读、数据读、数据写这三个操作。 • 片内集成了大量的SRAM、ROM、FLASH等存储器,采用统一编址方式,方便程序开发。 • F2812提供了外部并行总线扩展接口,可提供1M字(三个外部扩展空间:两个512K,一个16K)的寻址空间,有利于开发较复杂的系统,如扩展FLASH、RAM、ADC、DAC、RTC、LCD、USB、LAN等。
Functional Overview 扩展接口 ⑤⑥… ① 56个 ② ④ 片内存储器 ③ 0
Memory Map ① ⑤⑥… /XZCS0AND1 ② ⑤⑥… /XZCS2 ⑤⑥… /XZCS6AND7 ④ ③ ⑤⑥… 0
程序读 数据读 • 程序/数据空间的写操作共用数据总线DWDB,两个操作不能同时进行; • 从程序空间读(PAB、PRDB),从数据空间读(DRAB、DRDB),向数据空间写(DWAB、DWDB) 这3个操作可以同时进行。 CPU 数据写
1. 片内存储器(续) • 片内存储器均采用32位数据总线; • F2812采用32位格式访问存储器或外设时,分配的必须是偶地址。绝大部分指令是采用32位格式从程序存储空间读取的。 • 各个数据存储器块M0 (1k)、M1 (1k)、L0 (4k)、L1 (4k)、H0 (8k)均可以映射到程序和数据空间。 • FLASH具有如下特点: • FLASH分成10个扇区,每个扇区可以单独擦除与编程; • 代码可安全保护(128位密匙); • 可根据CPU频率调整等待状态; • 具有低功耗模式; • 流水线模式能够提高代码执行效率。
F2812 F2811 128kW F2810 64kW
1. 片内存储器(续) Flash选项寄存器(FOPT) Flash读操作等待状态寄存器(FBANKWAIT)
1. 片内Flash存储器(续) // 下面的函数初始化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中执行将导致不可预测的结果。 12
2. 外设寄存器映射空间 • F281X和C281X器件包含三个外设寄存器空间。这些空间分为以下三组: 1) Peripheral Frame0: 直接映射到CPU的存储器总线,支持16位和32位数据访问。 2) Peripheral Frame1: 映射到32位的外设总线,必须采用32位读写方式(限对偶地址访问)。 3) Peripheral Frame2: 映射到16位的外设总线,仅支持16为访问。
2. 外设寄存器映射空间(续) 16/32 F2812.cmd /* 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
2. 外设寄存器映射空间(续) 32 F2812.cmd /* Peripheral Frame 1: */ ECAN_A : origin = 0x006000, length = 0x000100 ECAN_AMBOX : origin = 0x006100, length = 0x000100
16 F2812.cmd /* 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
存储器和寄存器的等待状态 提示:Flash和XINTF的等待状态与DSP时钟频率有关。
2. 外设寄存器映射空间(续) F28×系列DSP中有些寄存器的内容是受保护的,其目的是为了避免用户程序错误地改变这些寄存器的值。 当受保护后,允许CPU对该寄存器进行读操作,但任何写操作均被忽略。 如果寄存器是EALLOW保护的,在对该寄存器进行写操作前必须首先执行EALLOW指令使能;而完成后执行EDIS指令则可以禁止写操作。
3. 外部扩展接口 • F2812的外部接口(XINTF)采用异步、非复用的扩展总线,与C240×的外部接口相似; • F2812的XINTF映射到5个独立的存储空间。当访问相应的存储空间时,就会产生一个片选信号。 • 每个空间都可以独立地设置访问建立、有效和跟踪时间,同时还可以通过XREADY信号来与外设的访问速度和时序匹配。
16位 19位 XZCS7取决于MP/MC的状态 XINTF See p.42 (datasheet) 2812.pdf
3. 外部扩展接口(续) • 所有外部扩展接口的建立、激活和跟踪时间均以时钟XTIMCLK为基准; • 所有外部接口的访问周期均在XCLKOUT的上升沿开始有效。
3. 外部扩展接口(续) 任何对XINTF空间的读/写时序都可以分为三个阶段: • 建立阶段:所访问空间的片选信号为低电平,产生有效的地址在AB上; • 有效阶段:读操作(/XRD=0)数据锁存到DSP;写(/XWE=0)操作数据至DB; • 保持阶段:读/写信号变为高后,保持片选信号为低电平的一段时间。 持续的XTIMCLK周期数(tc—XTIMCLK的周期;WS—XREADY引入的等待周期数) 缺省值 WS=0 6 15 6 6 15 6
访问周期的计算(不使用XREADY信号) 参照课本P.63-64 1~3 0~3 0~6 2~6 2~6 0~6 0~12 4~12 1~3 0~3 1~8 1~15 1~16 1~30 0~7 2SYSCLKOUT≤访问周期≤ 54SYSCLKOUT
7 7 XTIMCLK=SYSCLKOUT Lead=2,Active=2,Trail=2
XTIMCLK=SYSCLKOUT/2 Lead=2,Active=2,Trail=2 14 14
3. 外部扩展接口(续) XREADY信号 • DSP通过检测XREADY信号,可以延长DSP访问外设的有效阶段; • 器件上所有外设空间共用一个XREADY信号,低电平有效; • 每个空间可以独立配置为检测或不检测XREADY信号; • 在对XREADY信号采样时刻,如果信号为低电平,则有效阶段将延长一个XTIMCLK周期,然后在下一个XTIMCLK的上升沿继续采样,直到检测到XREADY为高电平,完成正常的读/写周期; • 每个空间可以选择同步或异步检测(缺省方式)XREADY信号。 • 同步检测:在设定的建立和有效周期结束之前,对XREADY信号采样一个XTIMCLK周期。 • 异步检测:在设定的建立和有效周期结束之前,对XREADY信号采样三个XTIMCLK周期。
读周期 XTIMCLK=SYSCLKOUT 3/1 2 2 1XTIMCLK 同步检测 3XTIMCLK 异步检测
写周期 XTIMCLK=SYSCLKOUT 2 2 3/1 1XTIMCLK 同步检测 3XTIMCLK 异步检测
3. 外部扩展接口(续) 1、什么情况下需要XREADY信号? • 外设速度特别慢,依靠软件插入等待状态无法满足要求; • 一个XINTF区(ZONE)的外设较多,速度快慢差异较大。 2、是否有必要使用XREADY信号? • 绝大多数情况下不必使用XREADY信号,直接将该引脚上拉至高电平(说明一直有效); • 对于扩展外部设备较多,且访问速度相差较大的情况,可以将外设按快慢分组,分别配置到不同的XINTF空间。
XINTF的初始化 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时间加倍 }
DSP的工作模式 复位时XMP/MC引脚的状态决定了DSP的工作模式: • 如果XMP/MC=1(微处理器模式),使能Zone7空间(映射到0x3FC000),并从外部存储器获取中断向量表。此时,为了正确执行代码,必须将复位向量指针指向一个有效的存储空间。 • 如果XMP/MC=0(微控制器模式),使能BootROM,Zone7被屏蔽,在应用中,这也是比较常用的系统工作模式。 • 复位后,可以通过XINTFCNF2寄存器改变工作模式,即从BootROM引导,后通过软件使XMP/MC=0,从而可以访问Zone7。
XINF的DMA操作 外部接口支持程序/数据存储器的DMA传输,如从外部存储器加载引导程序,DMA操作由/XHOLD和/XHOLDA信号控制。 DMA操作步骤: • 外设产生一个低电平信号送/XHOLD引脚; • DSP完成对所有外部接口的访问后将/XHOLDA引脚置为低电平(设置XINTCNF2寄存器); • 随后XINF的总线处于高阻状态(地址、数据、读写与片选信号),DSP可以继续执行片内程序存储器中的程序; • 其它设备可以控制对外部程序、数据存储器的访问; • DMA操作完成后送高电平信号至XHOLD引脚。 提示:DMA过程DSP芯片可使外部总线处于三态,但本身并不具备DMA控制能力,需要外设扩展专门的DMA控制芯片。
4. 与外部存储器的接口 CY7C1021V33 TSSOP44 • 特点: • 3.3V电压(3.0-3.6V) • 高速(10/12/15ns) • 片选无效时自动降低功耗 5mA 200mA 200mA
4. 与外部存储器的接口(续) 2 1 3 4
写周期分析 150MHz-------6.67ns CY7C1021V33-12 min 100 XINTCNF.bit.XTIMCLK = 0 XTIMING6.bit.XWRLEAD = 1; XTIMING6.bit.XWRACTIVE = 1; XTIMING6.bit.XWRTRAIL = 0; XTIMING6.bit.X2TIMING = 0 100 100 110 35
读周期分析 150MHz-------6.67ns min max XINTCNF.bit.XTIMCLK = 0 XTIMING6.bit.XRDLEAD = 1; XTIMING6.bit.XRDACTIVE = 0-2; XTIMING6.bit.XRDTRAIL = 0; XTIMING6.bit.X2TIMING = 0 100 100 100 36
提示下次上课内容:第10章 “TMS320C28X的软件开发” 作业:3-2,3-4 谢谢同学们!