当前位置:文档之家› CRC终于搞成了

CRC终于搞成了

CRC终于搞成了
CRC终于搞成了

今晚看了好久CRC,最后还有没有很明白。但是做为一个做工程的,有结果就好了。

我要用的不是标准的CRC公式,是X8+1这个,呵呵。下面开始总结。

CRC用到的主要是模2除法,开始看得一头雾水,只有把这个弄清楚了,后来才有了思路。才知道CRC的计算过程。(此处是重点,我费了很多劲儿理解,省去若干字。)不知道计算过程,程序是绝对不能看懂的。

还有这么一句话:多项式的MSB略去不记,因其只对商有影响而不影响余数。就是说对于CRC-CCITT=X16+X12+X5+1,可以只用0x1021,bit16位的1不要了,只留下bit12、5、0。(参考一篇modbus的说明)

记住这两点,再参考下面一段话:

生成CRC-16校验字节的步骤如下:

①装如一个16位寄存器,所有数位均为1。

②该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。

③把这个16寄存器向右移一位。

④若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”

运算;若向右移出的数位是0,则返回③。

⑤重复③和④,直至移出8位。

⑥另外8位与该十六位寄存器进行“异或”运算。

⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。

⑧这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。

别的都是弯路,以上是最清楚的、实惠的解释了。本文最后,附上另一位网游的文章,也给我很大启发。

下面是成功的程序:

unsigned short crc(unsigned char *addr, int num)

{

int i;

while (num--)

{

crc8 ^= *addr++;

for (i = 0; i < 8; i++)

{

if (crc8 & 128)

{

crc8 <<= 1;

crc8 ^= 0x01; //1010 0000 0000 0001b

}

else

{

crc8 <<= 1;

}

}

}

return crc8;

}

另外这样也行:

unsigned short crc(unsigned char *addr, int num) {

//unsigned short crc8 = 0xFF;

int i;

while (num--)

{

crc8 ^= *addr++;

for (i = 0; i < 8; i++)

{

if (crc8 & 1)

{

crc8 >>= 1;

crc8 ^= 0x80; //1010 0000 0000 0001b

}

else

{

crc8 >>= 1;

}

}

}

return crc8;

}

可能是因为我的x8+1只有一位的原因吧,或者什么其他的原因,我已经不愿意思考下去了。好累。注意:其中两个关键的地方就是移位1.操作不同;2.生成多项式对应的字节值不同。调整这两个变量,我想,能实现不同生成多项式的CRC算法。

另外还有查表的方式,希望以后再用到,我可以很快的搞懂。

转:

CRC 校验源码分析

这两天做项目,需要用到CRC 校验。以前没搞过这东东,以为挺简单的。结果看看别

人提供的汇编源程序,居然看不懂。花了两天时间研究了一下CRC 校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省点时间。

先是在网上下了一堆乱七八遭的资料下来,感觉都是一个模样,全都是从CRC 的数学

原理开始,一长串的表达式看的我头晕。第一次接触还真难以理解。这些东西不想在这里讲,随便找一下都是一大把。我想根据源代码来分析会比较好懂一些。

费了老大功夫,才搞清楚CRC 根据”权”(即多项表达式)的不同而相应的源代码也有稍

许不同。以下是各种常用的权。

CRC8=X8+X5+X4+1

CRC-CCITT=X16+X12+X5+1

CRC16=X16+X15+X5+1

CRC12=X12+X11+X3+X2+1

CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1

以下的源程序全部以CCITT 为例。其实本质都是一样,搞明白一种,其他的都是小菜。

图1,图2 说明了CRC 校验中CRC 值是如何计算出来的,体现的多项式正是

X16+X12+X5+1。

Serial Data 即是需要校验的数据。从把数据移位开始计算,将数据位(从最低的数据位开始)逐位移入反向耦合移位寄存器(这个名词我也不懂,觉得蛮酷的,就这样写了,嘿)。当所有数据位都这样操作后,计算结束。此时,16 位移位寄存器中的内容就是CRC 码。

图1 生成CRC-CCITT 的移位寄存器的作用原理

图2 用于计算CRC_CCITT 的移位寄存器的电路配置

图中进行XOR 运算的位与多项式的表达相对应。

X5 代表Bit5,X12 代表Bit12,1 自然是代表Bit0,X16 比较特别,是指移位寄存器移出的

数据,即图中的DATA OUT。可以这样理解,与数据位做XOR 运算的是上次CRC值的Bit15。

根据以上说明,可以依葫芦画瓢的写出以下程序。(程序都是在keil C 7.10 下调试的) typedef unsigned char uchar;

typedef unsigned int uint;

code uchar crcbuff [] = { 0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};

uint crc; // CRC 码

void main(void)

{

uchar *ptr;

crc = 0; // CRC 初值

ptr = crcbuff; // 指向第一个Byte 数据

crc = crc16l(ptr,8);

while(1);

}

uint crc16l(uchar *ptr,uchar len) // ptr 为数据指针,len 为数据长度

{

uchar i;

while(len--)

{

for(i=0x80; i!=0; i>>=1)

{

if((crc&0x8000)!=0) {crc<<=1; crc^=0x1021;} 1-1

else crc<<=1; 1-2

if((*ptr&i)!=0) crc^=0x1021; 1-3

}

ptr++;

}

return(crc);

}

执行结果crc = 0xdbc0;

程序1-1,1-2,1-3 可以理解成移位前crc 的Bit15 与数据对应的Bit(*ptr&i)做XOR 运算,根

据此结果来决定是否执行crc^=0x1021。只要明白两次异或运算与原值相同,就不难理解这

个程序。

很多资料上都写了查表法来计算,当时是怎么也没想通。其实蛮简单的。假设通过移位处理了8 个bit 的数据,相当于把之前的CRC 码的高字节(8bit)全部移出,与一个byte 的数据做

XOR 运算,根据运算结果来选择一个值(称为余式),与原来的CRC 码再做一次XOR 运算,

就可以得到新的CRC 码。

不难看出,余式有256 种可能的值,实际上就是0~255 以X16+X12+X5+1 为权得到的CRC

码,可以通过函数crc16l 来计算。以1 为例。

code test[]={0x01};

crc = 0;

ptr = test;

crc = crc16l(ptr,1);

执行结果crc = 1021,这就是1 对应的余式。

