can总线控制器的接口ip核设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

发送,最高七位不能全为“隐性”。

图2.3仲裁场结构
(3)控制场
控制场是由保留位和数据长度代码构成。

其中保留位必须是“显性",作为扩展时使用,数据长度代码是待发送数据的字节数量,接收器认可“显性’’与“隐性”的全部组合m】。

仲裁场-●控制场■『效据场

或CRC
Ⅸaa&D“:1DLcO
r'm

保留位数据长度代码
图2.4控制场结构
数据长度代码是四位,其中d代表显性,r代表隐性。

对其数据字节进行编码后的真值表如图2.5所示。

一…...
数据字节的r费眨据长度·代码
个数
DLC3D●Q亡HC1Dl∞
odddd
1ddd
2ddd
3dd
4drdd
5dd
6da
7dr
8ddd
图2.5数据长度代码真值表
(4)数据场
数据场由数据帧里的发送字节构成,最多可以发送八个字节,字节从最高位开始发送。

(5)CRC场
CRC场由CRC序列和CRC界定符构成。

其中CRC序列有15位,是由循环冗余效验模块生成,紧跟其后是隐性的CRC界定符。

10
图2.8远程帧结构
2.3.3错误帧
错误帧是由错误标志和错误界定符两个场构成。

错误标志有两种不同的表现形式:主动错误标志(Activeerrorflag)和被动错误标志(Passiveerrorflag),其中主动错误标志由六个“显性’’位组成,被动错误标志由六个“隐性"位组成嘲【18】【40】。

图2.9错误帧结构
错误界定符由八个“隐性”位组成。

当开始传送错误标志后,每个节点都会发送“隐性"位,并监视总线,直到检测到“隐性"位为止,然后发送剩余的“隐性’’位【习。

2.3.4过载帧
过载帧是由过载标志和过载定界符构成。

过载帧只能在帧间间隙才产生,因此可以通过这种方式来区分过载帧和错误帧。

图2.10过载帧结构
其中过载界定符与错误界定符的工作过程一致,这里就不做介绍。

12
2.3.5帧间空间
帧间空间是由间隙场和总线空闲场构成。

无论是数据帧还是远程帧,要想与其他帧分开,是通过帧间空间来实现的。

当被动错误的节点使用于之前的报文发生器时,帧间空间包括间隙、挂起传送(SUSPENDTRANSMISSIoN)、总线空闲。

图2.11“错误被动"的帧间空间
当没有被动错误的节点使用于之前的报文发生器时,帧间空间包括间隙、总线空闲,在此作为报文的接收器。

图2.12.不是“错误被动"的帧间空间
间隙是由三个“隐性”位组成。

当处于间隙期间时,所有的节点都不能够发送数据帧或者远程帧,而是用来产生过载条件。

总线空闲所需要的时间是不定的,只要检测到总线处于空闲状态,任何节点都能够访问总线。

在其他报文发送期间,被挂起的待发送报文在间隙场后的第一位启动发送,而此时总线上检测到的“显性"位被认定为帧的起始【5】。

2.4位定时要求
标称比特率(NominalBitRate)定义:在不需要同步的情况下,理想发送器每秒发送的位数,CAN总线上所有的器件有必须使用相同的比特率【18】【40】。

标称位时间(NominalBitTime)是由不同的时间片段构成,其分为:同步段、传播时间段、相位缓冲段1、相位缓冲段2。

标称比特率与标称位时间有如下关系式:标称位时间=1/标称比特率。

东北师范大学硕士论文
主外设和从外设两大类【z¨。

(1)主外设是Avalon总线传输的发起者,能够发起总线的传输;
(2)从外设是Avalon总线传输的响应者,并不能发起总线传输。

一般所说的Avalon外设大多数指的是从外设,从外设主要是与AValon总线之间进行互联通信,市面上的大部分口核也是作为从外设存在而嵌入到片上可编程系统上。

因本论文研究的口核也属于从外设,所以下面的介绍主要围绕着从外设来进行。

