分享
 
 
 

TMS320C54X芯片介绍

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

TMS320C54X芯片介绍

1. 概述

TI公司在原来已被人们熟知的TMS320C1X、TMS320C25、TMS320C3X/4X、TMS320C5X、TMS320C8X的基础上发展了三种新的DSP系列,它们是:TMS320C2000、TMS320C5000、TMS320C6000系列,成为当前和未来相当长时期内TI DSP的主流产品,前面提到的那些老型号产品均将被这三种新系列产品替代。

三种新型TMS320 DSP系列的特点

1.TMS320C2000——作控制用的最佳DSP,可以替代老的’C1X和’C2X。现在有趋势集中在以下两个方向上:

(1)’C20X 16位定点DSP,速度为20MIPS,主要用途是电话、数字相机、售货机等,其中:’F206带有闪速存储器。

(2)’C24X 16位定点DSP,速度为20MIPS,用作数字马达控制、工业自动化、电力转换系统、空调等。

2.TMS320C5000——低功耗高性能DSP,16位定点,速度40~200MIPS。主要用途是有线和无线通信、IP、便携式信息系统、寻呼机、助听器等。

目前’C5000系列中又有三种新成员,一种是’C5402,这是廉价型的DSP,目标价格是每片5美元(50K批量),速度保持100MIPS,片内存储空间稍小一些,RAM为16K、ROM为4K。主要应用对象是无线Modem、新一代PDA、网络电话和其它电话系统以及消费类电子产品。

第二种是’C5420,它拥有两个DSP核,速度达到200MIPS,200K片内RAM,功耗0.32mA/MIPS,200MIPS全速工作时不超过120mW,为业内功耗最低的DSP。’C5420是当今集成度最高的定点DSP,适合于做多通道基站、服务器、Modem和电话系统等要求高性能、低功耗、小尺寸的场合。

第三种是’C5416,它是TI公司0.15μm器件中的第一款,速度为160MIPS,有三个多通道缓冲串行口(McBSPs),能够直接与T1或E1线路联接,不需要外部逻辑电路,有128K片内RAM。应用对象是VoIP、通信服务器、PBX(专用小交换机)和计算机电话系统等。

3.TMS320C6000——这是TI公司1997年2月推向市场的高性能DSP,综合了目前DSP的所有优点,具有最佳的性价比和低功耗。’C6000系列中又分成定点和浮点两类。

(1)C62XX 16位定点DSP,速度为1200~2000MIPS,用于无线基站、ADSL Modem、网络系统、中心局交换机、数字音频广播设备等。

(2)C67XX 32位浮点DSP,速度为1Gflops,用于基站数字波束形成、医学图像处理、语音识别、3-D图形等。

上面所介绍的TI公司的新一代DSP已经替代80年代和90年代初的老一代产品,在电子信息产业方面获得了广泛的应用。’C2000系列已用于数字马达控制、数字照相机、PC照相机;’C5000系列用于蜂窝网手机、程控交换;’C6000系列用于基站、ADSL、V.90 56K Modem。

本设计所采用的芯片是’C5000系列重的一款TMS320C54X芯片。下面着重介绍。

2. TMS320C54x芯片综述

2.1 总线结构

C54x 包括8 条16 比特宽度的总线,其中:

l 一条程序总线(PB)

l三条数据总线(CB、DB、EB)

l 四条地址总线(PAB CAB DAB EAB)

2.2 C P U

C54x 的CPU 结构包括:

l 40 比特的ALU ,其输入来自16 比特立即数、16 比特来自数据存储器的数据、暂时存储器、T 中的16 比特数、数据存储器中两个16 比特字、数据存储器中32 比特字、累加器中40 比特字。

l 2 个40 比特的累加器,分为三个部分,保护位(39- 32 比特)、高位字(31-16 比特)、低位字(15-0 比特)。

l桶型移位器,可产生0 到31 比特的左移或0 到16 比特的右移。

l 17x17 比特的乘法器

l 40 比特的加法器

l比较选择和存储单元CSSU

l数据地址产生器DAGEN

l程序地址产生器PAGEN

2.3 外设

C54x 包括

l通用I/O 引脚,XF 和BIO

l定时器

l PLL 时钟产生器

l HPI 口8 比特或16 比特

l同步串口

l带缓存串口BSP

l多路带缓存串口McBSP

l时分复用串口TDM

l可编程等待状态产生器

l可编程bank switching 模块

l 外部总线接口

l IEEE1149.1 标准JTAG 口

3.存储器

