基于CPLD/FPGA的CMI编码设计与实现

时间:2022-09-05 04:18:31

基于CPLD/FPGA的CMI编码设计与实现

摘 要:根据CMI码的特性,介绍了一种新的编程思路实现CMI编码,在Max+PlusⅡ开发平台上使用VHDL编程实现CMI编码,并得到仿真波形。实验结果表明,这种编程思路简单、清晰。在产生7位伪随机序列的前提下,分别对“0”,“1”进行编码。这种思路为其他码型设计提供了参考。

关键词:通信原理; VHDL; CMI; Max+PlusⅡ

中图分类号:TP274 文献标识码:A

文章编号:1004-373X(2010)11-0086-02

Design and Implementation of CMI Coding Based on CPLD/FPGA

LI Li

(Department of Telecommunication Engineering, Xi’an Institute of Posts and Telecommunications, Xi’an 710061,China)

Abstract: A new programming idea of which VHDL programming is used to achieve CMI coding on the platform ofMaxplusⅡ is introduced according to the characteristics of CMI code, and the simulation waveforms are achieved. The results indicate that this method is simple and clear. ″0″,″1″are encoded in the premise of generating 7 b pseudorandom sequence. This method provides a reference for other design of code type.

Keywords: communication principle; VHDL; CMI; Max+PlusⅡ

0 引 言

CMI码是传号反转码的简称,它是一种应用于PCM四次群和光纤传输系统中的常用线路码型,具有码变换设备简单、有较多的电平跃变,含有丰富的定时信息,便于时钟提取,有一定的纠错能力等优点[1]。

在高次脉冲编码调制终端设备中广泛应用作接口码型,在速率低于8 448 Kb/s的光纤数字传输系统中也被建议作为线路传输码型。

本文针对光纤通信传输码型的要求和CMI码的编码原理,介绍了一种以EPM 系列 7064 芯片为硬件平台,以Max+PlusⅡ为软件平台,以VHDL为开发工具,适合于CPLD实现的CMI编码器的设计方案。

1 CMI码的编码规则

CMI编码规则如表1所示。

表1 CMI编码

输入码字编码结果

001

100/11交替表示

在CMI编码中,输入码字0直接输出01码型,较为简单。对于输入为1的码字,其输出CMI码字存在两种结果00或11码,因而对输入1的状态必须记忆。同时,编码后的速率增加一倍[2]。

2 CMI编码器的建模与实现

首先在原始时钟MUX_Clk的上升沿进行翻转得到二分频时钟Clk[3],周期为原始时钟的2倍。

然后产生伪随机序列,由3个D触发器产生7位伪随机序列[4],序列产生原理如图1所示。

图1 7位伪随机码产生原理图

任何一个D触发器的输出都可以作为要产生的m序列[5],则序列以7为周期循环出现,在3个D触发器输出都为0时,语句m_buffer(2)

最后为“0”码、“1”码的编码:

“0”编码的实现:在原始时钟信号的下降沿对m序列进行检测,当其值为“0”时,将原始信号的二分频后的信号求非赋值给编码输出[7],即可实现对“0”进行“01”编码。

“1”编码的实现:在原始时钟信号的二分频信号的上升沿对m序列进行检测,如果其值为“1”,用表达式state1

IF(rising_edge(data_clkt))THEN

input_buff

state1

END IF;

--编码

IF(falling_edge(MUX_CLK))THEN

IF(input_buff=′0′)THEN

coder_buff

ELSIF(input_buff=′1′)THEN

coder_buff

END IF;

END IF;

cmi_out

MUX_DT

m_test

其中:

m_test:产生的m序列;

MUX_DT:CMI 编码输出;

MUX_CLK:原始时钟。

3 仿真结果

在Max+PlusⅡ平台下对CMI编码进行编译和仿真,最后得到CMI编码仿真结果。图2是CMI码编码波形图。

图2 CMI编码波形图

在时钟MUX_CLK驱动下工作,m_test是产生的m序列1011100, MUX_的DT为CMI编码输出,可以看到,编码为11010011000101,有一定延时,但编码完全正确。

4 结 语

该设计详细介绍了基于CPLD的CMI编码的实现方法。提出利用原始信号的二分频后的信号求非赋值给编码输出,得到“0”的编码,利用缓存对“1”的个数进行记录[8],而对“1”进行编码的编程思路,利用VHDL进行程序设计实现,在Max+PlusⅡ平台下对设计结果进行仿真,结果完全正确。

实践表明,运用CPLD实现CMI编码具有软件开发周期短[9]、成本低、执行速度高、实时性强、升级方便等特点,而且可以把该电路和其他功能电路集成在同一块CPLD/FPGA中,减少了外接元件的数目,提高了集成度,而且有很大的编程灵活性,很强的移植性,因此有很好的应用前景[10]。

参考文献

[1]樊昌信,任光亮.通信原理[M].北京:国防工业出版社,2005.

[2]段吉海,黄智伟.基于CPLD/FPGA的数字通信系统建模与设计[M].北京:国防工业出版社,2004.

[3]鲍家元,毛文林.数字逻辑[M].2版.北京:高等教育出版社,2002.

[4]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].2版.西安:西安电子科技大学出版社,2001.

[5]闵祥国.基于硬件描述语言VHDL电路系统设计研究[J].电脑知识与技术,2007(18):14-16.

[6]苗长新,李桂林.Max+PlusⅡ在“组合电路中竞争与冒险现象”课堂教学上的应用[J].现代电子技术,2009,32(19):128-130.

[7]周灼荣,聂涛,靳小超.基于FPGA的基带码发生器设计[J].现代电子技术,2006,29(11):53-55.

[8]林财,陈婷,杨军.一种基于CPLD编码器的实现方法[J].实验科学与技术,2007(6):154-156.

[9]孙华锦.基于VHDL语言的电子设计自动化及其应用[D].西安:西北工业大学,2001.

[10]王英华.VHDL语言在教学与研究中的应用[D].秦皇岛:燕山大学,2001.

上一篇:基于Winpcap的网络流媒体识别算法研究与实现 下一篇:基于单片机的现场无电源电子密码锁设计