3.2.3Avalon信号
Avalon接口定义了如片选、读使能、写使能、地址线、数据线等信号类型,这些信号类型是用来描述从外设与Avalon接口连接的内部关系【211。

AValon外设可使用一些基本信号,来完成最基本的传输过程。

Av出on部分信号类型如图3.2所示。

信号类型
宽度方向必需说明系统横块和A伯l∞总线擞块的全局时钟信号。


clklmno有趣线健输都同步于cll‘。

双有异步从端口才能钉
■嚣c址。

addfess
l一32mno
求自A、,_Ion总线卞筻块的地向L线。

从端门的渡请求信号。

“1从端r]不输m数嘏时不
readlmno错婴该信号。

蓿使用了浚信号,托.ddI衄信号也
必翻耗f宦}”。

fe曩d妊hIt-1.32a咀t
读传输-lt输出列Aral∞总线横块的数据线。

’’从端口不输m数据蹦坷二需腰浚信号.若使雕了该信号.I孙d信‘;也必坝馊jlj。

从端门的写请求信号。

“々从端门不接收数据时不
啊,fItelmno篙婺该信号.若使Il|了该信号.w血ed_协信号也
必乃{f萎}"。

巧传输11l嫩门Ara】∞总线橙块的敏掇线:’p、端
’vfitctl嘲1.32m几不接收数据喇不前螫该信号.若使"J了该信号。

晡帆te恼号也必须使川。

图3.2
Avalon部分信号类型3.3Avalon从端口传输
AValon端口是由一系列Avalon信号组成,这些Avalon信号被当作单独的接口来使用,AvaJ0n端口分为主端口和从端口Lzl】。

(1)主端口是传输的Avalon信号类型集合的发起者:
(2)从端口是收到传输请求的Avalon信号类型集合的响应者。

Avalon主端口是通过AValon交换结构与AValon从端口连接在一起。

这里AValon交换结构起着信号转换的作用。

因本文主要涉及到的是从外设与Avalon总线之间进行通信,故下面只介绍从端口传输特点。

从端口基本信号包括地址信号、写数据信号、片选信号、读数据信号、读信号、写信号等信号【2l】【捌。

3.3.1从端口基本读传输
从端口基本读传输是由AVaJ∞交换结构发起【21】【翻,一个数据单元从从端口中被读取,经过A、脚on接口被送给后台的NlOSCPU中,整个传输过程需要消耗一个时钟周期。

这个过程中数据的传送,是通过Avalon总线模块与从外设之间的通信来完成的。

图3.3中画红圆圈的地方就是Avalon总线模块与从外设的传输部分。

18
东北师范大学硕士论文
用户自定义外设的核心思想就是用硬件描述语言HDL对芯片的内部逻辑功能进行描述。

用户自定义外设内部由芯片基本任务逻辑、寄存器文件、AValon接口信号这三部分构成。

(1)芯片基本任务逻辑就是依据芯片资料,来描述芯片内部的工作特性和基本功能,是自定义外设的主体部分。

(2)寄存器文件是连接基本任务逻辑与Avalon总线模块之间进行数据交换的桥梁。

通过对寄存器文件的控制,来控制芯片基本任务逻辑,进而达到控制整个自定义外设。

(3)Avalon接口信号与寄存器文件之间进行信号互联。

寄存器文件所需信号只有与Avalon接口信号一一对应,才能把自定义外设正确的挂载到AValon总线模块上。

肖,,漆;i受:P}:
任状念搿柞器,
务纷制崮存器·Ava-on
逻数|l‘搿存器·
从毒孟f二i
酗_耄i戏他窝仃器·
图3.7从端口的用户自定义外设内部框图
将用户自定义外设按照内部结构进行设计后,用QllaItlls软件对其HDL源文件进行.一
编译、仿真,以及构建系统的硬软件平台来验证自定义外设的功能。

验证完成后,利用SOPCBuilder的用户自定制功能,将自定义外设封装成一个SOPCBuilder元件。

最后把描述硬件的HDL源文件,系统自动生成的Cl嬲s.ptf描述文件以及用于软件验证的驱动C语言程序,打包放在同一个文件夹中。

