采用Verilog HDL语言对CMI编码系统设计方法
出处:王海滨 发布于:2011-08-26 19:58:19
CMI码是传号反转码的简称,它一般作为PCM4次群数字中继接口和光纤传输系统中的线路码型。CMI码是一种应用于PCM四次群和光纤传输系统中的常用线路码型,具有码变换设备简单、有较多的电平跃变,含有丰富的定时信息,便于时钟提取,有一定的纠错能力等优点。这种码型不具有直流分量,有较多的电平跳跃,含有丰富的定时信息,因此很容易提取位定时信号,该码型具有良好的纠错能力,是一种很重要的码型。
在高次脉冲编码调制终端设备中广泛使用CMI码作为接口码型,在速率低于8 448 kb/s的光纤数字传输系统中也被建议作为线路传输码型。
本文主要介绍CMI码的编码具体实现方法,系统设计中采用了Altera公司CycloneⅡ系列的EP2C5Q型号FPGA作为系统的单元,完成CMI编码功能,程序设计平台为0uartusⅡ7.2软件,采用Verilog HDL作为程序设计语言。
1 CMI编码规则及FPGA配置电路
CMI码的全称是传号反转码,CMI码的编码规则如下:当输入0码时,编码输出01;当输入1码时,编码输出则00和11交替出现,如表1所示。

在CMI编码中,输入码字0直接输出01码型,较为简单。对于输入为1的码字,其输出CMI码字存在两种结果OO或11码,因而对输入1的状态必须记忆。同时,编码后的速率增加一倍。
根据此规则输出CMI码元的速率应为输入基带信号码元速率的2倍,对于输入为1的码字,输出不仅与当前码字有关,还与前一个1码的输出有关,1码对应的编码结果是00或11码型交替出现。由以上规则可以看出,在同步的情况下,输出只对应3种有效码型。即01、00、11码,而10码型则无效,因此可以根据这个特点进行检错。
目前可变分频器大量使用在FPGA的电路设计中,它是一般电路设计不可缺少的组成部分,如频率合成器、时钟信号产生器、调制解调器的位定时恢复等电路。熟悉CMI编译码器在通信系统中位置用发挥的作用及了解CMI码对通信系统性能的影响。CMI码是信号反转码,编码规则是:“1”码交替用“11”和“00”两位码表示,“0”码固定地用"01”表示。数字复接技术在频分制载波系统中,高次群系统是由若干个低次群信号通过频谱搬移并叠加而成。在时分制数字通信系统中,为了扩大传输容量和提高传输效率,常常需要将若干个低速数字信号合并成一个高速数字信号流,以便在高速宽带信道中传输。数字复接技术就是解决PCM 信号由低次群到高次群的合成的技术。随着EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息,通信等领域的重要性日益突出。
设计中采用的是Altera公司的EP2C5Q型号FPGA,EP2C5Q是CycloneⅡ系列器件中的一种,CycloneⅡ器件采用90 nm工艺制造,在逻辑容量、PLL、乘法器和I/O数量上都较Cyclone有了很大的提高。EP2C5Q型号FPGA具有丰富的逻辑资源,共有4 608个逻辑单元(LE),26个M4K RAM块,2个PLL锁相环,13个18x18的乘法器模块。
在FPGA硬件电路设计中需要注意的问题就是JTAG电路、配置芯片EEPROM电路与FPGA的连接关系。FPGA每次上电后都需要进行配置,从EEPROM中将数据读入,然后开始运行。根据FPGA在配置电路中的角色,其配置数据可以使用3种方式载入到目标器件中,分别是:FPGA主动(Active)方式;FPGA被动(Passive)方式;JTAG方式。在FPGA主动方式下,由目标FPGA来主动输出控制和同步信号(包括配置时钟)给Altera专用串行配置芯片(如EPCS1、EPCS4等),在配置芯片收到命令后,就把配置数据发送到FPGA,完成配置过程。要注意的是:Altera FPGA所支持的主动方式,只能够与Altera公司提供的主动串行配置芯片(EPCS系列)配合使用。这种配置模式只有在StratixⅡ和Cyclone系列(Cyclone和CycloneⅡ)的器件中支持。在被动方式下,是由系统中的其他设备发起并控制配置过程。比较常用的是JTAG配置方式JTAG是IEEE 1149.1边界扫描测试的标准接口。绝大多数的Altera FPGA都支持由JTFAG口进行配置,并支持JAM STAPL标准。从JTAG接口进行配置可以使用Altera的电缆,通过QuartusⅡ工具。
图1给出了FPGA的配置电路图,主要包括FPGA的主动(Active)方式和JTAG方式加载电路,以及专用串行配置芯片EPCS1与FPGA的连接关系。

2 CMI编码系统的程序设计
在系统程序设计过程中,将m序列作为基带输入码,然后程序再对m序列进行CMI码型变换,输出CMI码型。通过对CMI编码规则的分析,1位输入码元对应2位输出编码,因此CNI码元输出速率是输入m序列码元速率的2倍。在程序设计中,要保持m序列进程时钟为CMI编码进程时钟的2倍频,这是完成CMI编码任务的前提。
m序列是长线性反馈移存器序列的简称,m序列具有平衡性、游程特性、线性叠加性、自相关特性和伪噪声特性,应用十分广泛。设计采用m序列产生器产生的m序列作为CMI编码的数据源,用4级移存器构成周期为P=24-1=15的m序列发生器。m序列发生器的结构图如图2所示,其中A0、A1、A2、A3分别代表一个寄存器。

