微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 用CPLD控制曼彻斯特编解码器

用CPLD控制曼彻斯特编解码器

时间:09-05 来源:互联网 点击:
的类型:如果接收的是命令,便输出高并保持16个DSC周期;如果接收的是数据,就继续保持低电平。TD变高,并在SDO输出NRZ数据期间一直为高。SDO输出一个字后,开始检验奇偶位。如果曼彻斯特码和奇偶位都正确,VW信号输出高,此时解码器开始寻找新的同步头,开始下一个接收周期。接收到新的有效的同步头和两个曼彻斯特码位后,VW信号被复位;否则,在持续大约20个DSC周期后,VW信号变低。  

2.2.3HD-6409发送时序  

HD-6409发送时序如图3所示。
 


图3 HD-6409发送时序图 


(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)beginif(controlcsventandcontrolcs=1)thencontrol_data<=databus;endif;endprocess;  

ee08<=resetandcontrol_data(0);lclk595<=nottd08;sclk595<=td08anddsc08;lclk597<=control_data(3)andqq_out;sclk597<=(not(esc08andsd08))and(noteclk09);tdd08<=not(td08);cdss08<=not(cds08);cts09<=control_data(1);load<=(ee_bitor(not(control_data(1))))andqq_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芯片,使用XilinxFoudation3.1i软件进行开发。所用VHDL程序通过时序仿真和下载后,观察波形并进行实际验证,可以正确地接收和发送曼彻斯特码,符合设计要求。  

4 结论  

本系统时序配合严格,运行可靠,易于修改;可以根据需要,灵活地加入各种各样的使用曼彻斯特码通信的系统中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top