至此用户自定义外设(疋核)制作完成。

21
东北师范大学硕士论文
协议引擎模块两大部分。

(1)CAN缓冲器模块内部有三个发送缓冲器、两个接收缓冲器、两个验收屏蔽寄存器以及六个验收滤波寄存器。

缓冲器

出爱兰舌董
蕈誊爱主誉羔报名
酞确
按镌∞∞12也篓基芷卜oⅢ
芒乏宝苍岩螽尝岌媸字节疗:酬发生暑
接受
■●一一_●●●一■I●一一_____●一●_I●_●●一_●一●■
接受图4.3
CAN缓冲器模块内部连接图(2)CAN协议引擎模块内部是由协议有限状态机、循环冗余校验、错误管理逻辑以及位时序逻辑四个模块组成。

其中有限状态机模块是核心部分,能够对数据流的流向和传输方式进行控制:循环冗余校验模块是用来产生CRC代码的;错误管理逻辑模块是用来对CAN总线上的故障进行隔离的;位定序逻辑模块的作用是监控总线输入和根据CAN协议处理与总线相关的位时序L州。

图4.4CAN协议引擎模块内部连接图
棵盔勰磊态棒盔勰
懒一蝴懈一隔黼一㈣嗍一燃黼一一懈一黼—一嗍一黼囊嗍山o叠西山:2僻醢鄞L.L∞《o山芷x上
东北师范大学硕士论文
第五章lP核的VHDL设计
CAN总线控制器的接口IP核设计是基于舢tera公司的QuartusII5.O软件作为设计平台,通过V】{DL硬件描述语言对MCP2515芯片的内部功能进行描述和仿真。

MCP2515是一款CAN总线控制器芯片,CAN总线控制器与其他设备之间进行通信是通过报文进行传输的。

带有SPI接口的MCP2515芯片不仅可以进行报文发送,同时也可以进行报文接收。

MCP2515有五种工作模式【24】【3s1,分别为:
1.配置模式。

2.环回模式。

3.休眠模式。

4.仅监听模式。

5.正常模式。

通过设置CANCTRL控制器的模式请求位REQOP来选择新的模式,当工作模式改变时,必须等所有的报文发送完毕后新的工作模式才能生效,通过读取CANSTAT状态寄存器的0PMODE位来验证新的模式【24】【351。

由于只要系统一上电或者系统复位,MCP2515就会自动进入配置模式,因而这种模式不需要设置。

下面将分别详细介绍其他四种模式下IP核的VHDL设计过程。

5.1环回模式
在环回模式下,MCP2515内部的发送缓冲器与接收缓冲器之间可以进行报文的自发自收,而不经过CAN总线,这种模式主要应用于系统的开发和测试【24】【3s1。

环回模式是一种安静模式【35】,MCP2515不发送报文信息。

通过对滤波寄存器和屏蔽寄存器进行相关设置,可以将指定的报文信息送入接收缓冲器中。

通过对CANCTRL控制寄存器的REQOP位进行设置,来启动环回模式【24】【3s1。

图5.1是在环回模式下MCP2515控制器的系统结构框图。

图5.1环回模式下McP2515控制器的系统结构框图
东北师范大学硕士论文
phasel<_’O。


else
i坟cll@v=¨01l11O”)tllen~.30个输入数据的时刻标志位
phaSel<-’1’;
锄di£
eIld征
i坟ph硒e2=’1’)tllen
phaSe2<.’O’;
else
if【clkdiv=”011000”)men….24个输入数据的结束标志位
ph弱e2<=’l’;
endi£
明di£
锄di£
endpr0Icess;
5.2休眠模式
MCP2515具有内部休眠模式,使得功耗最少。

即使MCP2515处于休眠状态,SPI接口仍然保持正常的读操作,也可以访问MCP2515内的所有寄存器【24】。

要想使MCP2515处于休眠模式下,需要设置如下几个寄存器:
CANClIRI—AN控制寄存器(地址:】【Fh)
对于CAN控制寄存器,主要关注其高三位REQOP2、REQoPl、REQOP0,在休眠模式下设置为001。

