APP下载

高速同步串行接口的设计与实现

2012-11-30雷淑岚薛忠杰

计算机工程与设计 2012年4期
关键词:波特率寄存器移位

雷淑岚,薛忠杰,2

(1.江南大学 物联网学院,江苏 无锡214122;2.中国电子科技集团公司第58研究所,江苏 无锡214061)

0 引 言

近年来,DSP发展迅速,特别是集成了各种功能外设的DSP芯片的广泛应用,对DSP通信接口的性能要求也越来越高。串行接口可以划分为同步串行接口和异步串行接口,同步串行接口的基本协议相对比较简单,易于实现。现有的同步串行接口的传输速率不高,且不够灵活,应用范围不广泛[1]。

为了提高传输速率,增强兼容性,高速同步串行接口支持全双工和半双工同步通信,通信速率、通信数据宽度、时钟极性、时钟相位和数据移位方向均可配置,从而能够和与串行外设接口 (SPI)兼容的器件或使用其他同步串口的器件进行通信。主要应用在DSP处理器和外设之间的通信,采用主/从模式也可以应用在多处理器间的通信。

1 高速同步串口的设计

1.1 整体架构设计

SSC接口分为5个部分[2]:寄存器配置模块,时钟产生模块,数据缓冲寄存器模块,移位控制逻辑模块,中断控制模块,其整体架构如图1所示。

CPU通过总线时钟bus_clk_i、复位信号bus_reset_n_i、地址线bus_a_i、数据线bus_d_i和bus_d_o完成对寄存器的初始化及控制,数据读写和状态监控。寄存器配置单元通过对寄存器的读写实现SSC接口的可配置。在时钟产生模块中,总线时钟通过分频与外设的高速、低速时钟匹配,时钟极性和时钟相位的可配置,使SSC接口能够与多种同步串口通信,ssc_sh_clk_o为主模式下的时钟输出,ssc_sh_clk_i为从模式下的时钟输入。移位控制逻辑模块按照规定的时序逻辑,将待发送的并行数据转换成串行数据通过ssc_ms_out_o或ssc_sl_out_o发送出去,将通过ssc_ms_in_i或ssc_sl_in_i采样到的串行数据转换成并行数据送入接收缓冲寄存器。利用数据缓冲寄存器实现数据发送和接收过程中的双缓冲。中断控制单元处理SSC接口的中断源,ssc_t_irq_o是发送开始中断请求,ssc_r_irq_o是发送结束中断请求,ssc_e_irq_o是数据传输出错中断请求。信号ssc_slsi_i[7:1]和ssc_slso_o[7:0]是SSC接口从模式输入选择线和从设备选择线,在从模式下,SSC接口通过ssc_slsi_i[7:1]被主设备选中;在主模式下,SSC接口通过ssc_slso_o[7:0]选中一个或多个从设备,实现和多个从设备通信。

图1 SSC接口整体架构

1.2 模块的结构设计

1.2.1 寄存器配置单元

寄存器配置单元主要利用多参数进行设置,对整个SSC接口实现可配置。寄存器主要包括控制寄存器(CON)、状态寄存器 (STAT)、波特率定时/重载寄存器(BR)、从设备选择寄存器 (SLSO)、从模式输入选择寄存器[3](SLSIS)。

控制寄存器中CON.PH、CON.PO的不同组合可以设置4种不同的时钟方式;CON.MS选择主/从模式;CON.EN选择SSC接口是否使能,SSC只有在被使能时才能传输数据;CON.HB选择数据传输时先传输低位还是先传输高位;CON.BM [3:0]配置不同的数据宽度,范围从0001B-1111B(2到16位)15种不同的选择;CON.LB选择SSC工作在全双工模式还是半双工模式;CON.TEN、CON.REN、CON.PEN、CON.BEN分别是SSC接口发送出错、接收出错、相位出错和波特率出错的使能位,为0时,表示该出错中断被禁止,为1时,表示该出错中断被使能。在本设计中,通过添加PO、PH、HB、BM、LB等参数,实现SSC接口的可配置,增强兼容性,使SSC接口适用于不同的应用场合。

状态寄存器中STAT.BSY为0时表示空闲,为1时表示正在进行数据传输;STAT.TE、STAT.RE、STAT.PE、STAT.BE分别是SSC接口发送出错、接收出错、相位出错和波特率出错的标志位,当检测到错误时,对应的标志位被置1。

通过波特率定时/重载寄存器产生不同的波特率。

从设备选择寄存器SLSO是SSC作为主设备时对从设备的选择。当SLSO [7:0]中SLSOn置1时,对应的信号ssc_slso_o[n]有效,即选中相对应的从设备。

