用CPLD控制曼彻斯特编解码器
(1)引脚定义
SD/CDS:串行NRZ码数据输入。
CTS:清除准备发送信号。
ECLK:编码时钟。
BZO、BOO:曼彻斯特编码数据输出。
(2)编码时序过程
CTS信号高无效,低有效。在CTS信号的下降沿,引脚BZO和BOO开始发送同步序列(8个曼码“0”组成)。同步序列后就是命令同步脉冲(由1.5位高电平和1.5位低电平组成)。在输出命令同步脉冲时,NRZ数据在ECLK的下降沿通过SD/CDS引脚输入,这些数据编码后在命令同步序列后持续输出。这些码字没有奇偶校验和字结构。编码数据块的长度由CTS决定。
javascript:window.open(this.src);" style="cursor:pointer;"/>
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 <=not(cds08);
cts09 <= control_data(1);
load <=(ee_bit or (not(control_data(1))))and qq_out;
dr08 <= control_data(2);
ss08 <=control_data(4);
mr08 <= control_data(5);
信号说明如下:
control_data——8位控制寄存器;
controlcs——控制寄存器片选信号,低有效;
mr08——hd-6408的主复位信号,高有效;
dr08——hd-6408的编码器复位信号,高有效;
ee08——hd-6408的使能信号,高有效;
ss08——编码同步头选择;
cts09——hd-6409的使能信号,低有效;
lclk595——串并转换器的载入数据信号;
sclk595——串并转换器的时钟信号;
lclk597——并串转换器的载入数据信号;
sclk597——并串转换器的时钟信号;
load——16位计数器载入初值信号;
qq_out——16位边界指示器;
tdd08——触发中断信号。
3 仿真与实现
本系统采用Xilinx公司生产的XC95144芯片,使用Xilinx Foudation 3.1i软件进行开发。所用VHDL程序通过时序仿真和下载后,观察波形并进行实际验证,可以正确地接收和发送曼彻斯特码,符合设计要求。
4 结 论
本系统时序配合严格,运行可靠,易于修改;可以根据需要,灵活地加入各种各样的使用曼彻斯特码通信的系统中。