摩托罗拉和英特尔的矩阵排布(里面的数字不是)是镜像对称(左右对称)。
摩托罗拉排布
英特尔排布.
从流程的角度来讲收发双方应该在实现代码前确定frame的结构,这个的产物就是dbc。
一旦确定好dbc为motorola或者intel,那么在代码的底层frame的实现就是根据dbc定义。
```c
typedef struct FRAME12345678_M
{
u1 X12: 8;
u1 X345_M: 8;/*_M-msb, _L-lsb*/
u1 X678_M: 4;
u1 X345_L: 4;
u1 X678_L: 8;
} ;
union
{
u1 x[4];
FRAME12345678_M frame12345678;
} Frame12345678_Moto;
typedef struct FRAME12345678_I
{
u1 X12: 8;
u1 X345_L: 8;
u1 X345_M: 4;
u1 X678_L: 4;
u1 X678_M: 8;
} ;
union
{
u1 x[4];
FRAME12345678_I frame12345678;
}Frame12345678_Intel;
发送数据 0x12345678,根据tcp/ip 要从0x12发起。其中0x12,0x345,0x678各为三个完整信号。
根据motorola的方法排列数据。
根据intel的方法排列数据。
可以发现采用motorola的排列符合直觉的判断和习惯,但是它的所占位数不是连续。
intel的恰恰相反。
两种方法没有明显的优缺,intel方式也许更加符合开发者认知,motorola比较符合顾客的认知。