CN1181652C - 一种基于现场可编程门阵列实现的本地网通信的方法 - Google Patents
一种基于现场可编程门阵列实现的本地网通信的方法 Download PDFInfo
- Publication number
- CN1181652C CN1181652C CNB031097464A CN03109746A CN1181652C CN 1181652 C CN1181652 C CN 1181652C CN B031097464 A CNB031097464 A CN B031097464A CN 03109746 A CN03109746 A CN 03109746A CN 1181652 C CN1181652 C CN 1181652C
- Authority
- CN
- China
- Prior art keywords
- microcontroller
- local network
- read
- data
- network controller
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明公开了一种基于现场可编程门阵列实现微控制器和CAN网控制器之间通信的方法,该方法包括步骤:用现场可编程门阵列实现微控制器和CAN网控制器之间的无缝连接;FPGA上实现两个并行总线接口,其中一个接口负责与微控制器通信,另一个接口负责与CAN网控制器通信,FPGA的延迟为纳秒级的,这样就实现了微控制器和CAN网控制器之间的总线信号逻辑转换,弥补了两者总线协议之间的差异性,实现了CAN网通信。该方法可以充分发挥微处理器地址线数据线非复用的特点,对CAN网络控制器的读/写操作一次完成,大大提高了处理效率,简化了软件并提高了软件的通用性,该方法更加简单、灵活、可靠。
Description
技术领域
本发明涉及数据通信技术领域,更具体地涉及在自动控制领域中利用现场可编程门阵列(FPGA)实现本地网(CAN)通信的方法。
技术背景
在工业自动控制领域,本地网(CAN)现场总线得到了广泛应用。一般实现本地网通信有两种方式,一种是在主控制器里集成了本地网控制器;另一种为采用专用的本地网控制器,用CPU来控制它实现本地网通信。
专用的本地网控制器有两种,一种是利用并行总线和主控制器交换数据,另一种利用串行通信(例如8PI总线)和主控制器交换数据。显然,第一种具有更好的通信性能,所以在工业控制领域的应用也比较广泛。
在目前的大多数采用并行总线交换数据的本地网控制器中,大多采用数据/地址总线复用的形式,即遵循Intel系列微处理器的总线协议,而现在大多数的微处理器和微控制器都是数据/地址总线分开的,这样在工程中就会有很多麻烦。
在四方公司CSC2000变电站自动化系统中,网关功能是通过CSI200E测控装置的主板来完成的,其核心芯片为摩托罗拉公司的MC68360微控制器,内部集成有10M以太网控制器,通过外扩本地网通信控制器来实现以太网和本地网之间的通信协议转换。CSC2000采用SJA1000为本地网通信控制器,其和MC68360微控制器之间通过8位数据总线来交换数据,但其总线时序和MC68360微控制器的总线时序并不是很吻合,以前的做法是利用数字元器件组成组合电路实现了两种总线之间的时序转换,这种做法使得硬件电路变得比较繁杂,而且逻辑转换很难控制得很精确。在这种实现方案中,微处理器对SJA1000的每次数据读/写操作都必须分两次来完成,微处理器先将要读/写的地址送到8位数据线上,然后再从8位数据线上读或写数据。这种操作降低了微处理器的处理效率,而且在软件上还需要采取必要的措施以保证操作信号的连续性,使软件的通用性降低。可以用本发明提出的方法来解决这个问题。
发明内容
本发明的目的在于克服上述的缺陷,利用用现场可编程门阵列(FPGA)能很方便的实现时序逻辑和组合逻辑的特点,本发明提出一种基于现场可编程门阵列实现微控制器和本地网控制器之间通信的方法,该方法包括步骤:
用现场可编程门阵列实现微控制器和本地网控制器之间的无缝连接,通过现场可编程门阵列进行电气信号的逻辑转换;
在微控制器发送本地网报文时,现场可编程门阵列读取微控制器数据总线上的数据,送到本地网控制器的发送缓冲区内,然后由本地网控制器把报文发送本地网上;
在微控制器接收本地网报文时,现场可编程门阵列读取本地网控制器总线上的数据,通过与微控制器的接口将数据送到微控制器的相应接收区内,由微控制器处理报文。
所述的在微控制器发送本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照本地网控制器的总线协议写有效数据到本地网控制器相应地址的存储空间内,写周期结束。
所述的在微控制器接收本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照本地网控制器的总线协议读取本地网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。
利用本发明提出的方法,可以很好的实现工业控制领域的本地网通信。该方法可以充分发挥微处理器地址线数据线非复用的特点,对本地网控制器的读/写操作一次完成,大大提高了处理效率,简化了软件并提高了软件的通用性。
附图说明
图1是微控制器和SJA1000的接口示意图。
图2是微控制器读周期时序图。
图3是微控制器写周期时序图。
图4是本地网通信控制器读周期总线时图。
图5是本地网通信控制器写周期总线时序图。
图6是FPGA器件的状态转移图。
图7是微控制器发送本地网数据时FPGA器件的时序图。
图8是微控制器读取本地网数据时FPGA器件的时序图。
具体实施方式
本发明提出的一种基于现场可编程门阵列实现微控制器和本地网控制器之间通信的方法,该方法包括步骤:
用现场可编程门阵列实现微控制器和本地网控制器之间的无缝连接,通过现场可编程门阵列进行电气信号的逻辑转换;
在微控制器发送本地网报文时,现场可编程门阵列读取微控制器数据总线上的数据,送到本地网控制器的发送缓冲区内,然后由本地网控制器把报文发送本地网上;
在微控制器接收本地网报文时,现场可编程门阵列读取本地网控制器总线上的数据,通过与微控制器的接口将数据送到微控制器的相应接收区内,由微控制器处理报文。
所述的在微控制器发送本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照本地网控制器的总线协议写有效数据到本地网控制器相应地址的存储空间内,写周期结束。
所述的在微控制器接收本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照本地网控制器的总线协议读取本地网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。
图1是微控制器和SJA1000的接口示意图。如图1所示,为了实现上述的方法,在FPGA上做出两个并行接口,一个和微控制器MC68360通信,另一个与本地网控制器SJA1000通信,从而完成两者之间总线信号的逻辑转换。在通信协议上可以理解为只实现物理层协议的转换,而丝毫不用考虑上层协议所传输数据的内容。
因为FPGA的延迟都是纳秒级的,所以这样实现的本地网通信,其通信性能可以得到很好的保证。对于微控制器,可以象读取ROM那样来读写本地网控制器的内部寄存器;对于本地网控制器,可以随便接收来自微控制器的指令和数据,而丝毫感觉不出总线协议上的差异。
在四方公司C8C2000变电站自动化系统中,网关功能是通过CSI200E测控装置的master主板来完成的,其核心芯片为摩托罗拉公司的MC68360微控制器,内部集成有10M以太网控制器,通过外扩本地网通信控制器来实现以太网和本地网之间的通信协议转换。CSC2000采用SJA1000为本地网通信控制器,其和68360之间通过8位数据总线来交换数据。
既然要利用FPGA实现68360和SJA1000之间的接口,那么就要在FPGA芯片上按照68360和SJA1000的时序分别的做两个并行接口,当从本地网上接收数据时,FPGA要能够从SJA1000读取数据,然后在按照68360的总线协议把数据放在其接口数据总线上,发送数据到本地网时,其过程正好相反。
在图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是本地网通信控制器读周期总线时序图。图5是本地网通信控制器写周期总线时序图。相对于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公司的ACEX1K芯片,因此本发明的软件设计是在Altera公司提供的MAX+plusII开发环境下完成的。MAX+plusII软件内部包含了所支持的Altera公司FPGA器件的硬件信息,所以在MAX+plusII上进行的仿真完全模仿了ACEX1K芯片的的工作结果。
图7是微控制器发送CAN网数据时FPGA器件的时序图。图8是微控制器读取本地网数据时FPGA器件的时序图。图7和图8是在MAX+plusII下分别对68360读取和发送本地网数据仿真的结果。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的工作效率,更不会影响本地网的通信速率。
针对本发明所设计的硬件电路做了一系列的测试,试验证明通过FPGA的时序转换MC68360可以可靠的读写SJA1000的内部寄存器,成功的初始化SJA1000之后,MC68360在本地网通信时的可靠性和实时性是令人满意的。根据本发明的方法可以成功地实现CSC2000变电站自动化系统的本地网通信。
通过本发明的试验结果,可以证明用FPGA器件解决芯片之间的接口问题是非常方便而且经济适用的。本发明不仅用于变电站自动化领域,也适用于解决所有工业控制领域的本地网通信问题。
Claims (3)
1、一种基于现场可编程门阵列实现微控制器和本地网控制器之间通信的方法,该方法包括步骤:
用现场可编程门阵列实现微控制器和本地网控制器之间的无缝连接,通过现场可编程门阵列进行电气信号的逻辑转换;
在微控制器发送本地网报文时,现场可编程门阵列读取微控制器数据总线上的数据,送到本地网控制器的发送缓冲区内,然后由本地网控制器把报文发送本地网上;
在微控制器接收本地网报文时,现场可编程门阵列读取本地网控制器总线上的数据,通过与微控制器的接口将数据送到微控制器的相应接收区内,由微控制器处理报文。
2、根据权利要求1所述的方法,其特征在于:所述的在微控制器发送本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入写周期,按照微控制器的总线协议读微控制器的写操作目的地址,按照微控制器的总线协议读微控制器的有效数据,按照本地网控制器的总线协议写有效数据到本地网控制器相应地址的存储空间内,写周期结束。
3、根据权利要求1或2所述的方法,其特征在于:所述的在微控制器接收本地网报文时,现场可编程门阵列执行流程包括:判断微控制器的读写信号进入读周期,按照微控制器的总线协议读微控制器读操作目的地址,按照本地网控制器的总线协议读取本地网控制器相应地址存储空间上的有效数据,按照微控制器的总线协议把有效数据传送给微控制器,读周期结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031097464A CN1181652C (zh) | 2003-04-15 | 2003-04-15 | 一种基于现场可编程门阵列实现的本地网通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031097464A CN1181652C (zh) | 2003-04-15 | 2003-04-15 | 一种基于现场可编程门阵列实现的本地网通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1441578A CN1441578A (zh) | 2003-09-10 |
CN1181652C true CN1181652C (zh) | 2004-12-22 |
Family
ID=27770233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031097464A Expired - Fee Related CN1181652C (zh) | 2003-04-15 | 2003-04-15 | 一种基于现场可编程门阵列实现的本地网通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1181652C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447904B (zh) * | 2008-10-31 | 2011-06-22 | 中国电力科学研究院 | 一种基于单个can卡的多地址接收、发送方法 |
CN104077258B (zh) * | 2014-07-03 | 2017-06-16 | 成都智科通信技术股份有限公司 | SPI与Localbus的互通方法及其应用 |
CN112711205A (zh) * | 2019-10-25 | 2021-04-27 | 中电智能科技有限公司 | 可编程电子控制器单元 |
CN113905095B (zh) * | 2021-12-09 | 2022-04-05 | 深圳佑驾创新科技有限公司 | 一种基于can通信矩阵的数据生成方法及装置 |
CN115022424B (zh) * | 2022-06-27 | 2024-01-09 | 西安热工研究院有限公司 | 水电lcu控制器网卡虚拟控制方法、系统、设备及其介质 |
-
2003
- 2003-04-15 CN CNB031097464A patent/CN1181652C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1441578A (zh) | 2003-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7328399B2 (en) | Synchronous serial data communication bus | |
CN1015861B (zh) | 通信交换部件 | |
CN101599966B (zh) | 一种多虚拟机应用的数据过滤方法 | |
CN1825292A (zh) | 一种直接存储器存取装置及单通道双向数据交互实现方法 | |
CN110297797B (zh) | 异构协议转换装置和方法 | |
CN1783330A (zh) | 存储元件 | |
CN107861893B (zh) | I3c验证从设备、主从设备的通信验证系统及方法 | |
CN105677598B (zh) | 基于i2c接口快速读取多个mems传感器数据的模块和方法 | |
CN1181652C (zh) | 一种基于现场可编程门阵列实现的本地网通信的方法 | |
CN101075961A (zh) | 片上网络设计用的一种自适应打包方法 | |
WO2009000794A1 (en) | Data modification module in a microcontroller | |
CN103136163A (zh) | 可配置实现fc-ae-asm和fc-av协议的协议处理器芯片 | |
CN106980587A (zh) | 一种通用输入输出时序处理器及时序输入输出控制方法 | |
CN1588337A (zh) | 串行通信总线外部设备接口 | |
CN1292563C (zh) | 一种实现以太网管理接口的装置 | |
CN206461608U (zh) | 基于以太网物理层芯片速率连续可变的收发器 | |
CN104079460A (zh) | 基于powerlink技术的板间通信组件 | |
US11811897B2 (en) | Method for data processing of frame receiving of an interconnection protocol and storage device | |
Du et al. | Research on XDMA high-speed data transmission architecture based on PCIe | |
CN206975631U (zh) | 一种通用输入输出时序处理器 | |
CN1142637A (zh) | 使用对方存储器的二个处理器间非同步串行通信收发装置 | |
CN1320471C (zh) | 半双工串行通信总线外部设备接口 | |
CN102722143B (zh) | 采用复杂可编程逻辑器件扩展数字信号处理器端口的方法 | |
CN1529476A (zh) | 以太网与atm层对接数据转换校验装置及方法 | |
JPH0756468A (ja) | 入力調整を行う多重送信バスコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: BEIJING SIFANG JIBAO AUTOMATION CO., LTD. Free format text: FORMER NAME OR ADDRESS: SIFANG JIBAO AUTOMATION CO., LTD., BEIJING |
|
CP03 | Change of name, title or address |
Address after: No. four, 9 street, Beijing, Haidian District Patentee after: BEIJING SIFANG AUTOMATION Co.,Ltd. Address before: No. four, 9 street, information industry base, Haidian District, Beijing Patentee before: Beijing Sifang Automation Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041222 |