基于cpld的spi通信端口的制作方法

文档序号:6386798阅读:193来源:国知局
专利名称:基于cpld的spi通信端口的制作方法
技术领域
本实用新型涉及同步串行通信技术领域,尤其涉及一种应用于实时嵌入式控制系统的SPI通信端ロ。
背景技术
目前在电气自动化控制装置中,广泛采用各种通信手段以完成上层与底层控制器、底层控制器以及控制芯片之间的信息传递,并实现相应的控制功能;各种通信功能的设计与实现已成为自动化装置设计的重要组成部分。本实用新型以ー种超声波电机运动控制装置为应用背景,给出了基于CPLD的多SPI端ロ通信技木。串行同步外设端ロ(SPI)通常也称为同步外设端ロ,具有信号线少、协议简单、传输速度快的特点,因此该端ロ被大量用在微控制器与外围执行芯片的通信中。目前SPI通信方式已被普遍接受,带有SPI端ロ的芯片越来越多,如Flash、RAM、A/D转换、LED显示、控制专用DSP芯片等。采用运动控制专用DSP芯片DSP56F801设计了一种超声波电机运动控制装置。DSP56F801芯片内含ー个SPI通信端ロ。由于该超声波电机需要采用两相四路对称PWM信号来实现驱动控制,而DSP芯片无法直接产生所需PWM信号,采用软件方法又会占用大量的DSP计算时间,于是设计了基于可编程逻辑器件(CPLD)的对称PWM信号发生器。该信号发生器在DSP的控制下,可以实现输出两相PWM控制信号的占空比及相位差调节。同时采用具有SPI接ロ的可编程振荡器LTC6903,实现在DSP控制下的PWM控制信号频率调节。由此可见,为了实现DSP对PWM控制信号占空比、相位差及频率的控制,需要采用适当的通信方式实现DSP与CPLD及LTC6903之间的控制信息传递。基于这ー需求,本实用新型在分析SPI数据传输时序关系的基础上,设计并实现了基于CPLD的多SPI接ロ通信。另外,关于CPLD实现对称PWM信号发生器以及超声波电机驱动电路等内容,可參考申请号为 201010286489. 5,201010286490. 8,200710054583. 6 等相关专利文件。

实用新型内容本实用新型的目的是提供一种基于CPLD的SPI通信接ロ,用以实现DSP与CPLD及LTC6903之间的控制信息传递问题。为实现上述目的,本实用新型的方案是一种基于CPLD的SPI通信端ロ,包括采用CPLD实现的主机SPI端ロ,以及采用CPLD实现的外设SPI端ロ,主机SPI端ロ用于连接DSP的SPI端ロ,外设SPI端ロ用于连接基于CPLD的PWM信号发生器和可编程振荡器的SPI端ロ ;所述主机SPI端ロ包括波特率发生器和主机移位寄存器,外设SPI端ロ包括外设移位寄存器和锁存器;主机移位寄存器串行通讯连接外设移位寄存器,外设移位寄存器通过锁存器,锁存器用于连接基于CPLD的PWM信号发生器,主机移位寄存器还连接所述可编程振荡器的SPI端ロ ;所述波特率发生器为所述主机移位寄存器、外设移位寄存器、所述可编程振荡器的SPI端ロ提供同步时钟信号。所述DSP 为 DSP56F801。所述可编程振荡器为LTC6903。所述主机移位寄存器和外设移位寄存器均由D触发器和计数器构成。所述锁存器包括用于分别锁存A相占空比控制字、B相占空比控制字、调相控制字3个数字量的三个锁存元件(LI、L2、L3)。SPI端ロ通信可以构建用于控制的小型高速同步通信网络,这种网络的结构简单且成本较低,可广泛应用于控制器与控制器或控制器与外围芯片之间的控制信息传递。本实用新型在对SPI端ロ通信时序进行细致分析的基础上,给出了基于CPLD的多SPI端ロ通信具体实现方法,并进行了实验验证,效果良好。