一般而言,C54x 的存储空间可达192K16 比特字,64K 程序空间,64K 数据空间,64KI/O 空间。

依赖其并行的工艺特性和片上RAM 双向访问的性能,在一个机器周期内,C54x 可以执行4 条行并行存储器操作:取指令,两操作数读,一操作数写。

使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。

3.1 存储空间分配图(以C 5 4 9 为例)

图2-1 ’C54x存储空间分配图

复位后,中断矢量表位于程序区FF80H 位置,可重新定位于程序空间任何一个128 字的页面(其地址高9 比特即页号由PMST 中IPTR确定)。

3.2 程序存储区

C54x 有片内ROM 、DARAM、 SARAM ,这些区域可以通过软件配置到程序空间。当地址落在这些区域内,自动对这些区域进行访问,当地址落在这些区域以外,自动产生对外部存储器的访问。

3.2 .1 片内 R O M

片内ROM( 4K 16K 24K 28K 或48K 字)可能包括的内容有:

l引导程序,可以从串口、外部存储器、I/O 口或HPI 口引导

l256 字的率扩展表

l256 字的A 率扩展表

l 256 字的正弦表

l中断矢量表

3.2.2 扩展程序存储器

‘548 、’549 ’、5410 、’5420 采用分页扩展的方式使可寻址程序空

间达到8192K 字,这一功能的实现有赖于:

l 23 条地址线

l扩展程序计数器XPC

l6 条访问外部程序空间的指令

当程序空间可以使用片内RAM 时,程序空间的每一页分为以下两部分:最大32K 字的通用块和32K 字的专有块,通用块为所有页共享。

XPC 寄存器指示选定页,复位后,初始化为0, 影响XPC 的6 条指令是:

l FB[D] 长跳转指令

l FBACC[D] 长跳转指令,跳转地址由A 或B 中内容确定

l FCALA[D] 长调用指令,子程序地址由A 或B 中内容确定

l FCALL[D] 长调用指令

l FRET[D] 长返回指令

l FRETE[D] 长中断返回指令

其它的指令不修改XPC 寄存器,而在当前页中做内部访问。

3.3 内存映象寄存器(以5 4 9 为例)

0

IMR

中断屏蔽寄存器

1

IFR

中断标志寄存器

2 - 5

-

测试保留

6

ST0

状态寄存器0

7

ST1

状态寄存器1

8

AL

累加器A 低字(15-0 )比特

9

AH

累加器A 高字(31-16)比特

A

AG

累加器A 保护位(39-32 比特)

B

BL

累加器B 低字(15-0 比特)

C

BH

累加器B 高字(31-16 比特)

D

BG

累加器B 保护位(39-32 比特)

E

T

乘法寄存器

F

TRN

传送寄存器

1 0-1 7

AR0-AR7

辅助寄存器ARn n=0~7

1 8

SP

堆栈指针

1 9

BK

循环缓存区大小寄存器

1 A

BRC

块重复计数器

1 B

RSA

块重复开始地址

1 C

REA

块重复结束地址

1 D

PMST

状态寄存器

1 E

XPC

PC 扩展寄存器

1 E-1 F

保留

2 0

BDRR0

带缓存串口0 数据接收寄存器

2 1

BDXR0

带缓存串口0 数据发送寄存器

2 2

BSPC0

带缓存串口0 控制寄存器

2 3

BSPCE0

带缓存串口0 控制扩展寄存器

2 4

TIM

定时器计数器

2 5

PRD

定时器周期寄存器

2 6

TCR

定时器控制寄存器

2 7

保留

2 8

SWWSR

等待状态产生寄存器

2 9

BSCR

Bank-switching 控制寄存器

2 A

保留

2 B

XSWR

扩展等待状态寄存器

2 C

HPIC

主机接口控制寄存器

2 D-2 F

保留

3 0

TRCN

TDM 串口数据接收寄存器

3 1

TDXR

TDM 串口数据发送寄存器

3 2

TSPC

TDM 串口控制寄存器

3 3

TCSR

TDM 串口通道选择寄存器

3 4

TRTA

TDM 串口接收发送寄存器

3 5

TRAD

TDM 串口接收地址寄存器

3 6-3 7

保留

3 8

AXR0

ABU0 发送地址寄存器

3 9

BKX0

ABU0 发送缓冲大小寄存器

3 A

ARR0

ABU0 接收地址寄存器

3 B

BKR0

ABU0 接收缓冲大小寄存器

3 C

AXR1

ABU1 发送地址寄存器

3 D

BKX1

ABU1 发送缓冲大小寄存器

3 E

ARR1

