区域控制器可划分为can控制器,接口模块和ip功能模块三个部分,如图 2??1。can控制器与can总线相连,负责在can总线上的收发信息,与其它can控制器进行通讯。ip功能模块则是完成具体的功能定义,例如将传感器产生的数据转换成能在can总线上传输的数据帧,或是对某个数据帧进行处理,产生相应的控制信号等等。接口模块完成的主要功能有两个:一个是对can控制器进行初始化,写相应的控制字寄存器使can控制器进行初始化工作;另一个就是实现接口的作用,将ip功能模块产生的数据帧传递给can控制器,同时将can控制器接受的数据帧传递给相应的ip功能模块。can控制器已经有很多较成熟的产品,ip功能模块则是需要根据具体的应用进行设计,因此,这里只给出通用接口模块的设计。在这里选择使用nios ii cpu完成上述接口模块的功能。但是在ip模块和can控制器如何与cpu相连就产生了两种较为理想的方案。由于nios cpu的接口是avalon总线时序的,所以第一种方案就是ip核和can控制器通过avalon总线直接与cpu相连.使用pio连接的好处就是不需要了解avalon时序,只需要调用pio相应的读写操作函数就可以完成数据传输。但是这样就相当于在cpu和外设之间加了一层接口,势必会影响传输速度,而且pio的数量是随着外设数量的增多而增多,如果外设很多时pio占用的逻辑单元也是不小的开销,并且ip核的添加也不够灵活。相比较而言,采用外设通过avalon总线直接与cpu相连就可以避免上述的不足,而只需要ip核和can控制器满足avalon时序就可以了。