进一步修改函数,我这里就懒得写了,可得到X16+X12+X5+1 的余式表。

code uint crc_ta[256]={ // X16+X12+X5+1 余式表

0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,

0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,

0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,

0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,

0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,

0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,

0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,

0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,

0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,

0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,

0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,

0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,

0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,

0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,

0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,

0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,

0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,

0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,

0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,

0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,

0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,

0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,

0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,

0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,

0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,

0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,

0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,

0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,

0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,

0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,

0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,

0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0

};

根据这个思路,可以写出以下程序:

uint table_crc(uchar *ptr,uchar len) // 字节查表法求CRC

{

uchar da;

while(len--!=0)

{

da=(uchar) (crc/256); // 以8 位二进制数暂存CRC 的高8 位

crc<<=8; // 左移8 位

crc^=crc_ta[da^*ptr]; // 高字节和当前数据XOR 再查表

ptr++;

}

return(crc);

}

本质上CRC 计算的就是移位和异或。所以一次处理移动几位都没有关系,只要做相应的处理就好了。

下面给出半字节查表的处理程序。其实和全字节是一回事。

code uint crc_ba[16]={

0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,

0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,

};

uint ban_crc(uchar *ptr,uchar len)

{

uchar da;

while(len--!=0)

{

da = ((uchar)(crc/256))/16;

crc <<= 4;

crc ^=crc_ba[da^(*ptr/16)];

da = ((uchar)(crc/256)/16);

crc <<= 4;

crc ^=crc_ba[da^(*ptr&0x0f)];

ptr++;

}

return(crc);

}

crc_ba[16]和crc_ta[256]的前16 个余式是一样的。

其实讲到这里,就已经差不多了。反正当时我以为自己是懂了。结果去看别人的源代码的时候,也是说采用CCITT,但是是反相的。如图3

图3 CRC-CCITT 反相运算

反过来,一切都那么陌生,faint.吐血,吐血。

仔细分析一下,也可以很容易写出按位异或的程序。只不过由左移变成右移。

uint crc16r(unsigned char *ptr, unsigned char len)