图I是多SPI端ロ通信框图;图2基于CPLD的SPI接ロ的移位寄存器;图3基于CPLD的SPI接ロ的移位寄存器(局部);图4是使能/[目号的时序图(闻电平有效);图5是进位信号的输出时序图;图6是数据选址和锁存的CPLD结构;图7是SPI传输数据波形;图8是SPI传输数据波形(加入延时)。
具体实施方式
以下结合附图对本实用新型做进ー步详细的说明。SPI是ー个同步协议接ロ,所有的传输都參照ー个共同的时钟。在同一个SPI端ロ可以实现一个主机芯片与多个从机芯片相连,这时主机通过触发从设备的片选输入引脚来选择从设备,没有被选中的从设备将不參与SPI传输。SPI主要使用4个信号主机输出/从机输入(MOSI)、主机输入/主机输出(MISO)、串行时钟信号SCLK和外设芯片选择信号(SS)。主机和外设都包含一个串行移位寄存器,主机通过向它的SPI串行移位寄存器写入一个字节来发起一次传输。寄存器是通过MOSI引脚将字节传送给从设备,从设备也将自己移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换了。外设的写操作和读操作是同步完成的,因此SPI成为ー个很有效的串行通信协议。本实用新型所设计的多SPI端ロ的通信网络,其结构如图I所示。为了使信号发生器输出可调频、调压和调相输出的两相四路PWM波,需要DSP向CPLD电路输出參数,这四个控制參数的传递是在小型的通信网络中实现。在该网络中DSP的SPI只是进行数据输出端ロ的写操作,即输出电压控制字、相位控制字和频率控制字。数据流程主机DSP向CPLD 传输数据,在传输数据时,数据在MOSI引脚上输出,同时数据在时钟信号的作用下实现同步移位输出。由于不需要从机向主机回送任何数据,主机在数据传输结束之后,结束这次传送。由于SPI端ロ工作时没有应答信号,并且数据在发送时无需校验位,所以要求主、从器件的数据发送与接收必须完全符合设定的SPI时序要求,否则数据传输将出现错误。[0025]I、移位寄存器设计本实用新型设计了ー个12位的SPI串行接收端ロ,即图I中“移位寄存器”,具体如图2所示,是由12个D触发器Dl D12和I个计数器CTl组成的,实现数据的移位接收和串并转换。为使图形清晰,图3给出了图2的局部放大图,图3中仅给出了前4个D触发器Dl D4和计数器CTl与输入信号之间的连接关系。每个D触发器都具有相似的输入信号连接关系,将图3与图2对照,容易确定其余8个D触发器D5 D12的连接关系。參看图3、图2,下面以Dl为例来说明信号连接关系。触发器Dl的数据输入端D连接移位寄存器的数据输入信号MOSI。參看图1,MOSI信号由主机(如上述,在本实用新型中,主机为DSP)发出,是长度为16位的串行传输数据,其最高位为Bitl5,最低位为BitO。数据传输吋,MOSI串行数据信号的传输顺序是,先高位、后低位;即,最先传送的是最高位Bitl5,随后依次为Bitl4、Bitl3等,最后是最低位BitO。触发器Dl的数据输出端Q作为移位寄存器的一个输出信号q0,同时,连接到下一个触发器D2的数据输入端D,作为D2的输入数据信号。依次类推,触发器D2的数据输出端Q提供移位寄存器的一个输出信号ql,同时,连接到下一个触发器D3的数据输入端D,等等,直到触发器Dll的数据输出端Q提供输出信号qlO,并连接到最后ー个触发器D12的数据输入端D,而触发器D12的数据输出端Q直接作为移位寄存器的一个输出信号qll,不再连接到其它触发器。这样,12个D触发器Dl D12的12个数据输出端,给出了移位寄存器的12个输出信号q0 qll。再看触发器的其它信号连接关系。所有12个触发器的时钟信号输入端(图2、图3中,触发器符号左侧居中位置的“ロ”所示)都与来自主机的时钟信号SCLK连接。时钟信号SCLK与MOSI串行数据信号相对应。SCLK变化ー个周期,MOSI传送一位数据。所有12个触发器的使能输入端ENA(高电平有效)、清零输入端CLRN(低电平有效)都与移位寄存器的输入信号ENb相连。输入信号ENb是数据传送的使能信号,图4表明了 ENb (图4下端ch2信号)与SCLK信号(图4上端chi信号)之间的时序关系。如图4所示,当MOSI需要开始传送数据时,ENb先变为高电平;这样,按照上述触发器使能信号的连接关系,所有12个触发器都被使能,准备好接收数据。当MOSI数据传送完毕一段时间之后,ENb变为低电平,所有12个触发器的清零输入端均输入低电平,触发器输出被清零,准备好进行下一次数据传输。计数器CTl为16进制计数器,其使能输入端ENl连接ENb,计数时钟输入端CLK连接SCLK,输出为信号ql2,用作下文所述锁存器的锁存使能输入信号。计数器CTl对输入时钟信号SCLK进行计数,采用上升沿计数方式。在第16个时钟信号上升沿到来时,也就是MOSI的16位数据传送完毕的时刻,输出ql2跳变为高电平,使下文所述锁存器开始锁存,从而保证数据的正确接收和锁存。图5表明了 ql2(图5下端ch2信号)与SCLK信号(图5上端chi信号)之间的时序关系。数据传输的具体过程为在传输数据之前,移位寄存器中12个触发器、计数器CTl的初始状态均为“清零”状态,12个输出信号q0 qll均为O ;计数器CTl的计算值为0,输出ql2也为O。为启动一次16位数据的传输过程,ENb先变为高电平,使能12个D触发器和计数器CT1。随后,MOSI信号开始串行传送数据,传送顺序是先高位后低位;同时,与MOSI信号同步的SCLK信号开始出现高、低变化的时钟信号。[0032]在时钟信号SCLK的第一个周期结束时刻,MOSI信号也同时完成了第一位串行数据(即,待传送的16位数据中的最高位Bitl5)的传送。这时,触发器Dl的输出信号qO等于Bitl5 ;触发器D2的输出信号ql等于前ー时刻的q0,即初始的“O”;其后的触发器D3 D12的输出信号q2 qll亦均为O。同时,计数器CTl的计数值加1,0+1 = 1,输出ql2为
O0如此类推,在时钟信号SCLK的第十二个周期结束时刻,触发器Dl D12的输出信号qO qll依次为MOSI输入16位信号的Bit4 Bitl5位。计数器CTl的计数值为12,输出ql2为O。在时钟信号SCLK的第十三个周期结束时刻,触发器DI D12的输出信号qO qll依次为MOSI输入16位信号的Bit3 Bitl4位。S卩,由MOSI输入的最高位Bitl5被舍弃。在时钟信号SCLK的第十六个周期结束时刻,触发器DI D12的输出信号qO qll依次为MOSI输入16位信号的BitO Bitll位。由MOSI输入的最高四位Bitl2 Bitl5被舍弃。同时,计数器CTl的计数值为16,输出ql2跳变为高电平,如图5所示。至此,一次数据传输结束,MOSI串行输入的16位信号的低12位,即BitO Bitll,被转换为qO qll的并行输出信号,实现了“串并转换”。随后,在下文所述锁存器对qO qll数据锁存后,ENb变为低电平,所有12个触发器的清零输入端均输入低电平,触发器输出被清零,准备好进行下一次数据传输。应指出的是,本设计只需要传输数据中的低12位,故设计为12个D触发器,并将高4位数据舍去。若需要全部16位数据,只需在图2所示电路中再添加4个D触发器即可,电路结构不变。同样,若需实现I 16位的任意位数的数据传输,只需增、减图2所示电路中的D触发器个数,使之与期望传输的数据位数相等即可。2、锁存器设计如图I结构框图所示,锁存器位于上述移位寄存器之后,用来在表征“数据已经准备好,可以锁存”的信号ql2的控制下,对移位寄存器的输出数据qO qll进行锁存操作。最简单的情况下,锁存器的设计,只需要将ql2连接到一个锁存器的锁存使能输入端,再将qO qll连接到锁存器的数据输入端就可以了。当ql2变为高电平时,使能有效,锁存器对qO qll进行锁存,于是,锁存器输出与qO qll相同。但是,如前所述,本设计需要利用这ー个SPI串行数据传输通道,实现DSP对PWM信号的占空比、相位差的控制,其中,占空比又分为A相、B相两个不同的占空比数值。即,需要传输A相占空比控制字、B相占空比控制字、调相控制字等3个不同的数据信息。这样,为了区分这3个不同的数据信息,设置SPI串行传送数据的低两位(即上述移位寄存器输出的ql、q0)为地址选择位,并定义如下低两位ql、q0是“11”时,上述移位寄存器输出的q2 qll是10位的调相控制字;当低两位ql、q0是“01”吋,q2 qlO是用来调节A相占空比的9位A相占空比控制字;当低两位ql、q0是“10”时,q2 qlO是用来调节B相占空比的9位B相占空比控制字。为实现上述这样的3种不同数据的选择与分别锁存,设计了图6所示的锁存器电路。图6中,三个3输入的与门A1、A2、A3和两个非门NI、N2,用来实现数据选择操作,其输入都是ql2、ql、qO。三个与门Al、A2、A3的输出信号分别连接到对应的锁存器LI、L2、L3的锁存使能输入端gate。当gate输入信号为高电平时,对输入数据进行锁存。[0043]三个锁存器LI、L2、L3依次用来锁存上述3个不同的数据信息10位的调相控制字、9位的A相占空比控制字、9位的B相占空比控制字。因而,三个锁存器LI、L2、L3的输入数据端data口分别连接q2 qll(图6所示q[11..2])、q2 qlO(图6所示q[10. .2])、q2 qlO (图 6 所示 q [10. . 2])。而其输出,分别被称为 P [9. . O]、ra [8. . O]、rb [8. · O]。应指出的是,根据不同应用场合所需传输数据种类、位数等的不同,只需对上述设计略加修改即可。3、DSP 与 LTC6903 的接 ロ 配置由于LTC6903芯片本身具有SPI接ロ,在设计中需要在DSP的程序中设置相应的SPI寄存器,LTC6903采用上升沿接收,且接收时高位在前。所以需要DSP设置为下降沿传输,传输时高位在前。在传输的过程中数据,在脉冲信号的下降沿时间数据发生变化,传输数据;在脉冲信号的上升沿数据稳定,便于LTC6903锁存数据。传输时序如图7所示,从图 中可以看出所要传输的数据是十六进制数019A,下降沿数据发生变化,上升沿数据稳定,传输16位数据,有16个脉冲。实验结果表明,DSP的配置是与LTC6903的SPI接ロ工作时序相匹配的。SPI端口数据传输中,主设备的时钟信号出现与否决定数据传输的开始。一旦检测到时钟信号即开始传输,时钟信号无效后传输结束,这期间从设备必须被使能。时钟信号的起停状态很重要。DSP56F801的SPI端ロ的时钟起停状态如表I所示,在设计中设置的SPI控制寄存器的CPOL和CPLA位是“11”。SCLK空闲时为高电平,传输中数据变化发生在下降沿,稳定在上升沿。表I时钟信号的起停状态和数据传输格式
I'H )I. (.Ti.Λ :22.. 7 ミ‘—:.'· ;::'r—-.、
Iミsi I k·: Γ ." -r. ノ; .ニパ-パ.-..:-ノ.へ..… パ…、/.. Π.
I· 'V- I_______ j ,、 ·, · . * >. _._ V ------ ----- * —一… .い.
I ;S(...L.1\ Lゴ、j -;;;'-.し:':ノi: .-::·でニノに、と.,..
NISU.k ハ'!:ジ;...V—..父、T;:キ— .ぐ· U'
I I· Si k ..'くへ! ... ....、 'Vソニ. 、 ;- '/, -i
1...I . IN . . i. > ■-、- -、一、.-,,--SPI端ロ协议要求系统上电复位后,从机先于主机开始工作。如果从机在主机之后开始工作,就有可能丢掉部分时钟信号,使得从机并不是从数据的第一位开始接收,造成数据流的不同歩。可通过硬件延时或软件延时的方法,来确保从机先于主机工作。在本次设计采用软件延时的办法来实现数据流的同歩。这个延时有两部分组成一部分就是DSP串行输出数据的时间延时,另外一部分就是后续数字电路中的延时。关于延时的具体计算过程如下在数据传输时使用的时钟信号是对总线时钟的2分频。当DSP的主频是60MHz吋,总线时钟是30MHz,对它进行2分频,则可以计算出SCLK的周期是66. 6ns,实验测出的周期是78. 2ns。另外通过测试测得PWM电路的延时最长时间是23. 6ns,锁存器的最大延时是
7.6ns,移位寄存器的最大延时是3. Ons0由这些对CPLD数字电路的延时和对SCLK周期的测试,可以得到这样ー个结论若设PWM电路的延时时间Tl、锁存器的延时时间T2、移位寄存器的延时时间T3、SCLK的时钟周期是Tc,则在SPI传输的过程中整个电路的延时T可以这样计算 T = T1+T2+ (Tc+T3) X 16 = 23. 6+7. 6+ (78. 2+3. O) X 16 = 1330. 4ns ^ I. 33 μ s由于数字电路传输中存在这样的延时,所以在写DSP程序时,需要加入一定的延吋。这里,加入的延时是2μ S,如图8所示,可以实现可靠传输。本设计采用全数字结构,易于用CPLD实现。以CPLD芯片ΕΡΜ7256为目标芯片,实现了上述SPI通信端ロ。实验结果表明,參数传输正确,波形良好。SPI通信方式具有硬件连接简单、使用方便等优点,应用广泛。采取硬件和软件相结合的措施,可以确保SPI通信中数据流的同歩,实现可靠通信。本实用新型给出了 DSP多SPl端ロ通信的设计与实现过程。本实用新型给出的SPI多端ロ通信方法基于CPLD实现,易移植,易于实现功能扩展,可广泛应用于各种采用SPI通信方式的自动化装置。·
权利要求1.一种基于CPLD的SPI通信端ロ,其特征在于,包括采用CPLD实现的主机SPI端ロ,以及采用CPLD实现的外设SPI端ロ,主机SPI端ロ用于连接DSP的SPI端ロ,外设SPI端ロ用于连接基于CPLD的PWM信号发生器和可编程振荡器的SPI端ロ ;所述主机SPI端ロ包括波特率发生器和主机移位寄存器,外设SPI端ロ包括外设移位寄存器和锁存器;主机移位寄存器串行通讯连接外设移位寄存器,外设移位寄存器通过锁存器,锁存器用于连接基于CPLD的PWM信号发生器,主机移位寄存器还连接所述可编程振荡器的SPI端ロ ;所述波特率发生器为所述主机移位寄存器、外设移位寄存器、所述可编程振荡器的SPI端ロ提供同步时钟信号。
2.根据权利要求I所述的ー种基于CPLD的SPI通信端ロ,其特征在于,所述DSP为DSP56F801。
3.根据权利要求I或2所述的ー种基于CPLD的SPI通信端ロ,其特征在于,所述可编程振荡器为LTC6903。
4.根据权利要求I所述的ー种基于CPLD的SPI通信端ロ,其特征在于,所述主机移位寄存器和外设移位寄存器均由D触发器和计数器构成。
5.根据权利要求I所述的ー种基于CPLD的SPI通信端ロ,其特征在于,所述锁存器包括用于分别锁存A相占空比控制字、B相占空比控制字、调相控制字3个数字量的三个锁存元件。
专利摘要本实用新型涉及一种基于CPLD的SPI通信接口,用以实现DSP与CPLD及其它芯片之间的信息传递。包括采用CPLD实现的主机SPI端口,以及采用CPLD实现的外设SPI端口,主机SPI端口用于连接DSP的SPI端口,外设SPI端口用于连接基于CPLD的PWM信号发生器和可编程振荡器的SPI端口。采取硬件和软件相结合的措施,可以确保SPI通信中数据流的同步,实现可靠通信。本实用新型给出的SPI多端口通信方法基于CPLD实现,易移植,易于实现功能扩展,可广泛应用于各种采用SPI通信方式的自动化装置。
文档编号G06F13/38GK202453878SQ20122001325
公开日2012年9月26日 申请日期2012年1月12日 优先权日2012年1月12日
发明者刘博 , 史敬灼, 姚春丽, 徐迎曦, 王晓节 申请人:河南科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1