在对m序列进行CMI编码的程序设计时,要注意的问题是,1码对应的输出是与前一个1码的状态有关,因此要对1码的状态进行记录,从而实现1码对应的00和11码型交替输出。
CMI编码系统设计软件环境采用的是QuartusⅡ软件平台,QuartusⅡ是一种综合开发工具,它集成了Altera的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。通过使用此综合开发工具,设计者可以创建、组织和管理自己的设计,主要包括设计输入、综合、布局布线、时序分析、仿真、编程与配置过程。QuartusⅡ支持多时钟定时分析,内嵌SignalTapⅡ逻辑分析器、功率估计器等工具,易于管脚分配和时序约束,具有强大的HDL综合能力。
SignalTapⅡ逻辑分析器是很重要的测试工具,它是对FPGA的硬件信号进行读取,可以捕获和显示FPGA内部的实时信号行为,从而能够让设计者直观的判断出逻辑是否准确。SignalTapⅡ的功能类似于逻辑分析仪,但与传统的逻辑分析仪相比,具有如下优点:使用SignalTapⅡ逻辑分析器不占用额外的I/O管脚,若使用传统的逻辑分析仪观察信号波形,则必须将待观察信号引到空闲管脚;SignalTapⅡ逻辑分析器不占用PCB上的空间,若使用传统逻辑分析仪,需要从FPGA器件上引出测试管脚到PCB上,这样增加了PCB走线难度;SignalTapⅡ逻辑分析器还不会破坏信号的完整性;SignalTapⅡ逻辑分析器集成在QuartusⅡ软件中,无需另外付费,而传统的逻辑分析仪则价格昂贵。
Verilog HDL是一种硬件描述语言,是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
程序采用Verilog HDL语言进行设计,下面给出了CMI编码的部分源程序:


程序中主要有两个进程,其中前一个进程主要功能是在clk_m时钟作用下,产生m序列,完成CMI编码功能,由m_out输出产生的m序列,cmi_reg用于存储CMI编码值;后一个进程主要功能是在clk_cmi(是clk_m时钟速度的2倍)时钟作用下,输出CMI编码信号。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展初很难理解。但是,Verilog HDL语言的子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从复杂的芯片到完整的电子系统进行描述。
3 主要能力
下面列出的是Verilog硬件描述语言的主要能力:
* 基本逻辑门,例如and、or和nand等都内置在语言中。
* 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
* 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
* Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
* 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。
* 人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。
* Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。
* 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
* 在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
4 系统仿真结果
利用QuartusⅡ7.2软件平台对CMI编码程序进行了编译和仿真,通过仿真得到了编码仿真结果,图3给出了CMI码编码仿真波形。

从仿真结果可以看出,系统在时钟clk_m的触发下,由m_out寄存器输出m序列,输出15位的m序列值,依次为000111101011001;系统在时钟clk_cmi的触发下,完成CMI编码功能,而CMI编码后的输出值则由cmi_out寄存器输出,从仿真波形图上可以看出,CMI编码的码元输出速率是m序列码元速率的2倍。对应的输出值依次为010101110011000111010011010100,对应的CMI编码信号与m序列相比,有一定时间的延时,但编码结果完全正确。
5 结论
本文详细介绍了采用Altera公司的FPGA,利用Verilog HDL语言进行设计的CMI编码系统的具体实现方法,Altera公司的CycloneⅡ系列EP2C5Q型号FPGA具有丰富的逻辑单元,通过QuartusⅡ软件的综合仿真,可以看到程序的设计仅仅占用了11个LE,占用FPGA的LE资源还不到1%。通过以上仿真结果可以看出,编码的结果完全正确,本文阐述的设计方法是合理的。
本系统的创新点是将FPGA应用于CMI编码逻辑的开发中,使系统设计简单,配置更灵活,易于扩展,摆脱了基于专用芯片设计的限制,系统采用FPGA作为CMI编码的单元,应用Verilog HDL对CMI编码逻辑进行描述,利用SignalTapⅡ工具对系统逻辑进行分析,具有开发周期短、成本低、效率高、升级方便等特点,系统还研究了4级移存器周期为15的m序列发生器的设计方法,这为CMI编码器的测试提供了信源基础。存在的问题是系统在设计时未能合理的选择FPGA型号,导致FPGA资源使用不尽合理,因此,在基于FPGA的系统设计过程中,为了避免产生资源浪费,一定要在设计前通过仿真手段大致的估算出设计需要的资源数量,然后选择相应的FPGA型号;但同时也要注意FPGA的容量选择要留有一定的余量,因为在大规模设计中,还可以将本文设计的CMI编码电路与其他功能模块都集成在一块FPGA中,这一点在CMI编码作为系统设计的一部分时便显得尤为重要。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 什么是氢氧燃料电池,氢氧燃料电池的知识介绍2025/8/29 16:58:56
- SQL核心知识点总结2025/8/11 16:51:36
- 等电位端子箱是什么_等电位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重复控制的复合控制策略2025/7/29 16:58:24
- 什么是树莓派?一文快速了解树莓派基础知识2025/6/18 16:30:52