从模式输入选择寄存器SLSIS是SSC作为从设备时输入线的选择。在从模式下,SSC有7种从输入选择,SLSIS[2:0]为初始值000B时,说明SSC没有从模式输入线选择功能,此时的SSC只能作为唯一的从设备与主设备通信。当SLSIS[2:0]的值为0001B到1111B时,SSC作为从设备,选中相应的从模式输入选择线,当主设备使该从模式选择线有效时,就可以与该SSC进行通信。

1.2.2 时钟产生单元

时钟产生单元[4]如图2所示,fSSC是总线时钟频率,fSCLK是通过波特率产生器对fSSC分频得到的SSC的工作频率。

图2 时钟产生单元内部结构

时钟极性PO和时钟相位PH控制着4种不同的时钟方式,通过PH和PO的控制,检测出主/从模式下时钟边沿的有效信号,控制数据传送和采集时刻的时钟边沿。shift_clock[1:0]是SSC的数据转移时钟,是移位控制逻辑模块的输入,其高位是移位时钟的标志,低位是锁存时钟的标志。

波特率产生器采用的是结构简单、易于实现的偶数分频[5],利用图3中的16位的减法计数器实现。16位可配置重载寄存器 (BR)具有双重功能,作为波特率定时或可配置重载寄存器。

图3 波特率产生器

当SSC使能时,读取BR的值并存储到16位计数器,计数器进行递减计数到零时,产生重新读取BR的请求,接下来继续读取BR的值;当SSC被禁止时,可以重新配置BR,写入重载值。

如果已知重载值为BR_value,则波特率可以通过式(1)计算

当总线接口时钟频率fssc=150MHz时,主模式下,BR_value的值为0000h-FFFFh,波特率的范围可由75.0Mbit/s到 1.14Kbit/s,从模式下BR _value的 值 为0001h-FFFFh,波特率的范围可由37.5Mbit/s到1.14Kbit/s。

PH和PO的控制使SSC接口可以和不同的同步串行接口之间完成数据的发送和接收。用一个特定的移位时钟沿(上升或下降)移出数据,同时用另一个时钟沿锁存接收到的数据。具体配置如图4所示[6]。

图4 时钟极性和时钟相位选择

时钟极性PO控制着空闲时钟的电平是1还是0,时钟相位PH控制着数据收发时的时钟边沿。时钟极性和时钟相位的可配置,使SSC能够根据需要完成与不同传输协议的器件间的通信,只要相互通信的器件之间设置合适的时序方式,就能保证正常通信。

1.2.3 数据缓冲寄存器和移位控制逻辑模块

如图5所示[7]:TB是发送缓冲寄存器,RB是接收缓冲寄存器。CON.HB选择数据移位方向,为 ‘0’时选择LSB,表明先传输低位;为 ‘1’时选择MSB,表明先传输高位。先传输LSB,可使SSC接口和同步模式下的SSC器件通信,或与8051的串行接口通信;先传输MSB,可使SSC接口和与SPI接口兼容的器件通信。

图5 数据传输通路

移位控制逻辑模块包含在主/从两种模式下数据的收发过程,通过控制寄存器CON.MS位的选择,同一时间只会在一种模式下工作。

SSC数据的发送和接收被同步,所以接收到的数据和发送的数据位数相同。移位控制逻辑模块将数据发送和数据接收的时刻设为不同的时钟沿,保证了传输数据的正确性。发送行为和接收行为相互交替,每个行为发送或接收一位数据。在移位时钟shift_clock[1:0]高位移位时钟标志有效的下一个时钟沿发送数据,在shift_clock[1:0]低位锁存时钟标志有效的下一个时钟沿接收数据。

移位控制逻辑采用状态机实现[8],主要有s_shift_init、s_tr_shift、s_again、s_end_mm、s_end_sm这5个状态,其状态转换图如图6所示。

图6 数据传输的有限状态机

其中各个状态及相互之间的转换如下[9]:

s_shift_init:空闲状态。初始化收发移位计数器,并不断检测发送缓冲寄存器TB中是否有数据写入,当检测到有数据写入时,移位寄存器一空就将这个数据移入,接下来转入s_tr_shift状态;没有数据写入,则继续在s_shift_init状态。

s_tr_shift:数据收发状态。根据选择的数据移位方向,在移位时钟沿有效时,移位寄存器的最高/低位通过data_out发送后,移位寄存器左/右移一位,在下一个时钟沿即锁存时钟有效时,接收的数据从data_in输入,填充到移位寄存器的最低/高位,并判断数据位是否已收发完。若没有,则状态机再次进入本状态执行下一位数据的收发;当收发完成时,如果待发送的数据没有准备好,则根据主/从模式的选择进入s_end_mm状态或s_end_sm状态;如果待发送的数据已写入发送缓冲寄存器TB,则转入s_again状态。