ABU1 接收地址寄存器

3 F

BKR1

ABU1 接收缓冲大小寄存器

4 0

BDRR1

带缓存串口1 数据接收寄存器

4 1

BDXR1

带缓存串口1 数据发送寄存器

4 2

BSPC1

带缓存串口1 控制寄存器

4 3

BSPCE1

带缓存串口1 控制扩展寄存器

4 4-5 7

保留

5 8

CLKMD

时钟方式寄存器

5 9-5 F

保留

下面着重对三个状态寄存器作一简要说明

3.3 . 1 S T 0 寄存器

ST0 结构为

l ARP 辅助寄存器指针

l TC 测试/控制位,存储了ALU 测试位操作的结果,受BIT,BITF, CMPM ,CMPR, CMPS, SFTC 指令的影响

l C 如果加法产生进位C 为1, 减法产生借位C 为0, ADD 指令

只能置位C ,而SUB 指令只能清C

l OVA 累加器A 溢出标志

l OVB 累加器B 溢出标志

l DP 数据存储空间页标志,由DP 指定页,在此页中采用直接寻址指令,其绝对地址为DP 指示的高9 位加上直接寻址指令中的地址为其低7 位构成。

3.3 . 2 S T 1 寄存器

ST1 结构为

l

BRAF 块重复指示,

BRAF=1, 块重复操作。

l CPL 编译器模式,指示相关直接寻址选用指针。CPL=0, 使用DP 指针;CPL=1, 使用SP 指针。

l XF 指示外部引脚XF 状态。

l HM 挂起方式,指示CPU 响应 信号的方式HM=0, 外部接口呈高阻;HM=1, CPU 停机。

l INTM 全局中断控制位。INTM=0, 开中断;INTM=1,屏蔽可

屏蔽中断。

l 0 读出值总为0。

l OVM 溢出处理方式。指示发生溢出时对累加器中数值的处理OVM=0 ,溢出值不变;

OVM=1 ,载入正向最大值007FFFFFFFH或负向最大值0080000000H。

l SXM 符号扩展方式,SXM=0, 符号不扩展;SXM=1,数据被ALU 使用前先行符号扩展。

l C16 C16=0 ALU 操作采用双精度方式全32 位方式C16=1, ALU 操作采用双16 位方式。

l FRCT 小数模式,FRCT=1, 乘法器输出左移一位补偿多余的符号位。

l CMPT 兼容模式,CMPT=0, ARP 在只有单数据存储器操作数的间接寻址方式中不更新,在这种方式下,ARP 必须总置0;CMPT=1 ,ARP 在上述条件下更新,除非使用AR0。

l ASM 累加器移位数。规定了移位范围16-15 ,用于并行存储指令STH 、STL、 ADD 、SUB 和LD。

3.3 . 3 PMST 寄存器

ST1 结构为:

l IPTR 中断矢量指针,此9 位指向内存空间中以128 字为单位的页首址。即中断矢量必须位于页的起始部分。复位后IPTR为1FFH ,指向FF80H 的位置,可重新定义到任何页。

l 微机/微处理器模式 =0 ,微机模式片,内ROM 可访问; =1, 微处理器模式,片内ROM 不可访问。

l OVLY 片内RAM 是否配置入程序空间。OVLY =0, 片内RAM 不配置入程序空间;OVLY= 1, 除00-7FH 外,片内RAM 配置入程序空间。

l AVIS 地址显示模式,控制对内部程序访问时,地址数据是否显示在地址线上。AVIS= 0 ,不显示;AVIS=1, 显示。

l DROM 数据ROM 配置,DROM=0, 片内ROM 不配置在数据空间;DROM=1, 部分片内ROM 配置在数据空间。

l CLKOFF CLKOUT 关闭,CLKOFF=1, CLKOUT 输出禁止,保持高电平。

l SMUL 乘法溢出处理。当SMUL=1, 且OVM=1, FRCT=1 时,对MAC (乘累加)和MAS( 乘累减)指令的操作基于ETSI GSM规范,体现在在小数模式下,在进行后续加/减之前,8000Hx8000H 的结果被调整为7FFFFFFH, 这等同于在OVM=1 下MPY+ADD 指令,如果只有OVM=1, 而SMUL 不为1, 只在加/减结果后作溢出调整。

l SST 存储溢出处理。当SST=1, 累加器中数据在存储到数据空间之前进行溢出调整。影响指令有:STH ,STL, STLM, DSTST||ADD ,ST||LD ,ST||MACR[R] ,ST||MAS[R] ,ST||MPY 和ST||SUB.步骤是:

