用CPLD控制曼彻斯特编解码器
2.2.2 HD-6408解码时序
HD-6408的接收时序如图2所示。
(1)引脚定义
VW:输出字有效信号。
DSC:解码移位时钟。
TD:接收数据信号。
SDO:串行数据输出。
BZI、BOI:双极性数据输入。
(2)解码时序过程
解码器一直监视数据输入线,当接收到有效的同步头和两个有效的曼彻斯特码数据位后,便开始输出。当同步头被识别后,CDS引脚输出同步的类型:如果接收的是命令,便输出高并保持16个DSC周期;如果接收的是数据,就继续保持低电平。TD变高,并在SDO输出NRZ数据期间一直为高。SDO输出一个字后,开始检验奇偶位。如果曼彻斯特码和奇偶位都正确,VW信号输出高,此时解码器开始寻找新的同步头,开始下一个接收周期。接收到新的有效的同步头和两个曼彻斯特码位后,VW信号被复位;否则,在持续大约20个DSC周期后,VW信号变低。
2.2.3 HD-6409发送时序
HD-6409发送时序如图3所示。
(1)引脚定义
SD/CDS:串行NRZ码数据输入。
CTS:清除准备发送信号。
ECLK:编码时钟。
BZO、BOO:曼彻斯特编码数据输出。
(2)编码时序过程
CTS信号高无效,低有效。在CTS信号的下降沿,引脚BZO和BOO开始发送同步序列(8个曼码“0”组成)。同步序列后就是命令同步脉冲(由1.5位高电平和1.5位低电平组成)。在输出命令同步脉冲时,NRZ数据在ECLK的下降沿通过SD/CDS引脚输入,这些数据编码后在命令同步序列后持续输出。这些码字没有奇偶校验和字结构。编码数据块的长度由CTS决定。
2.2.4 VHDL源程序
控制器的VHDL源文件如下(程序较长,附核心部分):
process (controlcs)
begin
if(controlcs 'vent and controlcs= '1') then
control_data <= databus;
end if;
end process;
ee08 <= reset and control_data(0);
lclk595 <= not td08;
sclk595 <=td08 and dsc08;
lclk597 <=control_data(3) and qq_out;
sclk597 <= (not(esc08 and sd08)) and (not eclk09);
tdd08 <= not(td08);
cdss08 <=no
《用CPLD控制曼彻斯特编解码器(第2页)》