CN109656850A - 采用单片cpld扩展的dsp串口通信电路 - Google Patents
采用单片cpld扩展的dsp串口通信电路 Download PDFInfo
- Publication number
- CN109656850A CN109656850A CN201811344444.1A CN201811344444A CN109656850A CN 109656850 A CN109656850 A CN 109656850A CN 201811344444 A CN201811344444 A CN 201811344444A CN 109656850 A CN109656850 A CN 109656850A
- Authority
- CN
- China
- Prior art keywords
- dsp
- data
- com
- submodule
- pin
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种采用单片CPLD扩展的DSP串口通信电路,其采用一片CPLD来控制DSP与外部进行串口通信的时序逻辑,通过对CPLD内部子模块的功能划分、CPLD内部的时序、逻辑配合,以及DSP的控制,实现采用最少芯片对DSP串口的扩展。CPLD被划分为数据接收子模块COM_RX、并口读取子模块Read和输出子模块COM_TX,其中COM_RX子模块应用基准时钟进行接收管脚rxd的实时下降沿检测,一旦检测到下降沿且连续多个基准时钟内均为低电平时,判定为数据的起始位,保证起始位检测正确;并且设计了循环计数器,停止计数器,分频器、移位寄存器等合理的逻辑、时序设计,以实现自动、高可靠性的接收数据,降低误码率。
Description
技术领域
本发明涉及嵌入式伺服控制技术领域,尤其涉及一种采用单片CPLD扩展的DSP串口通信电路。
背景技术
DSP嵌入式伺服控制产品以其体积小,功耗低,处理能力强等优势,在通讯,电子,工业控制,医疗,航空制导,网络等领域发挥着极其重要的角色。
目前,在复杂的多串口通信伺服控制***领域,单片DSP一般提供3个串口,往往个数不够用。当需要扩展DSP的串口时,大多采用的技术是DSP+FPGA+存储器组合、双DSP组合、DSP+ST16C554D(四通道异步收发器)+CPLD等组合方式;其中,DSP+FPGA+存储器的组合方案,需要增加FPGA和存储器及其***电路,不仅成本相对较高,而且FPGA软件设计也相对复杂;对双DSP的组合,能够提供6个串口,但是对于仅需要4个串口的伺服控制产品来说,造成了硬件资源的浪费,而且一个DSP的价格比CPLD高出不少;对于DSP+ST16C554D+CPLD的组合,采用ST16C554D+CPLD实现串口相关时序,但是由于需要ST16C554D及其***电路,电路较为复杂。可见,上述为DSP扩展串口的方式,不利于产品的集成化、小型化设计要求,不能契合现代伺服控制产品对多串口通信***提出的硬件集成化、高可靠性、低成本的数据交互要求。
发明内容
有鉴于此,本发明提供了一种采用单片CPLD扩展的DSP串口通信电路,能够仅采用一片CPLD即可实现DSP的串口扩展,电路简单,有利于产品的集成化、小型化设计要求。
为了解决上述技术问题,本发明是这样实现的:
一种采用单片CPLD扩展的DSP串口通信电路,包括:一片DSP和一片CPLD;DSP与CPLD通过读信号管脚XRD、写信号管脚XWE、片选信号管脚XZCS0、地址线管脚以及数据线管脚相连,CPLD还提供一个标志位输出端call_DSP连接DSP;
CPLD被划分为数据接收子模块COM_RX、并口读取子模块Read和输出子模块COM_TX;其中,
数据接收子模块COM_RX,通过串行的数据接收管脚rxd从外部接收数据,并存储在缓冲寄存器COM_data内,一帧数据接收完毕并判定当前接收的数据帧正确后,将标志位call_DSP置1,表示具备被DSP读取的状态;
对于并口读取子模块Read,DSP配置的读信号管脚XRD、片选信号管脚XZCS0、地址线管脚以及数据线管脚分别对接本并口读取子模块Read的DSP读信号DSP_XRD、DSP片选信号DSP_XZCS0、地址总线addrbus和数据总线databus;数据接收子模块COM_RX和并口读取子模块Read中均设有缓冲寄存器COM_data,并通过并口线直连;DSP_XRD、DSP_XZCS0和addrbus组成复选开关地址;并口读取子模块Read的复位管脚reply_DSP对接数据接收子模块COM_RX的接收复位引脚RX_clrn;
DSP在周期性中断中进行标志位call_DSP置1的判断,一旦置1,则在复选开关地址{DSP_XRD、DSP_XZCS0、addrbus}的控制下通过数据线管脚读取缓冲寄存器COM_data中存储的数据;同时并口读取子模块Read实时检测复选开关地址{DSP_XRD、DSP_XZCS0、addrbus}是否为设定的表征数据读取完毕的值,如果是,则通过复位管脚reply_DSP通知数据接收子模块COM_RX进行标志位call_DSP的恢复和缓冲寄存器的清零;
对于输出子模块COM_TX,DSP配置的写信号管脚XWE、片选信号管脚XZCS0、地址线管脚以及数据线管脚分别对接本输出子模块COM_TX的DSP写信号DSP_XWE、DSP片选信号DSP_XZCS0、地址总线addrbus和数据总线databus;
在复选开关地址{DSP_XWE、DSP_XZCS0、addrbus}的控制下,待外发的DSP数据通过数据总线databus传至输出子模块COM_TX的数据缓存器内,一帧数据传输完毕后,再启动串行发送过程,通过串行的数据发送管脚txd发送所述DSP数据。
优选地,在数据接收子模块COM_RX中,将***时钟进行分频获得基准时钟,通过分频将一位数据的传输时间分为K份,在此基准时钟下进行数据接收管脚rxd的下降沿判定,一旦检测到下降沿且连续k个基准时钟内均为低电平,则判定接收到数据的起始位,开始进行一个字节数据位的串行读入;采用相同的方式完成一帧数据包中多个字节的串行读入;其中1<k≤K。
优选地,数据接收子模块COM_RX在进行一个字节数据位的串行读入时,启动循环计数器和停止计数器;
所述循环计数器的计数值为0至7,计数值存储单元为Cnt1[2:0],该计数值存储单元输出其选定位作为波特率时钟;
所述停止计数器用于记录波特率时钟的个数,计数值为1至8,计数值存储单元为Cnt2[3:0],当记录的波特率时钟为8时,停止计数,此时Cnt2[3:0]的最高位Cnt2[3]输出高电平,该高电平取反,并以所述基准时钟二分频后的时钟进行上升沿输出,从而产生计数器复位信号去复位所述循环计数器和停止计数器;同时Cnt1[2:0]的最高位输出作为一个8位右移寄存器Data_rxd的时钟,以此完成一次8位数据的接收。
优选地,并口读取子模块Read通过复位管脚reply_DSP通知数据接收子模块COM_RX进行标志位call_DSP的恢复和缓冲寄存器的清零时,产生复位管脚reply_DSP高电平到低电平的变化,输出至数据接收子模块COM_RX的接收复位引脚RX_clrn,然后延时设定时间后reply_DSP再次置位高电平。
优选地,并口读取子模块Read中缓冲寄存器COM_data包括COM_data0[7:0]~COM_data11[7:0],用于缓存12字节数据;并口读取子模块Read的addrbus为7位;当复选开关地址的地址值为0至5时,分别对应选通{COM_data1,COM_data0[7:0]}、{COM_data3[7:0],COM_data2[7:0]}、{COM_data5[7:0],COM_data4[7:0]}、{COM_data7[7:0],COM_data6[7:0]}、{COM_data9[7:0],COM_data8[7:0]}、{COM_data11[7:0],COM_data10[7:0]}输出;当复选开关地址为7时,表征数据读取完毕,产生reply_DSP反馈至数据接收子模块COM_RX。
优选地,输出子模块COM_TX中设有二维的缓冲寄存器,用于缓冲待输出的DSP数据;复选开关地址中的addrbus控制DSP数据缓存到缓冲寄存器的哪个位置;
输出子模块COM_TX具备两级发送使能;当复选开关地址为0时,开始通过databus接收DSP数据并缓存到缓冲寄存器的指定位置,此时关闭第一级发送使能,表示不能通过txd向外发送串行数据;当DSP数据接收完成,开启第一级发送使能置,表示可以通过txd向外串行发送所述DSP数据;第二级发送使能在开始向外串行发送DSP数据时被开启,并采用计数器记录发送的字节数,当发送最后一个字节时,停止第二级发送使能位,由此完成DSP多字节数据的并口传输、串口自动发送的过程。
优选地,DSP在周期性中断的频率设计为2kHz。
有益效果:
(1)本发明选用一个DSP芯片和一个CPLD(EPM1270)芯片组合,电路简单,有利于产品的集成化、小型化设计要求。而且,CPLD可以通过Verilog语言嵌入的图形模块来实现相应功能,在硬件电路不更改前提下,可进行编程化设计,适应多种串口通信协议设计。
(2)COM_RX子模块应用基准时钟进行接收管脚rxd的实时下降沿检测,一旦检测到下降沿且连续多个基准时钟内均为低电平时,判定为数据的起始位,保证起始位检测正确;并且设计了循环计数器,停止计数器,分频器、移位寄存器等合理的逻辑、时序设计,以实现自动、高可靠性的接收数据,降低误码率。
(3)COM_RX子模块采用接收一帧数据后,通过总线形式存储到寄存器内,等待DSP读取的设计方法;此设计方法降低了CPLD与DSP数据交互的总线的利用率,提高了CPLD逻辑单元的可靠性设计。
(4)Read子模块采用由DSP的写信号、片选信号、地址组成的复选开关地址,根据复选开关地址值进行自闭环清零或者复位动作,实现串口通信的智能化。而且,复位操作后,延时一段时间再次置位高电平,能够保证前一个动作做完,再进行后续操作,从而保证数据读取的完整性。
(5)COM_TX子模块根据复选开关地址值,自启动、自关闭发送的字节数,以实现DSP并口输入,串口输出的智能化设计。
可见,本方案提供的DSP扩展串口方案,硬件电路简单、成本低、智能化高、可靠性高,解决了以往多串口设计的复杂电路,可靠性差,兼容性差的问题。
附图说明
图1为本发明DSP与CPLD硬件连接示意图。
图2为CPLD的三个子模块划分和连接关系设计图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种采用单片CPLD扩展的DSP串口通信电路,其基本思想是:采用一片CPLD来控制DSP与外部进行串口通信的时序逻辑,通过对CPLD内部子模块的功能划分、CPLD内部的时序、逻辑配合,以及DSP的控制,实现采用最少芯片对DSP串口的扩展。
图1为本发明DSP与CPLD硬件连接示意图。首先,按照该方案将DSP与CPLD连接起来。如图所示,DSP的读信号管脚XRDn、写信号管脚XWE0n、片选信号管脚XZCS0n、7条地址线管脚XA0~XA6、16条数据线管脚XD0~XD15分别与CPLD的读信号管脚DSP_XRD、写信号管脚DSP_XWE、片选信号管脚DSP_XZCS0、地址线管脚addbus[6:0]以及数据线管脚databus[15:0]相连;CPLD还提供一个标志位输出端call_DSP连接DSP,具体是连接DSP的GPIO53。CPLD与外部,例如本实施例中AD公司的ADM3490,通过串行通信接口连接,串行通信接口包括CPLD串行接收数据的数据接收管脚rxd和串行发送数据的数据发送管脚txd。
本实施例中,DSP采用TI公司的浮点型DSP TMS320F28335,CPLD采用一块ALTERA公司的CPLD EPM1270T144I5。
图2为CPLD内部子模块划分和连接关系设计图。如图2所示,CPLD顶层通信模块设计,包括三个子模块,分别为数据接收子模块COM_RX_12Byte、并口读取子模块Read_12Byte、输出子模块COM_TX_32Byte。这里面的12Byte和32Byte分别表示本实施例中接收12字节数据和发送32字节数据。其中,COM_RX_12Byte子模块用于实现12字节数据的读取和上报DSP;Read_12Byte子模块负责DSP并口读取数据后复位接收端口,COM_TX_32Byte子模块负责来自DSP的32字节数据并口获取和自动串口输出。
以波特率为115200、一位起始位、8位数据位、一位停止位,一帧数据包接收12字节数据和发送32字节数据的通信协议为例,三个子模块的大致工作过程是:
当DSP从外部读取串口数据时:
COM_RX_12Byte通过串行的数据接收管脚rxd从外部接收数据,并缓存在内部寄存器中,一帧12字节数据接收完毕后,经判定这帧数据包正确,则将标志位call_DSP置1,表示具备被DSP读取状态。
DSP进行周期性中断,在中断函数里进行标志位call DSP置1的判断,一旦置1,则利用COM_RX_12Byte与Read_12Byte之间缓冲存储器的直连,以及通过复选开关地址对Read_12Byte中缓冲存储器的选通,从CPLD中完成并口数据的读取;同时,CPLD的Read_12Byte子模块设计的合理时序,能够自动识别DSP的地址、读信号和片选信号组合的复选开关地址,在合适的复选开关地址以产生固定时间间隔的复位信号reply_DSP,反馈给COM_RX_12Byte子模块,以清除接收缓冲器和call_DSP置0;
当DSP向外部发送串口数据时:
DSP输出的数据经过并口数据线赋值给CPLD的COM_TX_32Byte子模块里的缓冲寄存器,一帧数据传输完毕后,再启动串行发送过程,通过串行的数据发送管脚txd发送所述DSP数据。本发明中,COM_TX_32Byte子模块可以自动识别由DSP的地址、写信号和片选信号组合的复选开关地址;起始地址时,关闭发送使能位,表示不通过rxd向外发送数据,只能通过数据线管脚databus[15:0]从DSP接收数据;终止地址时,打开发送使能,按照发送通信协议以完成一次数据的自动发送。
下面对本发明实施例中CPLD每个子模块的实现进行详细描述。
(1)COM_RX_12Byte
COM_RX_12byte提供串行数据的数据接收管脚rxd与外部的ADM3490相连,提供clk_29M5管脚连接外部的***时钟;call_DSP管脚连接DSP;RX_clrn管脚连接Read_12Byte子模块的reply_DSP管脚;内部缓冲寄存器COM_data0[7:0]~COM_data11[7:0]用于缓存从外部读取的12字节的数据,其通过直连的方式连接Read_12Byte子模块中相同大小的缓冲寄存器,DSP对Read_12Byte子模块中缓冲寄存器COM_data的操作相当于对COM_RX_12byte中缓冲寄存器COM_data的操作。在COM_RX_12byte子模块内部还设计有分频器、循环计数器、停止计数器等器件。
该子模块的工作过程为:
根据所需的波特率时钟以及***时钟,本发明将***时钟clk_29M5进行32分频即0.921875MHz作为通信的基准时钟clk32,在此基准时钟clk32下进行数据接收管脚rxd的下降沿判定,一旦检测到下降沿且连续k(=6)个基准时钟内均为低电平时,判定为检测到数据的起始位,开始进行一个字节数据位的串行读入。
这里,通过前述的分频操作相当于将一位数据的传输时间分为K份,每份持续一个基准时钟,本实施例是分为8份;数据起始位为1位,持续8个基准时钟。为了保证起始位判定的准确性,采用多次判定的方式,即当判定出现下降沿且持续多个基准时钟时,认为检测到数据的起始位。这多个基准时钟的数量选取至少2个,最多8个,本实施例中选择了6个连续基准时钟维持低电平作为判定标准。
当判定检测到数据的起始位后,COM_RX_12Byte子模块开始进行一个字节数据位的串行读入,具体读入过程为:启动循环计数器和停止计数器;
其中,循环计数器根据基准时钟进行0至7的循环计数,计数值存储单元为Cnt1[2:0],计数值为000~111;该计数值存储单元输出其最高位即Cnt1[2]作为波特率时钟,波特率为115234.375Hz。
停止计数器用于记录波特率时钟的个数,计数值为1~8,即二进制的0001~1000。计数值存储单元为Cnt2[3:0],记录波特率时钟的个数为8时,说明完成了8位数据的传输,停止计数,此时Cnt2[3:0]的最高位Cnt2[3]输出高电平,令其取反,以clk32二分频后的时钟进行上升沿输出,产生一个子模块内部的信号——Cnt_clrn信号去复位上述的循环计数器、停止计数器;同时,Cnt1[2:0]的最高位Cnt1[2]作为一个8位右移寄存器Data_rxd[7:0]的时钟,该右移寄存器Data_rxd[7:0]存储当前串行读入的一个字节的数据,以此完成一次高可靠性的自动闭环有效8位数据的接收。采用相同的方式即可完成一帧数据包中12个字节的串行读入。读取的数据统一存储到COM_RX_12Byte子模块的COM_data0[7:0]~COM_data11[7:0]中。
(2)Read_12Byte子模块
Read_12Byte子模块与COM_RX_12Byte子模块配合一起完成外部串行数据到DSP的传输。
DSP配置的读信号管脚XRDn、片选信号管脚XZCS0n、地址线管脚XA0~XA6以及数据线管脚XD0~XD15分别对接本Read_12Byte子模块的DSP读信号DSP_XRD、DSP片选信号DSP_XZCS0、地址总线addrbus[6:0]和数据总线databus[15:0]。本子模块的数据总线为16位,可以一次传输2个字节的数据。Read_12Byte子模块提供relply_DSP管脚连接COM_RX_12byte子模块的RX_clrn管脚。内部缓冲寄存器COM_data0[7:0]~COM_data11[7:0]通过直连的方式连接COM_RX_12byte子模块中相同大小的缓冲寄存器。
其中{DSP_XRD、DSP_XZCS0、addrbus[6:0]}组成了DSP对本子模块控制的复选开关地址。DSP_XRD和DSP_XZCS0均为0时,本子模块被使能;addrbus[6:0]的值决定了两方面的内容,一方面是:利用addrbus[6:0]的部分值决定读取哪个COM_data的数据;另一方面是:利用addrbus[6:0]的部分值决定什么时候结束读取(这里面包含了结束延时,以确保读取动作完成后再进行后续操作),并通过复位管脚reply_DSP通知COM_RX_12byte子模块进行标志位call_DSP的恢复和缓冲寄存器的清零。
该子模块的工作过程为:
复选开关地址由DSP_XRD、DSP_XZCS0、addrbus[6:0]组成,地址值0至5,分别对应12个COM_data中其中两个的选通,因为一次只能向DSP传2个字节共16位的数据;地址值0~5分别对应{COM_data1[7:0],COM_data0[7:0]}、{COM_data3[7:0],COM_data2[7:0]}、{COM_data5[7:0],COM_data4[7:0]}、{COM_data7[7:0],COM_data6[7:0]}、{COM_data9[7:0],COM_data8[7:0]}、{COM_data11[7:0],COM_data10[7:0]}输出;其他地址值则输出16位高阻状态;当复选开关地址的地址值为6时,实际上数据读取已经完成,但是为了保证读取操作的完成后再进行后续操作,以提高数据读取的可靠性,本发明进行延时,在复选开关地址的地址值为7时,才产生一个固定间隔的低电平信号reply_DSP,反馈至COM_RX_12Byte子模块的接收复位端reply_DSP,完成接收子模块COM_RX_12Byte缓冲器自闭环清零、call_DSP置0的功能。然后延时3个基准时钟后reply_DSP再次置位高电平,以保证相应清零和置0操作顺利完成。
(3)COM_TX_32Byte子模块
COM_TX_32Byte子模块完成DSP数据发送到外部的操作。
DSP配置的写信号管脚XWEn、片选信号管脚XZCS0n、地址线管脚XA0~XA6以及数据线管脚XD0~XD15分别对接本COM_TX_32Byte子模块的DSP写信号DSP_XWE、DSP片选信号DSP_XZCS0、地址总线addrbus[6:0]和数据总线databus[15:0]。本子模块还提供串行数据的数据发送管脚txd,与外部的ADM3490相连。该子模块中还设计有二维的缓冲寄存器[15:0]data[0:15],用以缓存DSP并口传输的32字节数据。
其中,{DSP_XWE、DSP_XZCS0、addrbus[6:0]}组成了DSP对本子模块控制的复选开关地址。DSP_XWE、DSP_XZCS0均为0时表示使能本子模块,由addrbus[6:0]的值来控制将来自DSP的DSP数据缓存到二维缓冲寄存器的哪个位置。具体来说,复选开关地址的地址值为0~15时,databus[15:0]上数据分别赋值给data[0]~data[15]。
该子模块的工作过程为:
待外发的DSP数据通过数据总线databus传至输出子模块COM_TX的二维数据缓存器内,一帧数据传输完毕后,再启动串行发送过程,通过串行的数据发送管脚txd发送所述DSP数据。
COM_TX_32Byte具备两级发送使能;当复选开关地址为0时,开始通过databus接收DSP数据并缓存到指定的缓冲寄存器中,此时关闭第一级发送使能(置0),表示不能通过txd向外发送串行数据;当复选开关地址为15时,第一级发送使能位置1,表示32字节的DSP数据接收完成。同时,需要启动停止计数器(记录到31即停止),计数值存储单元为Cnt3[4:0],并开启第二级发送使能位,通过txd向外串行发送所述DSP数据,当Cnt3的输出值为31时,表示发送最后一个字节,停止第二级发送使能位;由此完成DSP32字节数据的并口传输,串口自动发送的过程。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种采用单片CPLD扩展的DSP串口通信电路,其特征在于,包括:一片DSP和一片CPLD;DSP与CPLD通过读信号管脚XRD、写信号管脚XWE、片选信号管脚XZCS0、地址线管脚以及数据线管脚相连,CPLD还提供一个标志位输出端call_DSP连接DSP;
CPLD被划分为数据接收子模块COM_RX、并口读取子模块Read和输出子模块COM_TX;其中,
数据接收子模块COM_RX,通过串行的数据接收管脚rxd从外部接收数据,并存储在缓冲寄存器COM_data内,一帧数据接收完毕并判定当前接收的数据帧正确后,将标志位call_DSP置1,表示具备被DSP读取的状态;
对于并口读取子模块Read,DSP配置的读信号管脚XRD、片选信号管脚XZCS0、地址线管脚以及数据线管脚分别对接本并口读取子模块Read的DSP读信号DSP_XRD、DSP片选信号DSP_XZCS0、地址总线addrbus和数据总线databus;数据接收子模块COM_RX和并口读取子模块Read中均设有缓冲寄存器COM_data,并通过并口线直连;DSP_XRD、DSP_XZCS0和addrbus组成复选开关地址;并口读取子模块Read的复位管脚reply_DSP对接数据接收子模块COM_RX的接收复位引脚RX_clrn;
DSP在周期性中断中进行标志位call_DSP置1的判断,一旦置1,则在复选开关地址{DSP_XRD、DSP_XZCS0、addrbus}的控制下通过数据线管脚读取缓冲寄存器COM_data中存储的数据;同时并口读取子模块Read实时检测复选开关地址{DSP_XRD、DSP_XZCS0、addrbus}是否为设定的表征数据读取完毕的值,如果是,则通过复位管脚reply_DSP通知数据接收子模块COM_RX进行标志位call_DSP的恢复和缓冲寄存器的清零;
对于输出子模块COM_TX,DSP配置的写信号管脚XWE、片选信号管脚XZCS0、地址线管脚以及数据线管脚分别对接本输出子模块COM_TX的DSP写信号DSP_XWE、DSP片选信号DSP_XZCS0、地址总线addrbus和数据总线databus;
在复选开关地址{DSP_XWE、DSP_XZCS0、addrbus}的控制下,待外发的DSP数据通过数据总线databus传至输出子模块COM_TX的数据缓存器内,一帧数据传输完毕后,再启动串行发送过程,通过串行的数据发送管脚txd发送所述DSP数据。
2.如权利要求1所述的电路,其特征在于,在数据接收子模块COM_RX中,将***时钟进行分频获得基准时钟,通过分频将一位数据的传输时间分为K份,在此基准时钟下进行数据接收管脚rxd的下降沿判定,一旦检测到下降沿且连续k个基准时钟内均为低电平,则判定接收到数据的起始位,开始进行一个字节数据位的串行读入;采用相同的方式完成一帧数据包中多个字节的串行读入;其中1<k≤K。
3.如权利要求1所述的电路,其特征在于,数据接收子模块COM_RX在进行一个字节数据位的串行读入时,启动循环计数器和停止计数器;
所述循环计数器的计数值为0至7,计数值存储单元为Cnt1[2:0],该计数值存储单元输出其选定位作为波特率时钟;
所述停止计数器用于记录波特率时钟的个数,计数值为1至8,计数值存储单元为Cnt2[3:0],当记录的波特率时钟为8时,停止计数,此时Cnt2[3:0]的最高位Cnt2[3]输出高电平,该高电平取反,并以所述基准时钟二分频后的时钟进行上升沿输出,从而产生计数器复位信号去复位所述循环计数器和停止计数器;同时Cnt1[2:0]的最高位输出作为一个8位右移寄存器Data_rxd的时钟,以此完成一次8位数据的接收。
4.如权利要求1所述的电路,其特征在于,并口读取子模块Read通过复位管脚reply_DSP通知数据接收子模块COM_RX进行标志位call_DSP的恢复和缓冲寄存器的清零时,产生复位管脚reply_DSP高电平到低电平的变化,输出至数据接收子模块COM_RX的接收复位引脚RX_clrn,然后延时设定时间后reply_DSP再次置位高电平。
5.如权利要求1所述的电路,其特征在于,并口读取子模块Read中缓冲寄存器COM_data包括COM_data0[7:0]~COM_data11[7:0],用于缓存12字节数据;并口读取子模块Read的addrbus为7位;当复选开关地址的地址值为0至5时,分别对应选通{COM_data1,COM_data0[7:0]}、{COM_data3[7:0],COM_data2[7:0]}、{COM_data5[7:0],COM_data4[7:0]}、{COM_data7[7:0],COM_data6[7:0]}、{COM_data9[7:0],COM_data8[7:0]}、{COM_data11[7:0],COM_data10[7:0]}输出;当复选开关地址为7时,表征数据读取完毕,产生reply_DSP反馈至数据接收子模块COM_RX。
6.如权利要求1所述的电路,其特征在于,输出子模块COM_TX中设有二维的缓冲寄存器,用于缓冲待输出的DSP数据;复选开关地址中的addrbus控制DSP数据缓存到缓冲寄存器的哪个位置;
输出子模块COM_TX具备两级发送使能;当复选开关地址为0时,开始通过databus接收DSP数据并缓存到缓冲寄存器的指定位置,此时关闭第一级发送使能,表示不能通过txd向外发送串行数据;当DSP数据接收完成,开启第一级发送使能置,表示可以通过txd向外串行发送所述DSP数据;第二级发送使能在开始向外串行发送DSP数据时被开启,并采用计数器记录发送的字节数,当发送最后一个字节时,停止第二级发送使能位,由此完成DSP多字节数据的并口传输、串口自动发送的过程。
7.如权利要求1所述的电路,其特征在于,DSP在周期性中断的频率设计为2kHz。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811344444.1A CN109656850B (zh) | 2018-11-13 | 2018-11-13 | 采用单片cpld扩展的dsp串口通信电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811344444.1A CN109656850B (zh) | 2018-11-13 | 2018-11-13 | 采用单片cpld扩展的dsp串口通信电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656850A true CN109656850A (zh) | 2019-04-19 |
CN109656850B CN109656850B (zh) | 2022-07-26 |
Family
ID=66110871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811344444.1A Active CN109656850B (zh) | 2018-11-13 | 2018-11-13 | 采用单片cpld扩展的dsp串口通信电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656850B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908861A (zh) * | 2019-10-30 | 2020-03-24 | 航宇救生装备有限公司 | 一种基于dsp的外部多信号源监控处理方法 |
CN111444123A (zh) * | 2020-03-28 | 2020-07-24 | 珠海市一微半导体有限公司 | 基于硬件加速的spi接口的自动读取控制***及方法 |
CN111477149A (zh) * | 2020-04-22 | 2020-07-31 | 京东方科技集团股份有限公司 | 数据输出电路及数据输出方法、显示装置 |
CN113641617A (zh) * | 2021-08-06 | 2021-11-12 | 云尖信息技术有限公司 | 一种基于COMe平台通用串行中断模块实现的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127023A (zh) * | 2006-08-17 | 2008-02-20 | 四川维肯电子有限公司 | 一种多总线接口的通用异步串口扩展芯片 |
CN102760111A (zh) * | 2012-06-27 | 2012-10-31 | 浙江大学 | 一种基于fpga的扩展多串口装置及其数据收发方法 |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
-
2018
- 2018-11-13 CN CN201811344444.1A patent/CN109656850B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127023A (zh) * | 2006-08-17 | 2008-02-20 | 四川维肯电子有限公司 | 一种多总线接口的通用异步串口扩展芯片 |
CN102760111A (zh) * | 2012-06-27 | 2012-10-31 | 浙江大学 | 一种基于fpga的扩展多串口装置及其数据收发方法 |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908861A (zh) * | 2019-10-30 | 2020-03-24 | 航宇救生装备有限公司 | 一种基于dsp的外部多信号源监控处理方法 |
CN111444123A (zh) * | 2020-03-28 | 2020-07-24 | 珠海市一微半导体有限公司 | 基于硬件加速的spi接口的自动读取控制***及方法 |
US11734219B2 (en) | 2020-03-28 | 2023-08-22 | Amicro Semiconductor Co., Ltd | Automatic read control system based on a hardware accelerated SPI and automatic read control method |
CN111477149A (zh) * | 2020-04-22 | 2020-07-31 | 京东方科技集团股份有限公司 | 数据输出电路及数据输出方法、显示装置 |
CN111477149B (zh) * | 2020-04-22 | 2023-06-20 | 京东方科技集团股份有限公司 | 数据输出电路及数据输出方法、显示装置 |
CN113641617A (zh) * | 2021-08-06 | 2021-11-12 | 云尖信息技术有限公司 | 一种基于COMe平台通用串行中断模块实现的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109656850B (zh) | 2022-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656850A (zh) | 采用单片cpld扩展的dsp串口通信电路 | |
CN101551786B (zh) | 波特率自适应串行通信中继器的制作方法 | |
CN103916252A (zh) | 一种基于fpga的高带宽以太网ip核 | |
CN100589371C (zh) | 一种消除源同步信号长线传输时延的***及方法 | |
CN110471880A (zh) | 一种基于FPGA支持Label号筛选的ARINC429总线模块及其数据传输方法 | |
CN103870421B (zh) | 一种基于fpga的串行接口和pwm组合应用ip核装置 | |
CN103677671A (zh) | 一种电口模块的数据读写方法和*** | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN108628784A (zh) | 串行通信器及串行通信*** | |
CN103684698A (zh) | 数据信号的处理方法和装置 | |
CN102692642A (zh) | 基于以太网物理层收发器的地震数据传输装置 | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
CN104111902B (zh) | 基于双倍速率同步动态随机存储器接口的通信***及方法 | |
CN110365450A (zh) | 星载高速可调速率数据传输接口及传输方法 | |
CN104380273B (zh) | 基于环形缓冲器的数据的自适应偏移同步 | |
CN109783933A (zh) | 一种ahb总线访问片上sram的桥接方法 | |
CN109062538A (zh) | 环形先进先出缓冲器及数据传输接口、***、方法 | |
CN203982361U (zh) | 一种多路串口通信测试装置 | |
CN106603113A (zh) | 一种雷达信号处理机对外通信控制*** | |
CN107066419A (zh) | 可扩展的自适应n×n通道数据通信*** | |
CN103412615B (zh) | 一种用于uart接口芯片的无毛刺自适应时钟切换方法 | |
CN103347023A (zh) | 一种工业现场环境下hdlc通信控制器 | |
CN201732367U (zh) | 一种基于dsp的数据接收电路 | |
CN101859138A (zh) | 一种EPA总线与LonWorks总线转换适配器 | |
CN108108149A (zh) | 一种基于分离统计高效收集的性能统计电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |