新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA的CAN总线通信节点设计

基于FPGA的CAN总线通信节点设计

作者: 时间:2012-04-19 来源:网络 收藏

2。2顶层模块

顶层的模块如图5所示。其中clkdiv模块是将输入的50MHz时钟clock十分频后作为模块基准时钟。SJACTROL模块是控制的主模块,而RW模块则是根据主模块的信号生成SJA1000所需要的读写时序信号。SJACTROL模块通过start和iswr两个信号通知RW模块是否要进行读或写操作。若是写操作,则将地址和数据通过Addrout和Dataout传递给RW,RW将负责把数据准确地送到SJA1000的数据地址复用ADDR,并驱动SJA1000接收数据,在写操作完成后发送writeover信号通知SJACTROL写操作完成。读操作时RW根据SJACTOL送来的地址,从SJA1000的数据总线上读取数据,并将得到的数据通过Datasave总线返回给SJACTROL。

图5 顶层模块设计

图5顶层模块

SJACTROL的状态机通过5个状态的转换来实现控制:空闲状态、初始化状态、查询状态、读状态、写状态。RW则是按照SJA1000的芯片数据手册进行时序逻辑设计。在编写模块时,需注意双向总线的编写技巧。双向口最好在顶层定义,否则模块综合的时候容易出错。

3仿真结果

中利用Verilog编程产生SJA1000的片选信号CS,地址锁存信号ALE,读写信号RD、WR。这些控制信号共同驱动SJA1000进行数据接收和发送。设计选取的是virtex系列的芯片,逻辑开发在ISE平台上进行。在FPGA的调试阶段,使用xilinx的应用软件ChipScopepro(在线逻辑分析仪)来在线观察FPGA设计内部信号的波形,它比传统的逻辑分析仪更方便。图6为在线进行数据传送接收时的实际波形。

图6SJA1000接收和发送数据的时序仿真

图6SJA1000接收和发送数据的时序仿真

4结束语

通过对系统的分析,利用FPGA作为的主控制单元,对的硬件接口电路设计方案进行了详细的说明,并编写了CAN通信流程中的初始化程序、数据发送接收程序。通过软硬件的联调,实现了CAN总线的通信功能,系统工作状态良好。实践证明CAN通信节点采用FPGA作为核心控制单元,与传统的单片机设计相比,更加灵活并且扩展性更强。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