DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1162|回复: 0
打印 上一主题 下一主题

[待整理] DSP的高速串行外设接口设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 08:09:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 引言
      DSP(数字信号处理)的优势除了处理复杂的运算,特别适用于数字滤波、语音、视频、图象处理、通信以及高速实时测控系统中已成为现代信息处理技术的重要器件,极大地促进了信号处理和测控各个领域的学术研究、产品开发及应用。TI公司TMS320LF2407是一种专用定点DSP芯片,与以往的产品相比.最大不同就是有丰富的外设.像SCI、SPI、EV等等.在处理数据优势上添加了事务管理能力。
     其中串行外设接口(Serial Peripheral Interface)是Motorola公司提出的一种同步串行外围接口协议.主要应用在EEPROM、FLASH、实时时钟、AD转换器.还有数字处理和数字解码器之间。包括主/从2种模式,具有I/O资源占用少、协议实现简单、传输速度快、能够同时收发信息、支持绝大部分处理器芯片等优点,是一种高速的全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚.同时为PCB的布局上节约了空间,提供了方便,正是出于这种简单易用的特性,TMS320LF2407芯片也集成了这种通信协议。
2 SPI接口结构和设计原理
2.1 SPI接口结构
      该SPI设计主要有两大部分组成:微控制器接口和SPI控制接口。通过控制线、数据线、和地址线三大总线把微控制接口与SPI控制接口连接在一起,如果外部有更多的SPI接口模块。可以由SPI控制接口运用软件编程与设置,实现扩展具有SPI接口的外部设备。
     TMS320LF2407中采用的主从控制器连接通信。主控制器通过输出SPICLK信号来启动数据传送。对主控制器和从控制器.数据都是在SPICLK的一个边沿移出移位寄存器,并在相对的另一个边沿锁存到移位寄存器。如果CLOCK PHASE位是1.数据的发送和传输就要在SPICLK跳变之前的半个周期发生。主控制器可以在任一时刻启动数据发送.因为它控制着SPICLK信号。由软件决定了主控制器如何检测从控制器何时准备发送数据,以启动SPI传送数据。

图1 SPI内部结构
2.2 SPI设计原理
     SPI接口是同步串行总线的一种,在同步时钟信号SCK下,能够高速、可靠的传送数据。它分为主从(MASTER/SLAVER)两种传输模式。主模式下的发送总线即是从模式的接收总线:与之对应的是从模式下的发送总线即是主模式的接收总线。它们可以同时接收和发送数据.而且发送和接收操作可以通过中断或者查询方法来完成。
2.2.1工作时钟
     时钟极性CPOL和时钟相位CPHA控制着时钟信号引脚上4中不同的时钟方式。在设备被使能激活后.还未进行数据传输时或两个字节数据间歇期间,SCK处于空闲电平,通过时钟极性控制位可以选择此空闲电平的电平时0还是1:时钟相位控制位用来选择数据接收端设备的采样时刻。在该采样时刻,线上数据必须同时满足建立时间和保持时间两个参数,因此数据发送端设备应提前将数据移出到数据线上。
      4种不同的时钟方式能根据外设需要,能够提供相对应的传输协议来完成数据的传输工作。它们之间没有优先级.SPI线上的主从设备必须根据具体情况设置匹配的传输时序模式.时序只有匹配擞据传输才能正常进行。如果设置的不匹配.可能导致数据接收方和发送方在同一个时钟沿作用.导致数据输出失败。
     图2是CPHA=0时的数据传输时序.它同时包含了CPOL=0和CPOL=1的情况,当CPOL=O时,要传输的数据在时钟信号没有延时且上升沿出发送,在时钟信号下降沿处接收数据。当CPOL=1时,同样在没有延时的情况下传输,不同的是下降沿发送数据,上升沿接收。图3是CPHA=1时数据传输时序。与图2相似,但采样时刻延迟了半个周期。

图2 CPHA=0是SPI总线数据传输时序

图3 CPHA=1时SPI总线数据传输时序