在休眠模式下,MCP2515将监视接收引脚上的总线活动情况。

如果CANINTE中断使能寄存器的WAKIE位设置为1,将唤醒MCP2515并产生中断。

因此,通过设置如下2个中断
寄存器来唤醒器件。

cANINl'E_中断使能寄存器(地址:2Bh)
CANINl’F一中断标志寄存器(地址:2Ch)
IMERRF1wAKIFlERRIFITx2IFlTXlIFITXOIFIRxlIFIRXOIFlwAKIE位是唤醒中断使能位。

当wAKIE为1时,CAN总线上有活动时中断:当wAKIE为0时,禁止中断。

WAl(IF位是唤醒中断标志位。

当WAKIF为1时,有等待处理的中断;当WAKIF为0时,无等待处理的中断。

当MCP2515处于正常模式下,对其内部相关寄存器进行设置,就可以就进入到休眠模式。

由于在休眠模式下寄存器设置比较简单且其他模式下都有介绍,所以这里就不详
32
东北师范大学硕士论文
细介绍在休眠模式下MCP2515的VHDL设计过程。

5.3仅监听模式
在仅监听模式下,通过对RXBnCTRL接收缓冲器中的工作模式位R)(M进行相关设置,MCP2515可以接收到所有的有效报文信息,这种模式常用于总线监视应用或者波特率检测【24】【35】。

仅监听模式是一种安静模式【351,MCP2515不发送任何报文信息。

通过对滤波寄存器和屏蔽寄存器进行相关设置,可以将指定的报文信息送入接收缓冲器中;通过对CANCTRL控制寄存器的REQOP位进行设置,来启动仅监听模式【24】【3卯。

由于仅监听模式下的VHDL设计与其他模式下的设计步骤基本相同,这里就不做介绍。

5.4正常模式
正常模式为MCP2515的标准工作模式。

当MCP2515在正常模式下,会主动监控CAN总线上的所有报文信息,并且产生确认位和错误帧等;只有在正常模式下,MCP2515才能在CAN总线上进行报文的传输【24】。

图5.5是正常模式下系统结构框图。

Ih

TXCANIRxCAN数"码码CAN总线
CAN总线月卜k管^^f管YFPGA.SPl){搴宙器外控制器外’SPI‘FPGA、I、yr显
围电路围电路
显不不IⅨCAN
TXCAN
4图5.5正常模式下系统结构框图
5.4.1正常模式下MCP2515内部寄存器设计
在正常模式下,首先要对CANCTRL控制寄存器进行设定,主要关注其高三位
REQOP2、REQOPl、REQOP0设置为000。

IREQOP2lREQOPllREQOP0lABATl0SMICLKENlCLKPRElICLKPRE0I
通过读取CANSTAT状态寄存器来验证是否进入正常模式,读取工作模式高三位OPMOD2、OPMODl、OPMODO。

l0PMOD2IOPMODlIOPMODOl—lICOD2IICODlIICOD0l…l
进入正常模式后,对MCP2515内部寄存器的地址,控制字进行设定。

MCP2515芯片内部有很多寄存器,可以分成发送缓冲相关寄存器,接收缓冲相关寄存器,验收滤波和屏蔽寄存器,位定时寄存器,错误计数器以及CAN控制寄存器等。

33
东北师范大学硕士论文

报文载入集成缓
冲器MAB中
『t—N一一报文移入接收缓冲器I℃,(Bl中
I读取≯≥数据

l数码管输出显示
图6.5报文接收过程报文移入接收缓冲器lⅨB0中
读取报文数据数码管输出显示
6.3系统验证
在基于NIOSIIDE软件集成环境下,对m核进行系统验证。

打开NIoSIIIDE,建立新的工程。

用C语言编写驱动与控制程序,这里只需要控制在底层ⅦDL中定义的相关寄存器,进而控制m核。


图6.6在N10SII中建立工程
47。

相关文档
最新文档