一种基于现场可编程门阵列实现的本地网通信的方法

文档序号:7897693阅读:269来源:国知局
专利名称:一种基于现场可编程门阵列实现的本地网通信的方法
技术领域
本发明涉及数据通信技术领域,更具体地涉及在自动控制领域中利用现场可编程门阵列(FPGA)实现本地网(CAN)通信的方法。
专用的CAN网控制器有两种,一种是利用并行总线和主控制器交换数据,另一种利用串行通信(例如SPI总线)和主控制器交换数据。显然,第一种具有更好的通信性能,所以在工业控制领域的应用也比较广泛。
在目前的大多数采用并行总线交换数据的CAN网控制器中,大多采用数据/地址总线复用的形式,即遵循Intel系列微处理器的总线协议,而现在大多数的微处理器和微控制器都是数据/地址总线分开的,这样在工程中就会有很多麻烦。
在四方公司CSC2000变电站自动化系统中,网关功能是通过CSI200E测控装置的主板来完成的,其核心芯片为摩托罗拉公司的MC68360微控制器,内部集成有10M以太网控制器,通过外扩CAN网通信控制器来实现以太网和CAN之间的通信协议转换。CSC2000采用SJA1000为CAN网通信控制器,其和MC68360微控制器之间通过8位数据总线来交换数据,但其总线时序和MC68360微控制器的总线时序并不是很吻合,以前的做法是利用数字元器件组成组合电路实现了两种总线之间的时序转换,这种做法使得硬件电路变得比较繁杂,而且逻辑转换很难控制得很精确。在这种实现方案中,微处理器对SJA1000的每次数据读/写操作都必须分两次来完成,微处理器先将要读/写的地址送到8位数据线上,然后再从8位数据线上读或写数据。这种操作降低了微处理器的处理效率,而且在软件上还需要采取必要的措施以保证操作信号的连续性,使软件的通用性降低。可以用本发明提出的方法来解决这个问题。

发明内容
本发明的目的在于克服上述的缺陷,利用用现场可编程门阵列(FPGA)能很方便的实现时序逻辑和组合逻辑的特点,本发明提出一种基于现场可编程门阵列实现微控制器和CAN网控制器之间通信的方法,该方法包括步骤用现场可编程门阵列实现微控制器和CAN网控制器之间的无缝连接,现场可编程门阵列器件为一个透明的元件,能自动快速地完成电气信号的逻辑转换;在微控制器发送CAN网报文时,现场可编程门阵列读取微控制器数据总线上的数据,送到CAN网控制器的发送缓冲区内,然后由CAN网控制器把报文发送CAN网上;在微控制器接收CAN网报文时,现场可编程门阵列读取CAN网控制器总线上的数据,通过与微控制器的接口将数据送到微控制器的相应接收区内,由微控制器处理报文。
所述的在微控制器发送CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照CAN网控制器的总线协议写有效数据到CAN网控制器相应地址的存储空间内,写周期结束。
所述的在微控制器接收CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照CAN网控制器的总线协议读取CAN网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。
利用本发明提出的方法,可以很好的实现工业控制领域的CAN网通信。该方法可以充分发挥微处理器地址线数据线非复用的特点,对CAN网络控制器的读/写操作一次完成,大大提高了处理效率,简化了软件并提高了软件的通用性。
图2是微控制器读周期时序图。
图3是微控制器写周期时序图。
图4是CAN网通信控制器读周期总线时图。
图5是CAN网通信控制器写周期总线时序图。
图6是FPGA器件的状态转移图。
图7是微控制器发送CAN网数据时FPGA器件的时序图。
图8是微控制器读取CAN网数据时FPGA器件的时序图。
所述的在微控制器发送CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照CAN网控制器的总线协议写有效数据到CAN网控制器相应地址的存储空间内,写周期结束。
所述的在微控制器接收CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照CAN网控制器的总线协议读取CAN网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。


