当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]采用VHDL和发接复用器的SDH系统设计及FPGA仿真

针对目前国内SDH系统中还没有一个专门的E1分接复用芯征,本文介绍一种用高级硬件描述语言VHDL及状态转移图完成该发接复用器的设计的新型设计方法及其FPGA实现。并给出了用Xilinx FoundaTIon tools EDA软件设计的电路仿真波形及Spartan XCS30XL完成FPGA实现的结果。

  1 数字分接复用器结构原理

  本数字分接复用器的功能是:在发送端把12Mbps经过编码的有帧结构的Ethernet(以太网)码流分接为7路标准E1接口速率数据流,SDH 设备再把这7路数据映射到155Mbps的速率去通过光纤传输到下一个SDH设备;在接收端由SDH设备从155Mbps的数据流中取出7路标准E1速率数据正确恢复为原来的12Mbps的Ethernet(以太网)码流。

  发送端12Mbps有帧结构数据帧间由全1空闲码填充。从数字分接复用器发送输出的7路E1数据由于传输处理过程中路中不同,必然会造成7路E1数据在传输过中的各路时延不一致,这就使得各路数据不同步。在设计中如何在接收端使得7路E1数据同步,从而正确恢复原发送端12Mbps数据就成了一个难题。针对这一问题制定出了如下的解决方案。

  1.1 数字分接器原理框图及说明

  如图1所示,把数字分接器从总体上划分为:时钟产生、帧头/帧尾检测、串并变换、固定插零、FIFO插入SYNC五个模块。

  


 

  在发送端,分接器的时钟产生电路把14Mbps系统时钟XCLK转变为12Mbps时钟,用这一时钟对端口来的12Mbps成帧数据DATAIM做帧头(1100010001)/帧尾(1000000001)检测,检测出帧头后再做串/并变换操作,这样就初步完成了分接器的功能。但是,为了使数字复接器能正确复接就需要在分接器输出的7路数据中分别插入同步头SYNC(0111111110)。为了使数据和插入的SYNC区别开来,须要在7路数据中每隔 7bit就固定地插入“0”。这样,就保证了插入的SYNC不会与正常的掌握相混淆,从而也使得分接出的7路数据变为标准的E1数据。

  1.2 数字复接器原理框图及说明

  数字复接器原理框图如图2所示。与分接器相呼应,可把复接器从总体上划分为:SYNC检测、SYNC扣除、并/串转换、扣除零、帧头/帧尾检测5个模块。

  

 

  在接收端,复接口的SYNC检测模块在7路E1数据流中分别检测出7个SYNC。通过SYNC扣除模块扣除在分接器中插入的SYNC,并使得7路 E1数据同步。之后,就可以对这7路E1数据进行并/串转换了。对于转换后的14Mbps数据还需要扣除在分接器中固定插入的零。根据要求对于 12Mbps的数据再一次做帧头/帧尾检测以便在两帧数据之间插入全“1”的空闲码。这样的就正确恢复出发送端的12Mbps码流。

  在发送端和接收端所有SYNC的处理都用FIFO技术来实现。电路设计采用硬件高级描述语言VHDL和状态机来完成,用FPGA验证实现。为提高电路的可实现性,设计全部采用D触发器和逻辑门来实现,并且综合约束工具来控制FPGA内部电路的路径延时。

  2 VHDL语言设计相对于传统设计的优点

  (1)采用自顶向上(Top Down)的设计方法

  与传统的系统硬件设计从具体的设计单元开始不同,VHDL设计是从系统的总体要求出发,先进行系统建模仿真,仿真通过后再利用VHDL层次化、结构化及行为化的描述方法将各个模块模型用可实现的VHDL电路描述替换。这对于一个非常大的硬件系统设计从总体上把握设计的可行性是非常重要的。

  (2)采用系统的早期仿真

  通过对系统建模的早期仿真便于在系统设计的早期发现设计中潜在的问题,与传统的自下而上设计的后期仿真相比可大大缩短系统设计的周期。

  (3)降低了硬件电路的设计难度

  不需要象传统的设计方法在设计前就要写出电路的逻辑表达式、真值表及卡诺图化简,VHDL在设计计数器的时候只关心计数器的状态就可以了。这样也大大缩短系统设计的周期。这对于时间效益的现代社会是非常重要的。

  (4)VHDL设计文档的灵活性

  用VHDL设计硬件电路,主要的设计文件是用VHDL编写的源程序。如果需要也可以利用EDA软件转化为原理图。另外,它资源量小,便于保存,可以方便地被其它设计所利用,可继承性好,在源文件中可方便地加入注释,可读性好。

  3 分接复用器的VHDL及状态转移图设计

  3.1 分接复用器顶层VHDL建模(Top level)及系统功能仿真

  (1)系统发送顶层建模的VHDL端口描述

  Library IEEE;

  Use IEEE.std_logic_1164.all;--引用库说明;

  EnTIty TRAN_TOP is

  Port (RESET : IN STD_LOGIC;--ststem reset signal;

  XCLK_IN : IN STD_LOGIC;--14.336MHz input high clock;

  DATAIN : IN STD_LOGIC;--12.544MHz input data;

  CLK12M :OUT STD_LOGIC;--12.544MHz input clock;

  READCLK_OUT:OUT STD_LOGIC;--2.048 MHz output clock;

  ROUT:OUT STD_LOGIC_VECTOR(6 downto 0)-2.048 MHz 7 route -output data;

  );

  end TRAN_TOP;

  (2)系统发送顶层建模的VHDL仿真波形

  