1)依据指令,累加器中数据完成左移或右移。

2)40 比特值根据SXM 位调整为32 。位SXM=0 (不符号扩展),若值大于7FFFFFFFH ,取7FFFFFFFH ;若SXM=1(符号扩展),若值大于7FFFFFFFH,取7FFFFFFFH, 若值小于80000000H, 取80000000H。

3) 调整后数据存入数据空间。

4) 在调整过程中,累加器中数据不改变。

3.3 . 4 累加器的存储操作

累加器中数据存储,AH 和AL 部分比较好办采用STH、 STL 和STLM即可完成。要存储AG 中的内容,则需要采用间接方式,如累加器A。

4. 数据寻址

C54x 提供七类寻址方式:

l立即数寻址

l绝对地址寻址

l累加器寻址

l直接寻址

l间接寻址

l内存映象寄存器寻址

l堆栈寻址

下面着重介绍以下几种方式。

4.1 绝对地址寻址

术语解释:dmad- 数据存储地址;pmad- 程序存储地址;PA -口地址;lk- 长整数。

绝对地址寻址包括四类:

l dmad 寻址

l pmad 寻址

l PA 寻址

l *(lk)寻址

4.1.1 d m a d 寻址

dmad 寻址用一标号标记数据空间地址,这类指令有:

l MVDK Smem,dmad

l MVDM dmad,MMR

l MVKD dmad,Smem

l MVMD MMR,dmad

如:MVKD SAMPLE,*AR5. 此处SAMPLE 即是dmad.

4.1.2 p m a d 寻址

pmad 寻址用一标号标记程序空间地址,这类指令有:

l FIRS Xmem,Ymem,pmad

l MACD Smem,pmad,src

l MACP Smem,pmad,src

l MVDP Smem,pmad

l MVPD pmad,Smem

如:MVPD TABLE,*AR7- 此处TABLE 即为pmad。

4.1.3 PA 寻址

PA 寻址用一标号标记外部I/O 口地址,这类指令有:

l PORTR PA,Smem

l PORTW Smem,PA

如:PORTR FIFO,*AR5 此处FIFO 即为PA.

4.1.4 *(lk) 寻址

*(lk)寻址也是用标号标记数据空间地址。

如:LD *(BUFFER),A 。使用这类指令的好处在于不用修改DP 和AR 值。但有一点要注意的是,这类指令不能用于重复执行单指令中(RPT, RPTZ)。

4.2 直接寻址

在这类指令中,指令中的地址标号构成dmad 的低7 位(DP 方式)或作为正向偏移量(SP 方式),所以指令中地址标号不得超过7。 位采用DP 或SP, 方式由ST1 中CPL 位决定。

CPL=0, 采用DP ;方式CPL=1 ,采用SP 方式。

4.2.1 DP 方式

DP 方式,DP 中内容作为dmad 地址高9 位,指令中地址标号作为低7 位构成dmad 地址。

4.2.2 SP 方式

SP 方式,以SP 中内容作为dmad 基地址,指令中地址标号作为正向偏移量,二者相加构成dmad 地址。

4.3 间接寻址

间接寻址是指dmad 由辅助寄存器AR0-AR7 内容构成。使用间接寻址的灵活性不仅在于一条指令完成读或写数据存储区(单操作数),还在于一条指令可以完成两个不同存储区的读操作,或两个不同存储区的写操作,或对两个不同位置的一读一写操作。

4.3.1 对S A R A M 的访问

对SARAM 访问使用寄存器AR0-AR7 ,其中AR0 为变址寄存器,用法见下表:

语法

功能

描述

*ARx

dmad=ARx

ARx 包含dmad

*ARx-

dmad=ARx

ARx=ARx-1

访问后,ARx 中地址内容减1

*ARx+

dmad=ARx

ARx=ARx+1

访问后ARx 中地址内容加1

*+ARx

dmad=ARx+1

ARx=ARx+1

访问前ARx 中地址内容加1

*ARx-0B

dmad=ARx

ARx=B(ARx-AR0)

访问后,ARx 中内容减去AR0 中内容,并产生反向借位翻转(用于FFT 算法)

*ARx-0

dmad=ARx

ARx=ARx-AR0

访问后,ARx 中内容减去AR0 中内容

*ARx+0

dmad=ARx

ARx=ARx+AR0

访问后,ARx 中内容减去AR0 中

内容

*ARx+0B

dmad=ARx

ARx=B(ARx+AR0)

访问后,ARx 中内容加上AR0 中内容,并产生反向进位翻转(用于FFT 算法)

