3.1 同步时钟信号产生
用16倍数据速率的时钟信号对输入信号RDIN采样得到data_temp1信号,将采样信号data_temp1延迟一个16倍时钟周期(0.5μs)得到data_temp2信号,data_temp1与data_temp2相异或得到data_teMP3信号,如果信号跳变data_temp3为‘1’,否则为‘0’,得到RDIN跳变时的脉冲clr信号,当clr=‘1’时,清0,当clr=‘0’时,对输入时钟信号clk_in进行2、4、8和16分频,分别产生同步时钟信号Q0(2 048 kB/s)、Q1(1 024 kB/s)、Q2(512 kB/s)、Q3(256 kB/s)。
16分频后得到的Q3(256 kB/s)时钟信号不能直接作为解码输出的同步信号,clr信号在输入信号跳变时产生脉冲,尽管输入信号RDIN与Q3速率相同,而clr信号发生在Q3高电平或低电平处,使Q3受到影响,输出的不是完整的256 kB/s时钟信号。因此为了得到完整的16分频时钟信号,需将8分频时钟信号再次2分频得到时钟信号CLKO。
VHDL源代码如下:
3.2 在一个码元时间解码数据连续两次跳变检测
用4分频信号Q1对data_temp1信号采样得到data_temp4信号,将采样信号data_temp4延迟一个输入信号RDIN的四分之一码元周期得到data_temp5信号,data_temp4与data_temp5相同或得到data_temp6信号。用时钟信号CLKO的上升和下降沿同时检测data_temp6信号,求或。如果求或结果为‘1’则表示时钟的上升和下降沿有一次得到‘1’电平,即在半个码元的时间间隔内解码数据没有跳变,根据FM0编码规则此时数据应该是‘1’电平,解码输出DEOUT输出为‘1’电平;否则,如果求或结果为‘0’则表示时钟的上升和下降沿均得到‘0’电平,即在半个码元的时间间隔内解码数据有跳变,根据FM0编码规则,此时数据应该是‘0’电平,解码输出DEOUT输出为‘0’电平。
上一页 [1] [2] [3] 下一页