s_again:连续传输数据状态。把发送缓冲寄存器TB中的数据复制到移位寄存器,重新载入收发数据宽度的值到移位计数器,状态机进入s_tr_shift状态完成此次数据的收发。

s_end_mm:在主模式下,结束此次数据传输,进入s_shift_init状态等待下一次收发数据。

s_end_sm:在从模式下,结束收发数据,接下来,状态机转入s_shift_init状态。

把主模式下和从模式下的数据发送和接收的有限状态机整合成一个状态机来实现,使得SSC接口结构更加简单和使用更加灵活。

1.2.4 中断控制单元

SSC接口能够检测4种数据传输过程中出错的情况,如图7所示。在主模式和从模式下均能够检测接收出错[10]和相位出错,发送出错[10]和波特率出错的检测只适用于工作在从模式下。当检测到错误时,且控制寄存器中对应的出错使能位有效,对应的出错标志位会被置位,并激活出错中断请求线ssc_e_irq_o。

图7 SSC接口的检错机制

通过检测状态寄存器中的出错标志位确定出错中断请求 产 生 的 原 因, 出 错 标 志 STAT.TE、STAT.RE、STAT.PE、STAT.BE在进入出错中断服务程序时不能自动复位,中断响应后必须由软件清0。

本设计的SSC接口共有6个中断源,如表1所示。发送开始和发送结束中断请求在主模式和从模式下均可产生。

表1 SSC接口中断源

2 功能仿真与性能分析

2.1 功能仿真

如图8所示,通过SSC主从模式的选择实现系统之间的通信[1,12],SSC接口作为主设备时,通过从设备选择线ssc_slso_o[7:0]的选择可以同时和8个从设备通信。

用Mentor公司的 Modelsim仿真工具进行功能仿真[13],图9是一个SSC_Master和一个SSC_Slave进行通信,其中SSC_Slave的初始值默认从设备没有输入选择功能。图10是一个SSC_Master和两个SSC_Slave进行通信,通过使从设备选择线ssc_slso_o[1]有效,ssc_slso_o[2]无效,则SSC_Master只能和SSC_Slave1进行通信。

ssc_ms_en_n_o是SSC接口的主从选择标志,为0表示SSC作为主设备,为1表示SSC作为从设备,ssc_en_o是SSC的使能标志,高电平有效。主设备和从设备在全双工的模式下完成数据传输过程。

在从模式下,SSC的工作时钟频率不能大于总线时钟的1/4。在初始化过程中,SSC的主设备实现总线时钟的四分频,产生时钟信号,并作为从设备的时钟输入,主设备和从设备的时钟极性PO和时钟相位PH配置相同,其值都为0,即在ssc_sh_clk上升沿转移数据,并选择数据宽度为8位,从低位开始传输,并使能所有中断请求。

在系统1中,主设备待发送的数据是e9H,在系统2中,从设备待发送的数据是caH。在SSC使能后,ssc_sh_clk的第一个上升沿开始传送数据,第一个下降沿开始锁存数据,待8位数据都收发完毕后,主设备的接收缓冲寄存器中的值为caH,从设备的接收缓冲寄存器中的值为e9H,说明SSC主从两种模式下收发数据的正确。发送开始中断请求ssc_t_irq_o在第一位数据开始发送后高电平有效,此时TB可重新载入新的数据,结束中断请求ssc_r_irq_o在数据传送过程结束后高电平有效,此时数据已发送完成并移入RB,出错中断请求ssc_e_irq_o在数据传送过程中一直无效,说明数据收发完全正确。

SSC可以实现多系统之间的通信,如图10所示,图中数据传输过程和图9中的类似。SSC_Master通过从设备选择寄存器SLSO控制从设备选择线ssc_slso_o[n]低电平有效。SSC_Slave1和SSC_Slave2都选择ssc_slsi_i[1]为从模式输入选择线。当ssc_slso_o[1]低电平有效,SSC_Slave1的ssc_slsi_i[1]为低电平有效,则SSC_Master选中SSC_Slave1,完成数据传输。由于ssc_slso_o[2]无效,没有选中SSC_Slave2,则SSC_Slave2接收不到主设备发送的数据,在接收缓冲寄存器中的值为初始值00H。当数据收发结束后,所有的ssc_slso_o、ssc_slsi_i被置高电平,可重新选择从设备进行通信。

2.2 综合结果与性能分析

该SSC接口采用TSMC 65nm工艺库,用Synopsys公司的Design Compiler进行综合,综合时钟为150MHz时,数据传输速率可达75Mbit/s,面积为11868um2,通过插入clock gating,进一步降低功耗[14],功耗仅为416.8uW。

