推荐答案
测试一下
题目
己知一套串行编码规则如下,编码后的信号与前一个时钟编码前的电平相同表示为1,与前一个时钟编码前的电平不同表示为0.且不允许出现编码后连续6个时钟为相同电平(如果出现需要插入1个bit,该bit是将编码后信号进行一次取反)。假定编码后信号初…
A、110010000011110110
B、110010000001111010
C、001000001111010100
参考答案与知识点
参考答案
我们首先理解编码规则:
- 编码后的信号与前一个时钟编码前的电平相同表示为1,不同表示为0。
- 注意:前一个时钟编码前的电平,就是原始码元?实际上规则描述有点绕。理解:给定二进制序列(原始数据),我们需要对其进行编码。编码规则:对于每个时钟,输出一个bit,该bit表示当前编码后的信号与上一个时钟编码前的电平的关系。但“编码前的电平”是指原始数据还是编码后的?仔细读:“编码后的信号与前一个时钟编码前的电平相同表示为1,与前一个时钟编码前的电平不同表示为0。” 这里“前一个时钟编码前的电平”指的是该时钟之前(即上一个时钟时刻)的原始数据比特?或者是编码前的信号?实际上,“编码前的电平”可能是指输入数据(即待编码的序列)的当前电平?但后面又说“编码后信号初始为低电平”,所以编码后信号也有初始状态。
更常见的是一种差分编码:比如曼彻斯特编码等。这里规则类似于:每个时钟,根据当前输入比特(原始数据)与前一时刻的编码后信号的关系,产生输出。但描述中用的是“编码后的信号与前一个时钟编码前的电平”,这个“编码前的电平”是指原始数据?还是编码前的输出?可能理解为:编码前的电平是指输入信号(即待编码的二进制序列)的电平。但初始时编码后信号为低电平,那么第一个时钟如何编码?需要明确。
另一种解释:这是一种将输入序列转换为输出序列的编码方式。规则:输出序列的每一位表示当前输入比特与前一输入比特是否相同?但题目说“编码后的信号与前一个时钟编码前的电平相同表示为1”,注意“前一个时钟编码前的电平”应该是前一个时钟时刻的原始输入电平?因为“编码前”即还没有编码的信号。那么,对于第i个时钟,编码后的信号(即输出比特)取决于第i个输入比特与第i-1个输入比特的关系?但是“编码后的信号”是指输出,而“前一个时钟编码前的电平”是指输入。所以输出=1当且仅当当前输入等于前一个输入。但初始时,编码后信号初始为低电平,这个初始条件似乎用于第一个输出?由于第一个时钟之前没有前一个编码前的电平,所以需要假定初始编码后的信号是低电平,但这里说“编码后信号初始为低电平”,可能是指编码后的信号在0时刻的状态,然后第一个时钟的输出根据第一个输入与这个初始状态的关系?但描述中说“与前一个时钟编码前的电平”,注意“编码前”是指输入还是输出?如果是指输出,那么就是差分曼彻斯特编码的一种。
让我们重新分析题目原文:“编码后的信号与前一个时钟编码前的电平相同表示为1,与前一个时钟编码前的电平不同表示为0.” 这里“编码后的信号”指的是当前时钟输出的比特(即编码后信号的当前值),“前一个时钟编码前的电平”指的是上一个时钟时刻的输入(即原始数据)的电平。也就是说,当前输出比特等于1当且仅当当前输出(编码后信号)与上一个时钟的输入相同。但这里有一个问题:当前输出比特在编码时是未知的,它是由这个关系决定的。实际上,这是一种编码方式:给定输入序列和初始输出状态,输出序列的每一位由当前输入和前一个输入的关系决定?或者由当前输出和前一个输入的关系决定?后者会导致递归关系。
通常有类似的编码如:NRZ、NRZI等。NRZI(非归零反转码)中,遇到1则电平翻转,遇到0则不变。但这里规则不同。
另一种常见题型:根据输入序列和初始状态,输出序列的每一位是当前输入与前一个输出的比较。例如,初始输出为0,那么第一个输出与第一个输入的关系?题目说“编码后的信号与前一个时钟编码前的电平相同表示为1”,这里“前一个时钟编码前的电平”应该是上一个输入?初始时没有上一个输入,所以需要定义初始“编码前的电平”?通常我们假设初始编码前的电平是低电平(即0),或者由题目给定的初始编码后信号为低电平来推断。
再读题目:“假定编码后信号初始为低电平”,这句话可能是说在时间0,编码后的信号是低电平。那么第一个时钟,我们要编码第一个输入比特(原始数据的第一个bit)?如何编码?规则:编码后的信号(当前输出)与“前一个时钟编码前的电平”相同则输出1,不同则输出0。而“前一个时钟编码前的电平”应该是上一个时钟的输入?但第一个时钟之前没有输入,可能用初始的编码后信号作为“前一个时钟编码前的电平”?因为题目说编码后信号初始为低电平,但那是编码后的信号,不是编码前的。所以这可能是一种混淆。
更合理的解释:规则的意思是:对于每个时钟,我们输出一个比特,这个比特表示当前时刻编码后的信号(也就是输出信号)与上一个时钟时刻的输入信号(即原始数据)的比较结果。那么第一个时钟,上一个时钟的输入信号是什么?没有,所以需要初始条件。通常我们会给定初始状态,比如初始编码后信号为低电平,而初始输入信号可能假设为低电平?或者把初始编码后信号当作前一个时钟的输入?但题目说“前一个时钟编码前的电平”,显然是指输入。
另一种常见题型:这是一种类似于差分曼彻斯特编码的变种,但通常差分曼彻斯特编码是:如果当前输入为0,则编码后信号与前一周期编码后信号相同;如果为1,则翻转。但这里刚好相反。
让我们尝试理解:假设原始二进制序列为S[1..N](题目给的序列是01010011111110010,共17位?数一下:01010011111110010 -> 0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0 共17位)。我们需要输出编码后的二进制编码。初始编码后信号为低电平(即0)。然后对于每个时钟,根据规则产生输出。但规则中提及“不允许出现编码后连续6个时钟为相同电平(如果出现需要插入1个bit,该bit是将编码后信号进行一次取反)”。即编码过程中,如果输出序列中出现连续6个相同的电平(即6个1或6个0),则要在该连续段之后插入1个bit,这个bit是将编码后信号进行一次取反(即与当前输出相反)。注意插入后,后续编码是否受影响?通常插入一个bit后,会改变后续的编码因为编码依赖于前一个时钟的编码前的
涉及知识点
- 时钟