图1是微控制器和SJA1000的接口示意图。如图1所示,为了实现上述的方法,在FPGA上做出两个并行接口,一个和微控制器MC68360通信,另一个与CAN网控制器SJA1000通信,从而完成两者之间总线信号的逻辑转换。在通信协议上可以理解为只实现物理层协议的转换,而丝毫不用考虑上层协议所传输数据的内容。
因为FPGA的延迟都是纳秒级的,所以这样实现的CAN网通信,其通信性能可以得到很好的保证。对于微控制器,可以象读取ROM那样来读写CAN网控制器的内部寄存器;对于CAN网控制器,可以随便接收来自微控制器的指令和数据,而丝毫感觉不出总线协议上的差异。
在四方公司CSC2000变电站自动化系统中,网关功能是通过CSI200E测控装置的master主板来完成的,其核心芯片为摩托罗拉公司的MC68360微控制器,内部集成有10M以太网控制器,通过外扩CAN网通信控制器来实现以太网和CAN之间的通信协议转换。CSC2000采用SJA1000为CAN网通信控制器,其和68360之间通过8位数据总线来交换数据。
既然要利用FPGA实现68360和SJA1000之间的接口,那么就要在FPGA芯片上按照68360和SJA1000的时序分别的做两个并行接口,当从CAN网上接收数据时,FPGA要能够从SJA1000读取数据,然后在按照68360的总线协议把数据放在其接口数据总线上,发送数据到CAN网时,其过程正好相反。
在图1中,复位和中断信号没有经过FPGA器件,因为读取或是发送数据都是68360为主动,所以中断信号无需经过FPGA器件,而本发明设计的接口器件中没有可读写的寄存器,只是实现电气信号的逻辑转换,所以无需复位。
为了转换68360和SJA1000之间的总线信号时序逻辑,发明人对这两种芯片的总线时序做了详尽的分析。
图2是微控制器读周期时序图。68360完成一个读操作需要三个时钟周期。第一个时钟周期上升沿,CPU放有效地址到地址线,并驱动R/W为高电平,开始读周期;在下降沿驱动AS信号为低电平,表明地址有效,并驱动OE信号为低电平,令外设输出数据,驱动CS信号为低电平,通知外设被选中。R/W为高电平至OE、AS、CS有效应有7.5ns以上的延时,地址有效至OE、AS、CS有效应有8ns以上的延时。
第二个时钟周期下降沿,68360读DSACK0信号,若为低,则下一个时钟下降沿读数据;若为高,则插入等待时钟周期,下一个时钟下降沿继续对DSACK0信号采样。
第三个时钟周期内,数据和地址信号保持有效。在第三个时钟周期下降沿置AS、OE、CS信号无效。外设置DSACK0信号有效的24ns内必须将数据放在数据总线上,检测到AS信号或OE信号无效后移走数据,并置DSACK0信号无效。
图3是微控制器写周期时序图。如图3所示,同样,68360写周期也需要三个时钟周期。在第一个时钟周期上升沿68360放有效地址到地址线,并驱动R/W为低电平,开始写周期。在下降沿驱动AS信号为低电平,表明地址有效,驱动CS信号为低电平。地址有效至AS、CS有效应有8ns以上的延时。
在第二个时钟周期上升沿,68360放数据到数据总线上。R/W信号为低至数据有效应有19ns以上的延迟。在下降沿置DS信号为低电平,表明数据总线上的数据是稳定的,并读DSACK0信号,若为低,则下一个时钟结束周期;若为高,则插入等待时钟周期,下一个时钟下降沿继续对DSACK0信号采样。
第三个时钟周期内,数据和地址信号保持有效。68360在第三个时钟周期下降沿置AS、DS、CS信号无效。外设检测到AS信号或DS信号无效后置DSACK0信号无效。
图4是CAN网通信控制器读周期总线时序图。图5是CAN网通信控制器写周期总线时序图。相对于68360,SJA1000的总线读写时序略为简单,AS为地址有效信号,在AS下降沿SJA1000锁定总线上的地址。E为数据有效信号,在读周期,E信号上升沿SJA1000放数据到总线上;在写周期,E信号下降沿SJA1000读取总线上的数据。
SJA1000完成一个读或写周期至少需要93ns。从总线时序分析中,发明人得出结论68360和SJA1000之间的总线时序差异还是比较大的。首先68360的数据总线和地址总线是分开的,但在SJA1000上,数据和地址总线是复用的。另外,68360的读写周期是和时钟信号有关的,可以说是半同步的,但SJA1000的读写周期完全是异步的,和本身的时钟信号没有什么关系。此外,两者控制信号之间的逻辑关系也存在一些差异。
图6是FPGA器件的状态转移图。根据时序分析结果,在FPGA器件上需要分别设计出68360和SJA1000的接口,然后完成两者之间的逻辑转换。本发明选用VHDL语言来描述FPGA的数字电路设计,采用状态机的设计方法。
从图6中可以看出,当采用66MHZ的时钟信号时,软件结构上总共分为15个状态,读和写周期均需要8个状态。采用不同的时钟频率时,状态图需要做相应的调整。
下面结合图6简述本发明中FPGA软件的工作原理通电之后,FPGA工作在S0状态,检测68360的片选信号CS以及地址有效信号AS,若两个信号同时有效,证明有读或写的任务,从68360的地址总线上读取有效地址输出到SJA1000的地址/数据复用总线上,同时置SJA1000的片选CSO信号和地址有效ASO信号为有效状态,启动SJA1000的总线操作周期。检测68360的R/W信号,若为低,置RD/WR信号为低,进入S1状态,开始一个写周期;若R/W信号为高,置RD/WR信号为高,进入S8状态,开始一个读周期。
进入S1状态后,置ASO为低,这时地址已经被SJA1000读入。进入S2状态。
进入S2状态后,判断68360的数据有效信号DS,若DS有效,证明68360数据总线上为有效数据,读入数据然后写到SJA1000的地址/数据复用总线上,置DSACK信号为低告诉68360数据已经取走,置EO信号为高,转移状态到S3;若DS无效,则S2状态一直持续。
S3为一空状态,转移到状态S4。
在状态S4判断68360的AS信号是否无效,若是,置DSACK信号为高,转移状态到S5。
在状态S5继续判断68360的AS信号是否无效,若是,置DSACK信号为高,转移状态到S6;若AS有效则一直持续状态S5。
在状态S6置EO信号为低,转移状态到S7。
在状态S7置SJA1000的地址/数据复用总线为高阻状态,置CSO信号为高。至此完成一个写操作,回到状态S0。
进入S8状态后,置ASO为低,这时地址已经被SJA1000读入。进入S9状态。
进入S9状态后,置SJA1000的地址/数据复用总线为高阻状态,以便于SJA1000输出数据,置EO信号为高,转移状态到S10。
进入S10状态后,置DSACK信号为低,转移到状态S11.
S11为一空状态,转移到状态S12。
在状态S12读SJA1000的地址/数据复用总线上有效数据放到68360的数据总线上,转移状态到S13。
在状态S13置EO信号为低,转移状态到S14。
在状态S14判断68360的地址有效信号AS,若AS无效,证明68360已经读入数据总线上的有效数据,然后置DSACK信号为高,置CSO信号为高,并以移走68360数据总线上的有效数据,至此完成一个读操作,回到状态S0;若AS有效,则S14状态一直持续。
由于本发明硬件电路中的FPGA器件选用了Altera公司的ACEXlK芯片,因此本发明的软件设计是在Altera公司提供的MAX+plusII开发环境下完成的。MAX+plusII软件内部包含了所支持的Altera公司FPGA器件的硬件信息,所以在MAX+plusII上进行的仿真完全模仿了ACEXlK芯片的的工作结果。
图7是微控制器发送CAN网数据时FPGA器件的时序图。图8是微控制器读取CAN网数据时FPGA器件的时序图。图7和图8是在MAX+plusII下分别对68360读取和发送CAN网数据仿真的结果。CLK为FPGA所采用的时钟信号,为66MHZ,ADDRESS BUS和DATA BUS分别为和68360接口的地址和数据总线,AS、DS、CS、DSACK和R W分别为和68360接口的控制信号,AD BUS为和SJA1000接口的地址数据复用总线,AS0、RD WR、EO和CSO分别为和SJA1000接口的控制信号。如图8所示,参照本发明所做的时序分析,我们可以看出仿真结果很好的实现了68360和SJA1000之间的总线时序转换,FPGA器件所输出的波形完全符合68360和SJA1000的总线时序要求。由图8可见,68360仍然可以在三个时钟周期(90ns)内完成一次写操作,用FPGA转换几乎没有什么延迟。所以既不会影响CPU的工作效率,更不会影响CAN网的通信速率。
针对本发明所设计的硬件电路做了一系列的测试,试验证明通过FPGA的时序转换MC68360可以可靠的读写SJA1000的内部寄存器,成功的初始化SJA1000之后,MC68360在CAN网通信时的可靠性和实时性是令人满意的。根据本发明的方法可以成功地实现CSC2000变电站自动化系统的CAN网通信。
通过本发明的试验结果,可以证明用FPGA器件解决芯片之间的接口问题是非常方便而且经济适用的。本发明不仅用于变电站自动化领域,也适用于解决所有工业控制领域的CAN网通信问题。
权利要求
1.一种基于现场可编程门阵列实现微控制器和CAN网控制器之间通信的方法,该方法包括步骤用现场可编程门阵列实现微控制器和CAN网控制器之间的无缝连接,现场可编程门阵列器件为一个透明的元件,能自动快速地完成电气信号的逻辑转换;在微控制器发送CAN网报文时,现场可编程门阵列读取微控制器数据总线上的数据,送到CAN网控制器的发送缓冲区内,然后由CAN网控制器把报文发送CAN网上;在微控制器接收CAN网报文时,现场可编程门阵列读取CAN网控制器总线上的数据,通过与微控制器的接口将数据送到微控制器的相应接收区内,由微控制器处理报文。
2.根据权利要求1所述的方法,其特征在于所述的在微控制器发送CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照CAN网控制器的总线协议写有效数据到CAN网控制器相应地址的存储空间内,写周期结束。
3.根据权利要求1或2所述的方法,其特征在于所述的所述的在微控制器接收CAN网报文时,现场可编程门阵列执行流程包括判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照CAN网控制器的总线协议读取CAN网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。
全文摘要
本发明公开了一种基于现场可编程门阵列实现微控制器和CAN网控制器之间通信的方法,该方法包括步骤用现场可编程门阵列实现微控制器和CAN网控制器之间的无缝连接;FPGA上实现两个并行总线接口,其中一个接口负责与微控制器通信,另一个接口负责与CAN网控制器通信,FPGA的延迟为纳秒级的,这样就实现了微控制器和CAN网控制器之间的总线信号逻辑转换,弥补了两者总线协议之间的差异性,实现了CAN网通信。该方法可以充分发挥微处理器地址线数据线非复用的特点,对CAN网络控制器的读/写操作一次完成,大大提高了处理效率,简化了软件并提高了软件的通用性,该方法更加简单、灵活、可靠。
文档编号H04L12/24GK1441578SQ0310974
公开日2003年9月10日 申请日期2003年4月15日 优先权日2003年4月15日
发明者任雁铭, 陈文升, 郁惊一, 叶艳军, 晋阳珺 申请人:北京四方继保自动化有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1