*ARx-%

dmad=ARx

ARx=circ(ARx-1)

访问后,ARx 中内容按循环寻址方式减1

*ARx-0%

dmad=ARx

ARx=circ(ARx-AR0)

访问后,ARx 中内容按循环寻址方式减去AR0 中内容

*ARx+%

dmad=ARx

ARx=circ(ARx+1)

访问后,ARx 中内容按循环寻址

方式加1

*ARx+0%

dmad=ARx

ARx=circ(ARx+AR0)

访问后,ARx 中内容按循环寻址

方式加上AR0 中内容

*ARx(lk)

dmad=ARx+lk

ARx=ARx

ARx 中内容加上16 位长偏移

(lk) 为dmad ,ARx 不更新

*+ARx(lk)

dmad=ARx+lk

ARx=ARx+lk

ARx 中内容加上16 位长偏移

(lk) 为dmad, ARx 更新

*+ARx(lk)%

dmad=circ(ARx+lk)

ARx=circ(ARx+lk)

ARx 中内容按循环寻址方式加上

16 位长偏移(lk) 为dmad, ARx

更新

*(lk)

dmad=lk

16 位绝对地址寻址

循环寻址操作如下:

寄存器BK 作为循环缓存区大小(R),循环缓存区基地址的低N 位必须为0, R 和N 满足以下关系: , 末地址为基地址+R, 步进值 , 变址index 由以下算法确定:

4.3.2 对D A R A M 的访问

对DARAM 访问使用辅助寄存器AR2-AR5 用法见下表:

语法

功能

描述

*ARx

dmad=ARx

ARx 包含dmad

*ARx-

dmad=ARx

ARx=ARx-1

访问后,ARx 中地址内容减1

*ARx+

dmad=ARx

ARx=ARx+1

访问后,ARx 中地址内容加1

*ARx+0%

dmad=ARx

ARx=circ(ARx+AR0)

访问后ARx 中内容按循环寻址方式加上AR0 中内容

5. 中断系统

硬件和软件驱动都可以使C54x 产生中断软件中断,是指由程序指令引起的中断,这类指令有:INTR 、TRAP、 RESET。硬件中断可由外部硬件引发,或由片内外设内部引发,无论软件中断还是硬件中断都可分为可屏蔽中断和不可屏蔽中断。C54x 处理中断按以下三个步骤:

l接收中断请求

l响应中断

l执行中断服务程序

5.1 中断标志寄存器I F R( 以C 5 4 9 为例)

IFR 中某位为1 表明有相应中断再次写1 清除中断

5.2 中断屏蔽寄存器I M R (以C 5 4 9 为例)

要打开某个中断只需向IMR 中相应某位写1 而ST1 中INTM 位为中断总开关

5.3 中断位置与优先级(以C 5 4 9 为例)

中断号

优先级

名称

位置

功能

0

1

RS/SINTR

0

复位(软硬件)

1

2

NMI/SINT16

4

非屏蔽中断

2

-

SINT17

8

软件中断17

3

-

SINT18

C

软件中断18

4

-

SINT19

10

软件中断19

5

-

SINT20

14

软件中断20

6

-

SINT21

18

软件中断21

7

-

SINT22

1C

软件中断22

8

-

SINT23

20

软件中断23

9

-

SINT24

24

软件中断24

10

-

SINT25

28

软件中断25

11

-

SINT26

2C

软件中断26

12

-

SINT27

30

软件中断27

13

-

SINT28

34

软件中断28

14

-

SINT2

38

软件中断29

15

-

SINT30

3C

软件中断30

16

3

INT0/SINT0

40

外部中断0

17

4

INT1/SINT1

44

外部中断1

18

5

INT2/SINT2

48

外部中断2

19

6

TINT/SINT3

4C

定时器中断

20

7

BRINT0/SINT4

50

带缓存串口0 接收中断

21

8

BXINT0/SINT5

54

带缓存串口0 发送中断

22

9

TRINT/SINT6

58

TDM 串口接收中断

23

10

TXINT/SINT7

5C

TDM 串口发送中断

24

11

INT3/SINT8

60

外部中断3

25

12

HINT/SINT9

64

HPI 口中断

26

13

BRINT1/SINT10

68

带缓存串口1 接收中断

27

14

BXINT1/SINT11

6C

带缓存串口1 发送中断

28

15

BMINT0/SINT14

70

BSP0 失步检测中断

29

16

BMINT1/SINT13

74

BSP1 失步检测中断

30-31

-

78-7F

保留

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有