[!--empirenews.page--]
 如图3所示,送来的10M二进制的一帧数据(DATAIN)为“1100010001(帧头)1111111111,1111111111,1111111111,11111111,1000000001 (帧尾)”。把分接为7路2M的数据如下:

  ROUT0:0,0111111110(插入的SYNC)1011111,0(每7bit固定插入‘0’)10,111…(空闲码)

  ROUT1:0,0111111110(插入的SYNC)1011111,0(每7bit固定插入‘0’)10,111…(空闲码)

  ROUT2:0,0111111110(插入的SYNC)0111111,0(每7bit固定插入‘0’)10,111…(空闲码)

  ROUT3:0,0111111110(插入的SYNC)0111111,0(每7bit固定插入‘0’)10,111…(空闲码)

  ROUT4:0,0111111110(插入的SYNC)0111111,0(每7bit固定插入‘0’)00,111…(空闲码)

  ROUT5:0,0111111110(插入的SYNC)1111111,0(每7bit固定插入‘0’)01,111…(空闲码)

  ROUT6:0,0111111110(插入的SYNC)0111111,0(每7bit固定插入‘0’)0,1111…(空闲码)

  这样,从仿真波形可知电路完成了每帧二进制10M数据分接为7路2M数据时在每路2M数据中插入SYNC(0111111110)、每7bit固定插入‘0’以及在10M数据每帧分接完后插入全1空闲码的操作。

  (3)系统接收顶层建模的VHDL端口描述

  Library IEEE;

  Use IEEE.std_logic_1164.all; --引用库说明;

  Entity RCV_TOP is

  Port (RESET:IN STD_LOGIC; --system reset signal;

  XCLK : IN STD_LOGIC: --14.336MHz input high clock;

  CLKIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0); --2.048MHz 7 rout input clock;

  DATAIN:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --2.048MHz 7 rout input data;

  CLK_OUT:OUT STD-LOGIC; --12.544MHz output clock;

  DATAOUT:OUT STD_LOGIC; --12.544MHz output data;

  );

  end RCV_TOP;

  (4)系统接收顶层建模的VHDL仿真波形

  

 

  如图4所示。7路包含有SYNC(0111111110)及每7bit插入‘0’的两帧2M数据通过接收系统被正确地复接为10M数据。HEAD_FLAG和END_FLAG分别为复接帧数据的帧头帧尾指示信号。

  这时的7路仿真数据相互之间的延迟不同,其中第DATAIN0延迟最大(8bit),通过系统仿真可以证明7路2M数据间的延迟差最大可到125bit,远远起过技术要求的1~6bit。这样,从系统上确保了设计的可行性。

  3.2 状态转移图设计方法

  为去除毛刺,本设计中的计数器全部采用格雷码计数器。因为格雷码计数器从前一个状态到后一个状态的变化同时只有一位矢量发生状态反转(如:对于一个 8位计数器它的计数状态变化是:000→001→011→010→110→111→101→100),故对它译码时可以防止竞争冒险现象,从而消除了电路在译码时可能产生的刺。对于有大量状态转移的电路,采用状态转换图输入法方便、直观;在FOUNDATION工具中,状态图输入又可以转化为VHDL语言,这又大大提高了电路设计的灵活性。

  4 功能仿真、后仿真和FPGA实现

  本设计采用自顶向下(top-down)的设计方法。但为确保设计的可行性,对于每一个子模块都进行了功能仿真和后仿真。用foundation工具做功能仿真时,电路中没有器件延时和线延迟,只能从电路的功能上验证设计的正确性;而后仿零点能模拟实际电路中的器件延时和线延时,从而能进一步验证设计在实际工作中的正确性。最后本设计在FPGA(Xilinx Spartan XCS30TQ144)实现,其工作频率可达到20MHz,并在SDH系统的光纤环网上通过了测试。

  5 FPGA验证及问题讨论

  (1)FPGA验证时的7路2M数据间的延迟差

  为了验证7路数据在传输中有不同延时,分接复用器依然能正常工作,就需要模拟出7路不同的延时来。有三种不同的实现方法来完成:·这7路不同的延时可以在FPGA内中用不同的非门串起来实现;

  ·可以采用74系列器件在FPGA外部完成不同延时的模拟;

  ·在FPGA内部用不同级数的D触发器来模拟7路不同的延时。

  在本设计中采用的是第三种。该方法的好处是易于控制不同路的延时,只要改变不同路中D触发器的级数就可以改变7路不同的延时。

  (2)为提高分接复用器的传输效率,可采用不固定插“0”法,例如HDLC中的插“0”法

  (3)可以通过在综合时进一步加约束来提高分接复用器的工作频率。

  本文中的分接复用器为系统通信提供了灵活的速率选择。可根据不同需要,以2Mbps为基数来配置各种数据速率。本设计中采用VHDL输入法及状态图输入法,大大缩短了设计周期,提高了设计的可靠性,并且大大增加了设计的可移值性。该设计的成功表明硬件描述高级语言(VHDL)是硬件设计的一种十分有效的手段。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