{

unsigned char i;

while(len--!=0)

{

for(i=0x01;i!=0;i <<= 1)

{

if((crc&0x0001)!=0) {crc >>= 1; crc ^= 0x8408;}

else crc >>= 1;

if((*ptr&i)!=0) crc ^= 0x8408;

}

ptr++;

return(crc);

}

0x8408 就是CCITT 的反转多项式。

套用别人资料上的话

“反转多项式是指在数据通讯时,信息字节先传送或接收低位字节,如重新排位影响CRC 计算速度,故设反转多项式。”

code uchar crcbuff [] = { 0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};

反过来就是

code uchar crcbuff_fan[] = {0xe3,0xd2,0x0d,0x06,0x00,0x00,0x00,0x00};

crc = 0;

ptr = crcbuff_fan;

crc = crc16r(ptr,8);

A

15 14 1 3 12 1 1 +1 0 9 8 7 6 5 4 +3 2 1 0 +

执行结果crc = 0x5f1d;

如想验证是否正确,可改

code uchar crcbuff_fan_result[] = {0xe3,0xd2,0x0d,0x06,0x00,0x00,0x00,0x00,0x1d,0x5f}; ptr = crcbuff_fan_result;

crc = crc16r(ptr,10);

执行结果crc = 0; 符合CRC 校验的原理。

请注意0x5f1d 在数组中的排列中低位在前,正是反相运算的特点。不过当时是把我搞

的晕头转向。

在用半字节查表法进行反相运算要特别注意一点,因为是右移,所以CRC 移出的4Bit

与数据XOR 的操作是在CRC 的高位端。因此余式表的产生是要以下列数组通过修改函数crc16r 产生。

code uchar ban_fan[]=

{0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0};

得出余式表

code uint fan_yushi[16]={

0x0000, 0x1081, 0x2102, 0x3183,

0x4204, 0x5285, 0x6306, 0x7387,

0x8408, 0x9489, 0xa50a, 0xb58b,

0xc60c, 0xd68d, 0xe70e, 0xf78f

uint ban_fan_crc(uchar *ptr,uchar len)

{

uchar da;

while(len--!=0)

{

da = (uchar)(crc&0x000f);

crc >>= 4;

crc ^= fan_yushi [da^(*ptr&0x0f)];

da = (uchar)(crc&0x000f);

crc >>= 4;

crc ^= fan_yushi [da^(*ptr/16)];

ptr++;

}

return(crc);

}

主程序中

crc = 0;

ptr = crcbuff_fan;

crc = ban_fan_crc(ptr,8);

执行结果crc = 0x5f1d;

反相运算的全字节查表法就很容易了,懒的写了。

图1,图2 是用protel DXP 画的,自己感觉太丑了,哪位哥们知道哪种工具画这种东西最方便,通知一声。嘿。

奇偶校验

为了系统的可靠性,对于位数较少,电路较简单的应用,可以采用奇偶校验的方法。奇校验是通过增加一位校验位的逻辑取值,在源端将原数据代码中为1的位数形成奇数,然后在宿端使用该代码时,连同校验位一起检查为1的位数是否是奇数,做出进一步操作的决定。奇偶校验只能检查一位错误,且没有纠错的能力。偶校验道理与奇校验相同,只是将校验位连同原数据代码中为1的位数形成偶数。奇偶校验器多设计成九位二进制数,以适应一个字节,一个ASCII代码的应用要求。奇偶校验是一种荣誉编码校验,在存储器中是按存储单元为单位进行的,是依靠硬件实现的,因而适时性强,但这种校验方法只能发现奇数个错,如果数据发生偶数位个错,由于不影响码子的奇偶性质,因而不能发现。 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 与一段信息关联的冗余信息。在WindowsNTServer中,带奇偶校验的带区集意味着每行有一个附加的奇偶校验带区。因此,必须使用至少三个(而不是两个)磁盘才能考虑该附加的奇偶校验信息。奇偶校验带区包含该带区内数据的XOR(称为排它性“或”的布尔操作)。重新生成失败的磁盘时,WindowsNTServer将使用这些带区中与完好磁盘上数据关联的奇偶校验信 息重新在失败盘上创建数据。请参阅容错;带区集;带奇偶校验的带区集奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。 为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”。内存中最小的单位是比特,也称为“位”,位只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。

常用的检错码 - 奇偶校验码

3.2差错控制 3.2.2常用的检错码- 奇偶校验码 奇偶校验码是一种简单的检错码,奇偶校验码分为奇校验码和偶校验码,两者原理相同。它通过增加冗余位来使得码字中“1”的个数保持奇数或偶数。 ?无论是奇校验码还是偶校验码,其监督位只有一位; ?假设信息为为I1, I2, …, I n,对于偶校验码,校验位R可以表示为: R =I 1 ⊕I 2 ⊕Λ⊕I n ?假设信息为为I1, I2, …, I n,对于奇校验码,校验位R可以表示为: R =I 1 ⊕I 2 ⊕Λ⊕I n ⊕1 ?无论是奇校验码还是偶校验码,都只能检测出奇数个错码,而 不能检测偶数个错码。 4 4

讨论: 从检错能力、编码效率和代价等方面来评价垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验 3.2 差错控制 3.2.2 常用的检错码 - 奇偶校验码 奇偶校验在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。 5

3.2.2常用的检错码–定比码 所谓定比码,即每个码字中“1”的个数与“0”的个数之比保持恒定, 故又名等比码或恒比码。 ?当码字长一定,每个码字所含“1”的数目都相同,“0”的数目也 都相同。 ?由于若n位码字中“1”的个数恒定为m,还可称为“n中取m”码 定比码(n中取m)的编码效率为: log C m R = ?2 n n 定比码能检测出全部奇数位错以及部分偶数位错。实际上,除了码 字中“1”变成“0”和“0”变成“1”成对出现的差错外,所有其它差 错都能被检测出来 6 4

代码“1011011”对应的多项式为x 6 + x 4 + x 3 +1 多项式“x 5 + x 4 + x 2 + x”所对应的代码为“110110” 3.2.2 常用的检错码 – 循环冗余检验 循环冗余码(Cyclic Redundancy Code ,简称CRC )是无线通信中用得最广泛的检错码,又被称为多项式码。 二进制序列多项式:任何一个由m 个二进制位组成的代码序列都可以和一个只含有0和1两个系数的m-1阶多项式建立一一对应的关系。 CRC 有关的多项式: ? 信息位多项式、冗余位多项式、码字多项式、和生成多项式 信息位1010001:K (x ) = x 6 + x 4 + 1 冗余位1101:R (x ) = x 3 + x 2 + 1; 码字10100011101: T (x ) = x 10 + x 8 + x 4 + x 3 + x 2 + 1 7

奇偶校验电路设计

奇偶校验电路设计 一、实验目的 1.熟悉QuartusII的使用; 2. 学习在QuartusII中; 3. 学习原理图方式自定义元件的输入,封装,调用; 4. 掌握奇偶校验原理; 5. 学会使用现成的芯片搭建目标电路。 二、实验内容和原理 实验内容: (1)在QuartusII环境下以原理图方式建立顶层文件工程。 利用多个74386芯片搭建一个奇偶校验电路。74386提供四个2输入异或门 (2)建立仿真文件,观察输出结果。 实验原理: 奇偶校验码是最简单的数据校验码,其码距为2,可以检测出一位错误,但无法指出错误的位置。 具体校验实现方法为将有效信息位和校验位读入,判断其1的个数是奇数个还是偶数个,在奇校验的情况下正常情况下个数应该为奇数个,偶校验正常情况下应该是偶数个。 校验码的生成:对于奇校验,判断有效信息位1的个数,若为偶数则校验位为1,奇数则校验位为0;偶校验反之。 具体实现的逻辑表达式如下:

三、实验设计原理图以及综合结果 记录逻辑单元的消耗情况等。 原理图如下: 偶校验奇校验 76543210校经过设计后用74386实现的原理图如下:

综合结果如下图所示: 四、仿真波形图 画出波形图以及波形图中仿真信号的说明。 并分析结果(实验现象结论)。 仿真波形图如下所示:

其中,D0-7为信息位,Djiao为校验位。实验结果如下: 说明:波形信息位为奇数个1,校验位为0时,输出的奇校验位为0,偶校验位为1,奇校验错误为0,偶校验错误为1(即有错)。同理其他测试分别测试了信息位为奇数个1,校验位为1、信息位为偶数个1,校验位为1、信息位为偶数个1,校验位为0的情况,图中波形的测试完全符合预期要求。 五、实验中遇到的问题和解决方法。 在实验中遇到的主要问题: (1)操作不熟悉导找不到部分功能元件 (2)由于连线有误,在仿真时结果出现错误。

奇偶校验通信原理课程设计

西南科技大学通信原理设计报告 课程名称:通信原理课程设计 设计名称:奇偶校验编码仿真 姓名:王雷 学号: 班级:通信1004 指导教师:秦明伟 起止日期:2013年7月5日星期五 西南科技大学信息工程学院制

方向设计任务书 学生班级:通信1004 学生姓名:王雷学号:20105615 设计名称:奇偶校验编码仿真 起止日期:2013年7月5日星期五指导教师:秦明伟 方向设计学生日志

奇偶校验编码仿真 一、摘要(150-250字) 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 二、设计目的和意义 认识matlab软件,学习掌握matlab的基本操作方法,熟悉M文件和simulink的具体实现方法,了解数据奇偶校验的原理和在matlab中的基本仿真,通过对简单的通信实验设计,提高了动手能力和对matlab操作,巩固了课程知识。 三、设计原理 在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 奇偶校验原理是基于异或的逻辑功能。奇偶校验的编码方法是在原信号码组后面添加以为监督码元,奇偶校验分为奇校验和偶校验,奇校验是原信息码元加上监督码元后,使整个组成的数码组中,1的个数为奇数个。偶校验的工作原理则正好与奇校验相反。 对于n位二进码a1a2a3a4……a n奇校验有如下表示: a1⊕a2⊕a3⊕a4……⊕a n⊕C=1 偶校验的表达式为: a1⊕a2⊕a3⊕a4……⊕a n⊕C =1 其中,C为监督码元,在本设计中n为8,可以推出C的表达式为: C =a1⊕a2⊕a3⊕a4……⊕a8 在发送端让其监督码和信息码一起发送,在信息接收端,计算校验因子的表达式为: 、 S=a1⊕a2⊕a3⊕a4……⊕a n⊕C

国内经销代理商在经营管理中的十大难点以及解决办法

国内经销代理商在经营管理中的十大难点以及解 决办法 纲要:一、经营方向:做产品专家,依旧做渠道专家? 二、企业进展:以利取胜依旧以量取胜? 三、治理架构:家族型治理如何转变? 四、人员治理:如何建立有效的绩效考核机制? 五、库存治理:如何应对厂家不合理的压货? 六、客户治理:如何建立起自己的分销渠道? 七、客户谈判:如何推卸商超系统不合理的收费。八、资源治理:如何争取厂方最大的费用支持? 九、资金治理:如何操纵应收账款? 十、利润分析:如何实现利益最大化? 国内传统的经销商实质在只是流通商。其要紧功能要紧定位上仓储和配送两个方面。正因为经销商职能的弱化,部分企业更是将经销商定位为“搬运工”. 对经销商功能的弱化,一方面是企业专门难选择到合适的经销商的无奈之举;另 一方面是厂方加强对渠道的操纵力。在厂商搏奕的两端,两者之间是呈不对应性。 有规模有实力的企业更是将经销商纳入了自己的治理之下。经销商作为弱势群 体,处于被动不可控状态。这就给经销商带来两大课题。一是经销商如何取得自 己的平等地位,爱护自己的正当权益呢?二是国内经销商的以后之路如何走? 立足于当前市场状况,现在的经销商生活也更加难过。往常那种店们一开,财源滚滚来的机会已一去不复返了。经销商在处于每天纷杂的工作中,遇到各种 各样的经营治理中的难点。归其类要紧以下十大方面: 一、经营方向:做产品专家,依旧做渠道专家? 那个咨询题涉及到一个定位的话题。经销商如何充分利用自己的资源优势,将其转化成竞争优势。每一位经销商都在承担着市场的积压,同行的竞争。在与 厂家,与同行间,与零售终端,与分销商之间存在着利益的搏弈。在每一轮回的 搏弈之中,都在拷咨询着经销商你手上有多少张牌让你取得最终的胜利。这就要 求经销商必须在行业中建立起自己的区域优势。 经销商取得行业内的优势,差不多方式有二:一是成为某一品项的专业户,销售专家。就如我们平常在市场商常常见到的:牛奶大王,食用油大户等。做牛 奶的经销商经营的牛奶品种几乎攘括了国内所有的知名品牌和高中低价位的产 品。客户想进牛奶,我那个地点无奇不有。成为某一品类的专家。这种经营模式 为许多经销商所推从。二是专做某一类渠道。如专做餐饮渠道,专做商超渠道或 专做流通渠道。把一类渠道做专做透,形成自己的渠道优势。成为渠道专家。 这两种模式应该讲各有利弊。做产品专家的优势为:一能充分整合和利用资源。大多商超采购差不多上以品类来划分的。专做某一品类,就便于更好地和谐 与零售终端的关系。二便于以所经营产品的特性,来调整自己的渠道模式。更好 地整合厂家资源,节约成本。三能在某一行业内形成竞争优势。便于拿到优质产 品的代理权,积压竞争对手。

国内经销代理商在经营管理中的十大难点以及解决办法

国内经销代理商在经营管理中的十大难点以及解决办法 纲要:一、经营方向:做产品专家,还是做渠道专家二、企业发展:以利取胜还是以量取胜三、管理架构:家族型管理如何转变四、人员管理:如何建立有效的绩效考核机制五、库存管理:如何应对厂家不合理的压货六、客户管理:如何建立起自己的分销渠道七、客户谈判:如何推卸商超系统不合理的收费。八、资源管理:如何争取厂方最大的费用支持九、资金管理:如何控制应收账款十、利润分析:如何实现利益最大化 国内传统的经销商实质在只是流通商。其主要功能主要定位上仓储和配送两个方面。 正因为经销商职能的弱化,部分企业更是将经销商定位为“搬运工”.对经销商功能的弱 化,一方面是企业很难选择到合适的经销商的无奈之举;另一方面是厂方加强对渠道的控 制力。在厂商搏奕的两端,两者之间是呈不对应性。有规模有实力的企业更是将经销商纳 入了自己的管理之下。经销商作为弱势群体,处于被动不可控状态。这就给经销商带来两 大课题。一是经销商如何取得自己的平等地位,维护自己的正当权利呢二是国内经销商的 未来之路如何走 国内市场呼唤“营销专家”式的经销商。但可惜这类经销商并未真正实现。其原因有两点:一是市场大环境,还难以造就出这类经销商。因厂商之间难以建立足够的信任,两 者之间既合作,又抑制。即使出现销售额十个亿以上的超大规模的经销商,难只是规模的 扩大,其职能并未发生根本性的改变。二是经销商不愿意将自己如此定位。替别人产品做 市场,总觉得是别人做嫁衣。所以一些经销商挖到了第一桶金后,不是往上游发展,自己 开发产品;就是往下游发展,自己开超市。立足于当下的少之又少。目前情况之下,国内 很难出现类似于“宝隆洋行”式的经销商。 立足于当前市场状况,现在的经销商日子也越发难过。以前那种店们一开,财源滚滚来的机会已一去不复返了。经销商在处于每天繁杂的工作中,遇到各种各样的经营管理中 的难点。归其类主要以下十大方面: 一、经营方向:做产品专家,还是做渠道专家 这个问题涉及到一个定位的话题。经销商如何充分利用自己的资源优势,将其转化成竞争优势。每一位经销商都在承受着市场的积压,同行的竞争。在与厂家,与同行间,与 零售终端,与分销商之间存在着利益的搏弈。在每一轮回的搏弈之中,都在拷问着经销商 你手上有多少张牌让你取得最终的胜利。这就要求经销商必须在行业中建立起自己的区域 优势。 经销商取得行业内的优势,基本方式有二:一是成为某一品项的专业户,销售专家。 就如我们平时在市场商常常见到的:牛奶大王,食用油大户等。做牛奶的经销商经营的牛 奶品种几乎攘括了国内所有的知名品牌和高中低价位的产品。客户想进牛奶,我这里应有 尽有。成为某一品类的专家。这种经营模式为许多经销商所推从。二是专做某一类渠道。 如专做餐饮渠道,专做商超渠道或专做流通渠道。把一类渠道做专做透,形成自己的渠道 优势。成为渠道专家。

奇偶校验

奇偶校验 在数据传输前在数据位后附加一位奇偶校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,以此判断数据传输正确性的一种校验方法。 奇偶校验的产生: 为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 具体方法如下: 奇校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 按校验的数据量和生成校验码的方式分为三类: 1.垂直奇偶校验码:以一个字符作为校验单位纵向生成校验码位;

例如使用ASCII编码的一个字符由8bit组成,其中低7bit为信息位,最高1bit作为校验位,假设某一字符的标准ASCII编码为0011000,根据奇偶校验规则,如果采用奇校验,则校验位应为1(这样字符中1的个数才能为奇数),即00110001;如果采用偶校验,校验位应为0,即00110000垂直奇偶校验码的特点:校验处理过程简单,但如果字符中发生偶数位的错误就检测不出来,也检测不到错误发生在哪一位。 2.水平奇偶校验码:以多个字符作为校验单位横向生成校验码位; 生成方法:以若干个字符作为一个校验单位。每个字符各自生成一个垂直奇偶校验码,再为每个字符的相同位及其垂直奇偶校验码生成水平奇偶校验码,这些校验码形成一个校验字符,附加在被校验字符的后面一并传输到接收方,该校验字符即称为方阵校验码。 校验特点:一次能校验更多的数据,效率较高,系统实现也比较简单,检测可靠性有所提高,但仍然不能检测出所有的错误。 3.水平垂直冗余校验码(方阵校验码):以多个字符作为校验单位水平垂直两个方向共同生成校验字符。

全球ic(电子元器件)知名厂商及中国区域代理商数据中

英文简称Intel 中文简称英特尔公司 英特尔是全球最大的芯片制造商,同时也是计算机、网络和通信产品的领先制造商。它成立于1968 年,具有37 年的技术产品创新和市场领导的历史。1971 年,英特尔推出了全球第一枚微处理器。英特尔为全球日益发展的计算机工业提供模块,产品包括微处理器、芯片组、板卡、系统及软件等。 主要产品: ?处理器 ?主板 ?芯片组 ?电缆调制解调器 ?嵌入式处理器 ?以太网产品 ?固态硬盘和高速缓存 ?服务器产品 Intel中国区域代理商 世平国际香港有限公司 深圳友声微电子有限公司 英迈(中国)投资有限公司 深圳市意科特实业有限公司 QLOGIC SALES深圳 亿道电子技术有限公司-北京 CTC Technology Corp. Ltd. 长春联想电子技术有限公司 北京嘉华信通科技有限公司 深圳市威凯特科技有限公司 建智股份有限公司 宝通集团有限公司 联强国际(香港)有限公司 艾睿电子(香港)有限公司 龙临实业股份有限公司 重庆正睿科技有限公司 广东致荣信息技术有限公司 神州数码科技发展公司-北京 景汉企业有限公司-香港 勁智數位科技股份有限公司 金龙电子(香港)有限公司-北京

英文简称Samsung 中文全称三星半导体公司 三星电子公司成立于1969年,逐渐发展成为全球五大电子公司之一,产品也由家电扩展到计算机、通讯等诸多方面。1983年起随着成功发展了64K DRAM超大规模集成电路,从此在单一家电类半导体产品基础上发展了许多新的半导体产品,逐渐成为全球领先的半导体厂商。它的半导体产品主要有DRAM、SRAM、闪速存储器、ASIC、CPU和TFF-LCD板等等。 三星公司自创立至今,其产品开发战略演变大致经历了“拷版战略”、“模仿战略”、“紧跟技术领先者战略”和“技术领先战略”四个阶段。

中国电信代理商管理办法

内部资料,仅供参考,不得外传 中国电信代理商管理办法 第一章总则 第一条为适应市场竞争和业务发展需要,建立健全中国电信集团公司山阳县分公司(以下简称山阳电信)电信业务代理营销服务体系,规范和加强山阳电信业务代理工作,特制定本办法。 第二条电信业务代理商(以下简称代理商)是指具备相应资质和能力,经山阳县电信公司授权,双方签署代理协议,代理商在授权范围内代表中国电信从事各项电信业务的营销和服务,协助做好最终客户的咨询、受理、计费、维护和故障处理,并能够在规定时间内完成代理协议规定的营销和服务任务指标的企事业单位和个人。 第三条代理商是电信营销服务体系的重要组成部分,其在代理电信业务的活动中,必须执行中国电信的有关规定,在营销宣传、业务资费、业务受理和服务质量等方面接受中国电信的管理、监督和指导,代理商发展的最终客户全部为中国电信的客户,应直接与中国电信签署业务使用协议。 第二章代理商认证 第四条代理商必须符合以下基本资质要求: 1、在各级工商行政管理部门正式注册,是具有独立法人资格的企业

或事业单位以及个人,具有代理电信业务的经营范围。 2、注册资金5万元人民币以上。 3、有合法有效的税务和组织机构代码登记手续,能够严格执行财务管理制度。 4、有良好的经营服务业绩和社会信誉,遵守国家法律法规,没有违法和不良行为记录。 5、对电信业务比较熟悉,并且在其代理区域内具有一定规模的营销服务网络和最终客户群体。 6、有正式的办公场所、健全的组织机构和规范的企业管理制度。 7、在代理区域内设有常驻机构,并拥有固定的营销服务和技术支持队伍。 8、有能力完成代理协议所规定的营销和服务任务指标。 第五条代理商在申请代理电信业务之前应向山阳县电信提供以下相关材料及证明 1、申请单位须如实填写《中国电信代理商审核表》,说明申请单位及个人背景、市场能力、客户资源、技术力量等相关情况。 2、申请单位须向山阳县电信提供相关资质证明文件原件和复印件,包括:法人合法注册文件、税务登记证、法人代表身份证原件、申请单位简介、主要技术和业务人员资料等。山阳县电信公司留存复印件,并将相关材料上报市公司。 第三章代理保证金制度 第六条为了给予代理商和代办商一定约束,便于对代理商和代办商

8位奇偶校验电路[1]

实验报告 学院:专业:班级: 姓名学号实验组实验时间指导教师成绩实验项目名称8位的奇偶校验 实验目的 1.学习组合逻辑电路、编码器的功能与定义,学习Verilog和VHDL语言 2.熟悉利用Quartus II开发数字电路的基本流程和Quartus II软件的相关操作 3.学会使用Vector Wave波形仿真 实 验 要 求 按照老师的要求完成实验,编写实验报告实 验原理 此奇偶校验电路时用来计算一个八位数里存在奇数个1还是偶数个1.本实验采用与tmp=0异或的方法来实现计数。如果结果输出为1,则有奇数 个一。输出结果为零则有偶数个一。 实 验 仪 器 软件:Altera Quartus II 9.0 集成开发环境。 实验步骤 1.选择“开始”→“所有程序”→“Altera”→“Quartus II 9.0”→“Quartus II 9.0(32bit)”,启动软件。 2.选择“File”→“New Project Wizard”,出现“Introduction”页面,如图所示,该页面介绍所要完成的具体任务。 3.单击“Next”按钮,进入工程名称的设定、工作目录的选择。

4.在对话框中第一行选择工程路径;第二行输入工程名,第三行输入顶 层文件的实体名(注意:工程名必须与顶层实体名相同,工程目录可以随意设置,但必须是英文的目录,工程名跟顶层实体名必须也是英文开头。不要将文件夹设在计算机已有的安装目录中,更不要将工程文件直接放在安装目录中。文件夹所在的路径名和文件夹名不能用中文,不能用空格,不能用括 号,也不能以数字开头) 6.新建设计文件,选择“File|New”,在New对话框中选择Device Design Files下的Verilog File,单击OK,完成新建设计文件。 7.在新建设计文件中输入Verilog程序. 8.结果仿真 实 验 内 容 编写四选一电路的VHDL代码并仿真,编译下载验证 实验数据一:试验程序: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY parity_check IS PORT(a:IN STD_LOGIC_VECTOR (7 DOWNTO 0); y:OUT STD_LOGIC); END parity_check ; ARCHITECTURE rtl OF parity_check IS BEGIN PROCESS(a) V ARIABLE tmp:STD_LOGIC BEGIN tmp:=‘0’; FOR i IN 0 TO 7 LOOP tmp:= tmp XOR a(i); END LOOP; y <= tmp;- -y=1,a为奇数个‘1’。y=0,a为偶数个‘1’。 END PROCESS; END rtl;

奇偶码

校验码辅导讲座 二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验(冗余)位。 一、码距 一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit )数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。 如图1所示的一个编码系统,用三个bit 来表示八个不同信息中。在这个系统中,两个码字之间不同的bit 数从1到3不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。 然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图2的表中所示。 图 1 图 2 注意,图8-2的8个码字相互间最少有两bit 的差异。因此,如果任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。然而,差错不能被纠正。假定只有一个数位是错的,正确码字可以是1001,1111,0011或1010。接收者不能确定原来到底是这4个码字中的那一个。也可看到, 在这个系统中,偶数个(2或4)差错也无法发现。 为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。 图8-3的表概括了最小距离为1至7的码的纠错和检错能力。 图3 码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。所以,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。要有专门的研究来解决这些问题。 二、奇偶校验

中国总代理合同范本

中国总代理合同范本 篇一:产品总代理合同 产品总代理合同 甲方: 乙方: 为保护甲乙双方的合法利益,根据国家有关法律、法规的规定,本着友好合作,诚实信用,互利互惠,长期共赢的原则,经双方协商决定,签署本经销协议。 一、甲方授权乙方为系列产品在中国的总经销商,在本区域享受甲方产品独家总经销商资格,在本区域市场全权开展销售甲方产品的合法商业活动。 二、甲乙双方的所有商业活动必须依法经营,对客户做好诚信服务工作,双方各自的经营风险和法律行为自行负责。 三、在乙方成为区域总经销期间,甲方有义务保护乙方的合法权益,严防串货,杀价,多头销售行为,在本区域不再发展授权经销商。 四、乙方必须遵守甲方的统一商务政策,严格执行甲方规定的产品价格体系和区域管理制度,保护甲方自主知识产权和无形资产不受侵犯。 五、甲方不得再将“产品”售予、让予或以其他方式使 “地区”内乙方以外的任何个人、公司或其他主体取得“产品”。亦不得委托“地区”

内乙方以外的其他个人、公司或其他主体作为其经销 商,以进口和销售“产品”。甲方收到“地区”内任何客户有关“产品”的询购,均应交给乙方。甲方应采取适当措施防止他人在“地区”内出售“产品”,并不得将“产品”卖给甲方知道的或有理由相信拟在“地区”内再进口或出售“产品”的第三者。 六、价格 1、甲方给予乙方的价格和条件,应随时由甲方和乙方商定,此项价格和条件的确定并应考虑到正常贸易惯例及经常存在的市场竞争情况,使双方从销售中获得相当利润。 2、甲方给予乙方一个较稳定的市场价格,如有变动, 也是每年年初发给的年度价格表。 3、如有产品价格变动,甲方应在改变价格和折扣的30 天前书面通知乙方,所有改变价格期限之前双方签定的合同一律保证价格,并按正常交货期交货。 4、乙方所享受的代理折扣由双方另行商定,但甲方应当保证乙方应获得不低于的折扣。 七、甲方的责任 甲方同意在下列方面承担义务: 1、甲方将向乙方免费提供一定数量的产品资料。大批 量的资料在必要的情况下可由乙方申请甲方提供。 2、应及时向乙方提供其产品在国际市场上最新的行业动态信息,经常提供有利于推销产品的意见,以便乙方能采取多元化的市场

巧用单片机的奇偶校验位

巧用8051单片机的奇偶校验位 () 南京东南大学电子工程系 210096 孙洪军 () 南京理工大学化工学院 210094孙秀云周学铁 摘根连线即可达到 3要: 一种微机间的串行通信方法, 只需用 R XD、T XD 和GN D 115200bp s 的传输速率。 中断关键词: 串行通信语言 8250 IN S C 送出去。IN S 8250接收由 R XD 来的数据后, 经过串?在工程设计中, 经常会遇到近距离的微机间数据交换问题, 通常的解决方法是利用微机的异步串行通并信适配器, 通过把2台微机的串行通信口相连来实现转换后, 放在中供读取。RBR C PU 表1 IN S 8250中可访问的寄存器据交换。在程序的设计上往往利用或数 B IO S DO S 的功 1 2 能调用来实现对适配器的初始化、状态检测、数COM COM 方向寄存器名称口地址口地址据的发 3828输出发送器保持寄存器() F H F H T HR 送和接收等。这种方法实现的串行通信程序, 设计起来 3828输入接收器缓冲寄存器() F H F H RBR 相对简单, 但是在连线上要复杂一些, 除了通信线外, 3828输出除数寄存器( 低位) () F H F H D R 还需要握手信号线, 通信速率最高只可达到9600。 bp s3929输出除数寄存器( 高位) () F H F H D R 而在实践中, 人们往往更希望采用3线通信形式, 只采 3929输出中断允许寄存器( ) F H F H IER 用、、根线, 通信速率也希望能达到更 3R XDT XDGN D 32输入中断识别寄存器( ) FA H FA H IIR 高水平。通过对微机的异步串行通信适配器的研究发 32输出线路控制寄存器() 现, 完全可以避开对或的功能调用, 通过 FBH FBH L CR B IO S DO S 调制解调器控制寄存器直接访问其寄存器来实现对适配器的初始化、状态检 3FCH 2FCH 输出 ()M CR 测、数据的发送和接收等功能, 可以达到115200的 bp s 32输入线路状态寄存器()FD H FD H L SR 传输速率, 再通过对中断控制器8259的编程, 采用中 A 调制解调器状态寄存器 3F EH 2F EH 输入断方式接收数据, 可以可靠地实现高速3线串行通信。 ()M SR 1 异步串行通信适配器的工作原理 微机上通常有2个异步串行通信适配器, 分别为D R 中存放的数据用来决定数据传输时的波特主适配器和辅适配器, 适配器和外部的通信连接通过率, 其计算公

中国总代理合同范本

中国总代理合同范本 中国总代理合同范本1 甲方:福州创美装饰材料有限公司 乙方:福州鑫融华建材有限公司 甲、乙双方本着友好合作,诚实信用,互利互惠,长期共赢的原则,经双方协商决定,签署本全国独家总经销协议书。 一、在本协议约定的授权期限内,甲方授权乙方为甲方现有及今后所生产的全部产品在全国范围内的独家总经销商,在全国市场全权开展销售甲方产品的合法商业活动。 二、乙方作为甲方的全国独家总经销商,甲方有义务保护乙方的合法权益,在本协议履行期限内不再另行发展授权经销商,也不再向除乙方之外的其他客户自行销售。 四、本协议的有效履行期限即授权期限为十年,至十年期满的12月31日止,即自本协议签订之日起至2019年12月31日止。协议期满,双方如有意继续合作的,可以续签。 五、在协议履行期内,甲方将所生产的全部产品交由乙方全国独家总经销,甲方确保按照产品的出厂成本价(已含甲方合理的生产利润)向乙方供货,各项产品的出厂成本价由双方确定后作为本协议附件。在协议期限内,甲方新开发产品的价格由双方另行确定。在确定成本价时,甲方应向乙方明确具体成本的构成。在协议期限内,如因原材料、税费、人力资源成本等发生重大变动需要调整成本价的,双方可根据情况另行协商确定。

六、根据甲方产品的现有市场销售情况并考虑到市场的培育期限等因素,双方确定按照以下标准确定乙方每年从甲方完成的产品采购指标: 乙方完成每一年度采购目标的,按进货总量的2%年终返利,超额部分按4%年终返利。返利由甲方以等价产品方式于次年一月份支付给乙方。 七、双方之间的货款每两个月结算一次,由甲方先发货后结算。结算时间点位双月的最后一日,甲方于次月5日前将截止上月最后一日的货款清单与乙方对账确认,并向乙方提供增值税专用发票,乙方确认后于10日前将货款支付给甲方。 八、为确保销售的正常进行,甲方应根据乙方订单按时、保质保量的完成供货义务,包括按照乙方的通知直接向最终用户履行交货义务。 乙方每次向甲方进货时,须提前5个工作日向甲方传真订单。由甲方通过公路运输或铁路运输两种方式免费发货,到站由乙方或乙方的客户自提,如有其它运输要求则由乙方支付运费。 九、双方权利与义务: 1.甲方在广告发布时应刊登乙方为全国独家授权独家经销商的内容,并体现乙方的名称,地址,电话。 2.乙方有义务将甲方产品的市场发展,产品情况,客户需求等信息及时反馈甲方。 3.产品市场销售价格由乙方自行确定和调整,甲方可根据市场

奇偶校验

概述 奇偶校验法常用于识别数据是否发生传输错误,并且可以启动校正措施,或者舍弃传输发生错误的数据,要求重新传输有错误的数据块。 编辑本段奇偶校验法 奇偶校验法是一种很简朴并且广泛使用的校验方法。 这种方法是在每一字节中加上一个奇偶校验位,并被传输,即每个字节发送九位数据。 数据传输以前通常会确定是奇校验还是偶校验,以保证发送端和接收端采用相同的校验方法进行数据校验。 假如校验位不符,则认为传输出错。 奇校验是在每个字节后增加一个附加位,使得“1”的总数为奇数。 奇校验时,校验位按如下规则设定:假如每字节的数据位中“1”的个数为奇数,则校验位为“0”若为偶数,则校验位为“1”。 奇校验通常用于同步传输。 而偶校验是在每个字节后增加一个附加位,使得“1”的总数为偶数。 偶校验时,校验位按如下规则设定:假如每字节的数据位中“1”的个数为奇数,则校验位为“1”;若为偶数,则校验位为“0”。 偶校验常用于异步传输或低速传输。 校验的原理是:假如采用奇校验,发送端发送的一个字符编码(含校验位)中,“1”的个数一定为奇数个,在接收端对接收字符二进制位中的“1”的个数进行统计,若统计出“1”的个数为偶数个,则意味着传输过程中有1位(或奇数位)发生差错。 事实上,在传输中偶尔—位出错的机会最多,故奇偶校验法常常采用。 然而,奇偶校验法并不是一种安全的检错方法,其识别错误的能力较低。 假如发生错误的位数为奇数,那么错误可以被识别,而当发生错误的位数为偶数时,错误就无法被识别了,这是因为错误互相抵消了。 数位的错误,以及大多数涉及偶数个位的错误都有可能检测不出来。 它的缺点在于:当某一数据分段中的一个或者多位被破坏时,并且在下一个数据分段中具有相反值的对应位也被破坏,那么这些列的和将不变,因此接收方不可能检测到错误。 常用的奇偶校验法为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验。 编辑本段垂直奇偶校验 垂直奇偶校验是在垂直方向上以列的形式附加上校验位。 假设数据格式及其发送顺序如图1所示,则垂直奇偶校验的编码规则如图2所示。 图1 垂直奇偶校验时 图2 垂直奇偶校验法举例 数据格式及其发送顺序 式中,m为码字的定长位数,n为码字的个数。

对奇偶校验码的理解

对奇偶校验码的理解 一个二进制数位串C7C6C5C4C3C2C1若将各位进行模2加,其和为1,则此二进制数位串是奇性串;若将各位进行模2加,其和为0,则此二进制数位串是偶性串;此时的奇偶性表示了这个二进制位串自身固有的性质:奇性,说明此二进制数位串共有奇数个1,例如1101101有5个1,呈奇性;偶性,说明此二进制数位串共有偶数个1或者没1例如1101100有4个1,例如0000000没有1,呈偶性。 二进制数位串在传输中由于热噪声和冲击噪声可能产生差错。怎么控制差错呢?最常用的差错控制方法是差错控制编码。数据信息位在向信道发送之前,先按某种关系附加上一定的冗余位,构成一个码字后再发送,这个过程称为差错控制编码过程。接收端收到该码字后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生,这个过程称为检查过程。根据这个原理,发送方采取给二进制位串C7C6C5C4C3C2C1加一位冗余位C0以供校验。C0产生方法有两种如下: C0=C7○+C6○+C5○+C4○+C3○+C2○+C1(第一种方法) C0=C7○+C6○+C5○+C4○+C3○+C2○+C1○+1 (第二种方法) ○+是模2加符号。用第一种方法产生的C0称偶校验码,用第二种方法产生的C0称奇校验码。通过C0的产生过程,可以发现C0与二进制数位串C7C6C5C4C3C2C1的关系: 在第一种方法之下,

当二进制数位串C7C6C5C4C3C2C1呈奇性时,C0亦呈奇性——即C0取1值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=0 当二进制数位串C7C6C5C4C3C2C1呈偶性时,C0亦呈偶性——即C0取0值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=0 在第二种方法之下, 当二进制位数串C7C6C5C4C3C2C1呈奇性时,C0反呈偶性——即C0取0值。这时把C0编入二进制位数串C7C6C5C4C3C2C1后的新二进制数位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+ C4○+C3○+C2○+C1○+C0=1 当二进制数位串C7C6C5C4C3C2C1呈偶性时,C0反呈奇性——即C0取1值。这时把C0编入二进制数位串C7C6C5C4C3C2C1后的新二进制位串C7C6C5C4C3C2C1C0按各位模2加就是C7○+C6○+C5○+C4○+ C3○+C2○+C1○+C0=1 接收端收到二进制位串C7C6C5C4C3C2C1C0后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生。 按第一种方法检查信息位C7C6C5C4C3C2C1和附加的冗余位C0之间的关系看C7○+C6○+C5○+C4○+C3○+C2○+C1○+C0是否等于0,不等于0说明出了错。这种检测方法叫偶校验。

中国工程机械代理商赢利模式的分析与创新

特稿:中国工程机械代理商赢利模式的分析与创新整机销售一直是中国工程机械代理商的主要赢利模式。有调查结果显示:59%的代理商整机销售额所占比重超过70%。由此可见,对整机销售的过分依赖 仍然是大多数代理商的运营状况。而美国次贷危机影响下中国市场略显萧条, 使得很多工程开始出现停工,结果造成整机销售量的急剧下滑,使得代理商对 整机销售过分依赖与日趋饱和的市场及突如其来的销售风险间的矛盾更加突出。而伴随着用户对维修服务、配件供应、租赁及二手设备等后市场服务的强烈需求,很多代理商已经开始赢利模式的创新。 1 工程机械分销体系的历史沿革 图1显示了中国工程机械分销体系演变历程,这一历程可以概括成3个阶段。 第一阶段:高度计划的分配流通阶段(1978年以前) 1978年以前,中国工程机械分销体系基本上走计划经济的路线,一部分通 过国家统筹调拨,一部分通过制造商厂家直销,工程机械产品的进出口主要由 中国机械进出口公司和中国机械设备进出口公司等大的国营进出口公司或者贸 易公司来完成。 第二阶段:经济体制转轨时的混合阶段(1979年至20世纪90年代初) 20世纪80年代后期开始,随着民营及私营经济的开始发展,国内工程机 械用户群体发生了变化,除国营施工企业外,个体和私人用户开始出现。国内 制造商主要采用直销或者直销与代销相结合的方式销售自己的产品。除了大的 国营进出口公司从事工程机械的进出口外,有实力的制造商相继取得了自营进 出口权,建立了自己的进出口公司;与此同时,一些外资制造商在亚太地区的 销售总部相继在中国建立办事处或分公司,指定在华的总代理或独家代理,开 展在华的销售及服务工作。 第三阶段:市场经济体制下多种分销模式的并存阶段(1995年至今) 1995年至今,国营、民营及私营代理商有了很大的发展;同时,一些外资 代理商也开始进入中国市场,这些外资企业的代理商在原来的基础上发展了相 对规范的代理制,主要表现为明确区域、明确责任和明确功能,这三“明确” 之后,区域独家代理便成为外资品牌的主要模式;而国内制造企业基本上还是 一种混合模式,同一企业在不同地区、不同产品上往往采取不同的销售模式, 有的地区是独家代理,而有的地区同时存在着好几家代理商;在这个阶段也存 在由制造商和代理商共同出资的代理公司,实现了“一体化”模式;另外还存 在一些制造商(例如美国的卡特彼勒公司)或代理商成立的租赁公司,实现了 厂商租赁。

什么是奇偶校验

什么是奇偶校验 对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。 具体方法如下: 奇校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验: 就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊 的运算它遵守下面的规则: 1+1=0; 1+0=1; 0+1=1; 0+0=0; 我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进

行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。 Odd Parity(奇校验),校核数据完整性的一种方法,一个字节的8个数据位与校验位(parity bit )加起来之和有奇数个1。校验线路在收到数后,通过发生器在校验位填上0或1,以保证和是奇数个1。因此,校验位是0时,数据位中应该有奇数个1;而校验位是1时,数据位应该有偶数个1。如果读取数据时发现与此规则不符,CPU会下令重新传输数据。奇/偶校验(ECC)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数。

相关主题
文本预览
相关文档 最新文档