3 SPI硬件设计
      寄存器在SPI中起着决定性的作用.无论是在微控制器接口,还是SPI控制接口,寄存器在数据传输和控制方面都是主要的组成部分。而寄存器最基本最重要的单元是触发器.只有改善触发器的结构,才能提高整个SPI接口的性能。
      有的串行接口设计中采用B结构的触发器设计,这些结构里应用的是一种简单的MOS管做开关.虽然MOS管做开关有功耗低,占面积小的优点。但要提高它的电路工作频率.开关速度,制作丁艺却是越来越困难。而且如果输入信号不强.就很可能出现信号倒流,这就需要一个较高电压来控制开关。这也不利于数据传输和降低功耗等等。
    为了解决由MOS管做开关时引起的种种难题.来实现在TMS320LF2407串行接口中的信息传递的高速率。本设计综合考虑速度、工作电压、噪声容限等因素的影响.采用了一种新颖的触发器结构(图4A部分),本文接口电路中大都采用了该触发器的电路设计,工作电压降低到3.3V,大大降低了整体功耗;在开关方面采用了三态门,有效的防止了信号倒流,实现了信号传输的稳定;添加了一个反馈信号,在需要的时候.能够把所需反馈信号再次输入;同时加快r开关速率,带负载的能力也增强。

                            图4 A、B两种触发器比较
4 RTL级设计
       随着数字系统设计的复杂性不断增加,在设计初期指定有效的设计策略对于整个设计是至关重要的。行为描述方式是对系统数学模型的描述。它包括RTL、算法级、系统级的描述。RTL是指通过描述寄存器之间数据流动来描述数字电路系统,是一个数据流的概念.寄存器与寄存器之间的数据处理由组合逻辑完成。RTL级是Verilog较高抽象层次,在这个抽象层次上,模块可以根据设计的算法来实现.而不用考虑具体的实现细节。
4.1寄存器整体电路设计
      下面是部分Verilog HDL源代码.描述了数据传输时相关寄存器的功能设置:先是对复位时各个寄存器的初始值,接下来是对寄存器进行功能设计.和数据传输时候产生的中断使能和标志位的设计。
always @ (posedge Peri_clk or posedge RESET)
begin
if(RESET)
begin
  outdb<=8’hz; SPICCR<=8’h00; SPICTL<=8’h00; SPIBBR<=8’h00; SPIPRI<=8’h00;
end
end
always @(posedge Peri_clk or posedge RESET)
begin
if(RESET)
shift_out_d<=1’b0;
else
case(1’b1)
spidat_w: SPIDAT<=PeriDB;  shifi_out_clk:shift_out_d<=SPIDAT[7];
sample_in_clk:SPIDAT[7:0]<={SPIDAT[6:0],sample in_d};
default;
endcase
end
[email=always@(posedge]always@(posedge[/email] Peri_clk or posedge RESET)
begin
if(RESET)
SPISTS<=8’h00;
else
begin
if(SW_RESET)
SPISTS[7:6]<=2’hO;
else if(int_flag_set)
begin
SPISTS[6]<=1’b1;SPIBUF<=SPIDAT;SPIEMU<=SPIDAT;
end
else if(spibuf_r)
SPISTS[6]<=1’b0;
if(overrun_flag set)
SPISTS[7]<=1’b1;
else if(sts7_clr)
SPISTS[7]<=1’b0;
end
end
4.2整体时序仿真
      将上述Verilog代码编译,再写上对应测试代码进行验证。图5是寄存器的写操作的整体时序仿真波形图.验证了上述代码正确可行。

图5写操作整体时序仿真
5 结论
      本文作者的创新点是改进了硬件触发器的结构.用三态门和传输门取代那种单一MOS管的结构。首次应用到TMS320LF2407芯片串行外设接口上,降低工作电压到3.3V,加快数据传输,而且还有相应的反馈信号,进一步完善了触发器结构。同时有很好的可移植性好。具有充分的可裁剪性,本设计运行可靠,达到预期的效果。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-28 02:29 , 耗时 0.094988 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表