- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 TMS320C54x的引脚功能、流水线 结构和外部总结结构 5.1 TMS320C54x的引脚和信号说明 TMS320C54x DSP基本上都采用超薄的塑料或陶瓷四方扁平封装(TQFP),也有其他封装形式。图5-1所示是TMS320C541的引脚图。本节重点描述TMS320C541芯片的引脚功能。 图5-1 TMS320C541的引脚图 1.地址、数据总线及其控制信号 A15~A0:16位地址总线,用于对片外数据、程序存储器及I/O进行寻址。 D15~D0:16位数据总线,在CPU内核、片外数据、程序存储器或I/O器件之间传送数据。 3.多处理器信号 :控制分支转移的输入信号。 XF:外部标志输出端(软件可控信号),可用于指示DSP状态和同其他CPU握手。 4.振荡器及定时信号 CLKOUT、TOUT:主时钟输出信号、定时器输出信号。 CLKMD1~CLKMD3:3个外部/内部时钟工作方式输入信号,可以预置DSP的时钟比。 X2/CLKIN、X1:晶振到内部振荡器的输入引脚、内部振荡器到外部晶振的输出引脚。 6.串口信号 CLKR0、CLKR1:接收时钟。 CLKX0、CLKX1:发送时钟。 DR0、DR1:串行口数据接收端。 DX0、DX1:串行口数据发送端。 FSR0、FSR1:用于接收输入的帧同步脉冲。 FSX0、FSX1:用于发送的帧同步脉冲。 7.电源信号 CVDD、DVDD、VSS:CPU内核电源电压、I/O引脚的电源电压、器件地。 8.IEEE 1149.1测试引脚 TCK:测试时钟。 TMS:测试方式选择端。 :测试复位信号。 TDI、TDO:测试数据输入/输出端。 EMU0、EMU1/ :仿真器中断0引脚、仿真器中断1引脚/关断所有的输出端。 以上各类信号中,凡是输出信号,如果设计系统时不用,引脚可空着;凡是输入信号,如果不用,则会受外界干扰,电平下拉,引起非可屏蔽中断,因此,要将信号通过电阻(10 kΩ)接+5V。 5.2 流?水?线?结?构 1.流水线概述 指令流水线包括执行指令时发生的一系列总线操作。 TMS320C54x的流水线有6个独立的阶段:程序预取指、取指、指令译码、寻址、读和执行指令。图5-2说明了对于单字、单周期指令,在没有等待状态情况下6级流水线的操作。 图5-2 6级流水线的操作 这6级流水线的功能如下: 预取指(Prefetch):将所要取指令字的地址放在程序地址总线(PAB)上。 取指(Fetch):从程序总线(PB)上取指令字,并装入指令寄存器(IR)。 译码(Decode):对IR中的内容进行译码,产生执行指令所需要的一系列控制信号。 寻址(Access):数据地址产生单元(DAGEN)在数据地址总线(DAB)上输出读操作数的地址。如果还需要第二个操作数,则在另一个数据地址总线(CAB)上也装入适当的地址,同时更新间接寻址方式中的辅助寄存器和堆栈指针(SP)。 读(Read):从数据总线(DB)和控制总线(CB)上读操作数。 执行(Execute):向数据总线(EB)上写数据。 6条单字、单周期指令的流水线操作如图5-3所示。 图5-3 6条指令的流水线的操作 流水线在程序产生调用、跳转和中断时会产生清除,通过延迟操作可将浪费掉的周期利用起来。延迟操作指令后面只有2个字的空隙,因此,不能在此空隙中安排任何一类分支转移指令或重复指令,在CALLD或RETD的空隙中也不能安排PUSH或POP指令。在调试延迟型指令时,直观性稍差一些,因此希望在大多数情况下还是采用非延迟型指令。 2.双寻址存储器和流水线 下列情况下访问DARAM时不会带来时序上的冲突: ? 在单周期内允许同时访问DARAM的不同块。 ? 当流水线中的一条指令访问某一存储器块时,允许流水线中处于同一级的另一条指令访问另一个存储器块。 ? 允许处于流水线不同级上的两条指令同时访问同一个存储器块。 在单周期内允许CPU对DARAM访问两次,第一次访问是在前半周期,再次访问是在后半周期。访问DARAM块的情况如表5-1所示。 由于两种类型的访问都要按时进行,而每半个周期仅能执行一次访问,因此有可能会发生时序上的冲突。例如,同时从同一存储器块中取指和取操作数(都在前半周期),或者同时对同一存储器块进行写操作和读(第二个数)操作(都在后半周期),都会造成时序上的冲突。CPU可以通过重新排列访问次序,或者将写操作延迟一个周期,又或者通过插入
文档评论(0)