高速外设总线SPI总线典型的数据传输时钟是1.0MHz到70.0MHz,数据传输速率为8.75Mbit/s[15],而本设计中使用先进的工艺,在总线时钟和数据传输速率上都有很大幅度的提高,面积和功耗得到有效降低。

3 结束语

本文完成高速同步串行接口的设计,通过寄存器配置单元实现SSC接口的可配置,使用更加灵活。通过功能验证可知,该SSC接口能正确收发数据,且总线时钟为150MHz,在主模式下,数据传输速率高达75Mbit/s,功耗为416.8uW,实现低功耗。由于多参数的设置,SSC接口不但可以和兼容SPI模式的接口通信,还可以和使用其他同步接口的器件通信,应用范围更加广泛。该同步串行接口已应用到了32位高速DSP中。

[1]Leens F.An introduction to I2Cand SPI protocols[J].IEEE Instrumentation & Measurement Magazine,2009,12 (1):8-13.

[2]CHEN Xi,HUANG Yi.SoC design and source code analysis[M].Beijing:Electronics Industry Press,2008:248-253 (in Chinese). [陈曦,黄毅.片上系统设计思想与源代码分析[M].北京:电子工业出版社,2008:248-253.]

[3]Simon Srot,SPI master core specification [DB/OL].http://www.opencores.org,Rev.0.6,2007.

[4]Oudjida A K,Berrandjia M L,Liacha A,et al.Design and test of general-purpose SPI Msater/Slave IPs on OPB bus [C].7th International Multi-Conference on Systems Signals and Devices,2010:1-6.

[5]XU Haiming.DSP IC design and research-high-speed synchronous serial peripheral interface[D].Wuxi:Jiangnan University,2009:36-41 (in Chinese).[徐海铭.DSP集成电Z路设计与研究——高速同步串行外设接口 [D].无锡:江南大学,2009:36-41.]

[6]Akos Szekacs,Tibor Szakall,Zoltan Hegykozi.Realising the SPI communication in a multiprocessor system [C].5th International Symposium on Intelligent Systems and Informatics,2007:213-216.

[7]LI Yuefeng.Based on verilog+ HDL design and implementation of SPI reusable IP core[D].Chengdu:Southwest Jiaotong University,2008:23-48 (in Chinese).[李跃峰.基于 Verilog+HDL的SPI可复用IP核的设计与实现 [D].成都:西南交通大学,2008:23-48.]

[8]LIU Bo.Verilog HDL language programming proficiency [M].Beijing:Electronics Industry Press,2007:190-200 (in Chinese).[刘波.精通Verilog HDL语言编程 [M].北京:电子工业出版社,2007:190-200.]

[9]ZHAO Jie.Based on AMBA bus implementation and verification of SPI IP core [D].Hefei:University of Science and Technology of China,2009:36-39 (in Chinese). [赵杰.基于 AMBA总线的SPI协议IP核的实现与验证 [D].合肥:中国科学技术大学,2009:36-39.]

[10]Oudjida A K,Berrandjia M L,Liacha A,et al.FPGA implementation of I2C&SPI protocols:A comparative study [C].16th IEEE International Conference on Electronics Circuits and Systems,2009:507-510.

[11]TI. MSP430x5xx/MSP430x6xx family user’s guide [DB/OL].http://www.ti.com.cn,2010.

[12]SU Kuifeng,LV Qiang.The principle and development of TMS320F2812[M].Beijing:Electronics Industry Press,2005:124-134 (in Chinese). [苏奎峰,吕强.TMS320F2812原理与开发 [M].北京:电子工业出版社,2005:124-134.]

[13]ZENG Lieguang,JIN Depeng.Application specific integrated circuit design [M].Wuhan:Huazhong University of Science Press,2008:141-164(in Chinese).[曾烈光,金德鹏.专用集成电路设计 [M].武汉:华中科技大学出版社,2008:141-164.]

[14]YU Xiqing.ASIC design practical course [M].Hangzhou:Zhejiang University Press,2007:252-261 (in Chinese). [虞希清.专用集成电路设计实用教程 [M].杭州:浙江大学出版社,2007:252-261.]

[15]Dale Johnson.Implementing serial bus interfaces using general purpose digital instrumentation [J].IEEE Instrumentation &Measurement Magazine,2010,13 (4):8-13.

猜你喜欢

波特率寄存器移位
CAN 总线波特率自适应程序设计
Lite寄存器模型的设计与实现
再生核移位勒让德基函数法求解分数阶微分方程
大型总段船坞建造、移位、定位工艺技术
Σ(X)上权移位算子的不变分布混沌性
基于FPGA的异步串行通信波特率容错设计
分簇结构向量寄存器分配策略研究*
多指离断手指移位再植拇指25例
C*Core芯片SCI串口波特率容限优化
高速数模转换器AD9779/AD9788的应用