电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

FPGA模块化设计

来源:文库作者:开心麻花2026-01-071

FPGA模块化设计(精选7篇)

FPGA模块化设计 第1篇

关键词:FPGA,VHDL,串/并转换,并/串转换,UART

0引言

在计算机的数据通信中, 外设一般不能与计算机直接相连, 它们之间的信息交换主要存在以下问题:

(1) 速度不匹配。外设的工作速度和计算机的工作速度不一样, 而且外设之间的工作速度差异也比较大。

(2) 数据格式不匹配。不同的外设在进行信息存储和处理时的数据格式可能不同, 例如最基本的数据格式可分为并行数据和串行数据。

(3) 信息类型不匹配。不同的外设可能采用不同类型的型号, 有些是模拟信号, 有些是数字信号, 因此采用的处理方式也不同。

为了解决外设和计算机之间的信息交换问题, 即需要设计一个信息交换的中间环节接口。UART控制器是最常用的接口。

通用异步收发器 (Universal Asynchronous Receiver/Transmitter, UART) 是辅助计算机与串行设备之间的通信, 作为RS 232通信接口的一个重要的部分, 目前大部分的处理器都集成了UART。

1UART的数据格式

UART的数据传输格式如图1所示。

由于数字图像亚像素在计算机中是用8位二进制表示, 因此UART传输的有效数据位为8位。传输线在空闲时为高电平, 因此有效数据流的开始位设为0。接着传输8位有效数据位, 先从最低位开始传送。奇偶检验位可以设置为奇检验、偶校验或者不设置校验位, 由于本系统使用的传输速率不高, 为了加快开发进程, 减少电路面积, 因此没有设计奇偶检验模块, 数据流中不设奇偶检验位。最后停止位为高电平。

2UART的基本结构

设计的UART主要由UART内核、信号检测器、移位寄存器、波特率发生器和计数器组成, 如图2所示。UART各个功能模块的功能如下文所述。

2.1 信号检测器模块

信号检测器用于对RS 232的输入信号进行实时监测, 一旦发现新的数据则立即通知UART内核。信号检测器的仿真波形如图3所示。

其中, RxD第一次为低时, new_data信号阐述输出, 之后RxD又变低, 但由于信号检测器处于锁定状态, 所以new_data信号并没有输出;最后, reset_n信号将信号检测器复位, RxD再次变低时, new_data又有输出。可见信号检测器的实现完全正确, 其功能完全符合设计要求。

2.2 移位寄存器模块

移位寄存器模块的作用是存储输入或者输出数据。当UART接收RS 232输入时, 移位寄存器在波特率模式下采集RS 232输入信号, 且保存结果;当进行RS 232输出时, UART内核首先将数据加载到移位寄存器内, 再使移位寄存器在波特率模式下将数据输出到RS 232输出端口上。移位寄存器的仿真波形图如图4所示。

如图4所示, 移位寄存器在复位后的每个时钟的上升沿工作。由于数据发送时是先发送有效数据的最低位, 因此移位寄存器是将接收的数据由高位向低位移动, dout输出移位寄存器的最低位。图中的regs数据用16进制表示。

2.3 波特率发生器模块

波特率发生器的功能是产生和RS 232通信所采用的波特率同步的时钟, 这样才能方便地按照RS 232串行通信的时序要求进行数据接收或者发送。比如, 波特率为9 600 b/s, 即每秒传输9 600 b数据, 则同步的波特率时钟频率为9 600 Hz, 周期为1/9 600=0.104 17。

设计波特率时钟的基本思路就是设计一个计数器, 该计数器工作在速度很高的系统时钟下, 当计数器计数到某数值时将输出置高, 再计数到一定的数值后再将输出置低, 如此反复便能够得到所需的波特率时钟。该系统所用的FPGA系统时钟为50 MHz, RS 232通信的波特率为9 600 b/s, 则波特率时钟的每个周期相当于5010696005208系统时钟周期。假如要得到占空比为50%的波特率时钟, 只要使得计数器在计数到1 604时将输出置高, 之后在计数到5 208时将输出置低并且重新计数, 就能实现和9 600波特率同步的时钟。

为了便于仿真, 使计数器计到2时将输出置高, 之后计到4时将输出置地并且重新计数。波特率发生器的仿真波形图如图5所示。

观察波形可以看到波特率发生器每经过4个时钟周期输出1个完整的波特率时钟周期, 占空比为1/2, 并且在每次输出波特率时钟周期之后输出1个系统时钟脉宽的提示信号indicator, UART通过此信号来了解波特率发生器已输出的波特率时钟周期个数。由波形图可见波特率发生器的工作完全满足设计的要求。

2.4 计数器模块

计数器模块的功能是可控的, 在输入时钟的驱动下进行计数, 当达到计数上阈时给UART内核一个提示信号。在不同的工作状态下, 计数器模块的输入时钟是不同的。UART在数据发送之前需要进行数据加载 (即将串行序列保存在移位寄存器内) , 在此工程中计数器模块的输入时钟为系统时钟, 因为此时移位寄存器也工作在系统时钟下。除了数据加载, 另外2个需要计数器模块的过程是数据接收和数据发送。

由于这两个过程中移位寄存器工作在波特率时钟下, 所以计数器模块的时钟就是与波特率时钟同步的波特率发生器提示信号indicator, 这样每输出1个完整的波特率时钟周期计数器就能增加1。

计数器的仿真波形图如图6所示。

计数器在复位后并且ce有效时开始计数, 并且在第10个时钟周期输出提示信号overflow。

2.5 发送数据缓冲器模块

发送数据缓冲器模块的功能是将要发送的并行数据转换成串行数据, 并且在输出的串行数据流中加人起始位和停止位。缓冲器首先将要发送的8位数据寄存, 并在最低位后添加起始位0’, 在最高位前添加停止位1’, 组成10位要发送的数据, 然后根据UART内核模块的计数值将相应的数据送入移位寄存器输入端。UART内核模块输出的计数值是从0依次计到9, 即先将要发送数据的最低位送入移位寄存器。发送数据缓冲器的仿真波形图如图7所示。

由波形图可知, 发送数据缓冲器在复位后, 在输入的计数值si_count为0时, send_si输出起始位0’。在输入的计数值si_count为1~8时, send_si分别输出send_bus上相应的数据位。在输入的计数值si_count为9时, send_si输出停止位1’。

2.6 UART内核模块

UART内核模块是整个设计的核心。在数据接收时, UART内核模块负责控制波特率发生器和移位寄存器, 使得移位寄存器在波特率时钟的驱动下同步地接收并且保存RS 232接收端口上的数据。在数据发送时, UART内核模块首先根据待发送数据产生完整的发送数据序列 (包括起始位、数据位和停止位) , 之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里, 最后再控制波特率发生器驱动移位寄存器将数据串行输出。UART内核模块的主要功能是控制数据接收、数据加载和数据发送的过程, 这可以用状态机来实现, 其状态图如图8所示。

(1) 数据加载过程。

数据的接收过程可以定义3个状态:空闲“idle”状态、接收“receive”和接收完成“receive_over”。UART内核模块在复位后进入空闲状态。如果信号检测器检测到数据传输, 即new_data=1’, UART内核检测到此信号就会进入接收状态。在UART进入由空闲状态转为接收状态过程中, 需要进行一系列的接收预备操作, 包括将子模块复位、选择移位寄存器串行输入数据以及选择移位寄存器的输入时钟等。进入接收状态后, 波特率发生器开始工作, 其输出波特率时钟驱动移位寄存器同步的存储RS 232接收端口上的数据, 并且其提示信号“indicator”驱动计数器进行计数。当所有数据接收完成, 计数器也达到了其计数的上阈, 此时overflow=1’, 通知UART内核进入接收状态。UART内核进入接收完成状态的同时, 会检查奇偶校验的结果, 同时使得子模块使能信号无效, 以停止各个子模块。

UART内核的接收完成状态仅保持1个时钟周期, 设置这个状态的作用是借用一个时钟周期复位信号检测器, 准备接收下次数据传输。

(2) 数据加载和发送过程。

数据加载和发送的过程都是为发送数据而设定的, 所以将它们放在一起进行介绍, 可以用4个状态来实现上述的过程, 即空闲、加载、发送和发送完成。其中的空闲状态是UART内核复位后的空闲状态, 与上面介绍的数据接收过程的空闲状态一致。数据加载过程在数据发送过程之前进行。UART内核复位后进入空闲状态, 当探测到发送控制信号有效时, 即send=1’, 便会进入加载状态开始数据加载。在进入加载状态的同时, UART内核会将移位寄存器、计数器复位, 并且通过选择信号使得移位寄存器的输入为发送数据缓冲器模块产生的串行数据序列, 使得移位寄存器和计数器的工作时钟为系统时钟。进入加载状态后, 在UART内核控制下, 发送数据缓冲器模块会将完整的待发送序列加载到移位寄存器的数据输入端, 发送的序列是和系统时钟同步的, 移位寄存器在系统时钟的驱动下不断读入输入端数据并保存在内部寄存器内。在移位寄存器加载数据的同时, 计数器也在时钟的驱动下进行计数, 由于都是工作在系统时钟下, 所以当所有数据被加载时, 计数器也达到了计数的上阈 (即串行数据的总量) , 此时overflow=1’, 通知UART内核进入发送状态。UART内核进入发送状态的同时会改变几个选择信号, 比如将移位寄存器的时钟设为波特率时钟, 将计数器时钟设为波特率的提示信号, 最重要的是将输出信号送到RS 232的发送端口TxD上。发送的过程和接收类似, 移位寄存器在波特率时钟的驱动下内部寄存器的数据串行的发送出去, 同时计数器在波特率发生器的提示信号驱动下进行计数。UART内核在计数器到达计数上阈后便进入发送完成模式, 并且输出发送完成信号。

3UART顶层模块的仿真测试

将上述各个模块的VHDL代码生成原理图符号, 并在原理图编辑工具中将各个模块连接起组成1个完整的UART模块。为了验证UART模块的正确性, 对UART的发送过程和接收过程分别进行了波形仿真。为便于观察波形, 波特率产生器设置为4个系统时钟产生一个完整的波特率时钟。图9是UART模块接收过程的仿真波形图。

由仿真波形图可以看出, 接收端RxD上的数据序列为0101010101, 起始位0’后为数据位“10101010”, 最后一位为停止位1’。在10个波特率时钟之后, UART发出1个接收完成信号recv=1’, 并在数据输出端“new_data”将接收的数据输出给后续数据处理模块。由于发送数据时首先发送数据的最低位, 因此接收的数据应为“01010101”, 将光条放置数据输出端“new_data”的数据输出波形上, 可以从数据栏看到此时数据输出端new_data=“01010101”, UART数据接收功能完全正确。

图10为UART发送过程仿真波形。由图可以看出, send=1’后待发送数据为“01010101”, 将待发送数据加上起始位和停止位, 并从最低位开始发送, 则发送端txd上的数据序列为“0101010101”, 发送停止位后, 发送结束信号send_over=1’。图10证明UART数据发送功能完全正确。

4结语

介绍了UART在可编程逻辑器件FPGA上的实现, 并通过实际电路验证了设计的功能, 使用FPGA不仅可以方便地用串口协议与PC机进行串行通信, 而且扩展了板级系统的接口功能。应用在可编程器件FPGA内部, 可以很大程度地减少电路板的使用面积, 并提高系统的稳定性和可编程性。

参考文献

[1]刘韬, 楼兴华.FPGA数字电子系统设计与开发实例导航[M].北京:人民邮电出版社, 2005.

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

[3]褚振勇, 齐亮.FPGA设计及应用[M].2版.西安:西安电子科技大学出版社, 2006.

[4]朱明程.FPGA原理及应用设计[M].北京:电子工业出版社, 2001.

[5]MEYER-BAESE U.数字信号处理的FPGA实现[M].刘凌, 胡永生, 译.北京:清华大学出版社, 2003.

FPGA模块化设计 第2篇

1 低压差分信号 (LVDS) 传输

LVDS[1]具有如下电器特性: (1) 低压, 低摆幅 (约为350mV) , 高速。 (2) 低功耗。 (3) 抗干扰能力强。所以, LVDS具有高速、超低功耗、低噪声和低成本的优良特性。

2 光纤信号传输

光纤传输[2] (Fibet Transmission) , 顾名思义, 即以光纤为介质进行传输, 可以传输模拟信号和数字信号。

使用光纤进行信号传输有以下优点: (1) 频带宽, 信道容量大。 (2) 损耗低, 传输距离远。 (3) 抗干扰能力强。 (4) 工作性能可靠。

3 光电接口模块设计

3.1 模块架构及原理设计

光电接口模块需要提供4路双向LVDS接口、4路双向光纤接口, 采用FPGA实现两种接口间的逻辑粘合, 放置一个高稳度晶体振荡器给系统提供标频。

使用AltiumDesigner进行电原理图和印刷电路板 (PCB) 设计, 光纤/标频接口模块的电原理框图如图1所示。

3.2 印制电路板设计

(1) 印制板布局。遵循高速印制板设计规则, 印制板布局如图2所示, FPGA靠近信号接插件放置, 光电转换模块对称分布在FPGA两侧。

(2) 印制板的层次化设计。在PCB的设计中, 层的设置至关重要。PCB的叠层设计由电源、地、信号层数及相对位置, 电源、地层的分割等组成。综合考虑模块的电原理设计及布局, 决定采用8层PCB。按照常见的8层板叠层方案[3], 从上到下分别为信号层1、地层1、信号层2、主电源层、地层2、信号层3、次电源层、信号层4。其中主电源层为全局使用的+3.3V, 次电源层为局部使用的+1.2V和+12V、+5V。采用这种叠层布局, 无相邻信号层, 结构对称, 主电源与地相邻, 能有效降低电源平面的阻抗, 减少电磁干扰。

(3) 印制板布线。在光电接口模块的设计中, 因LVDS和LVPECL差分对的传输频率高达500MHz和1GHz左右, 必须按照传输线规则布线[3]。同时, 由于LVDS和LVPECL都是差分信号, 因此布线时还要注意到差分布线的特点。

AltiumDesigner提供了差分对布线工具, 利用差分对布线工具能很好满足差分对的等长要求。具体操作上, 采用手工布线和自动布线相结合的方式进行。在布线时, 严格遵循以下规范进行:

(1) 线间距的控制:高速信号线的间距以及信号线与铺铜的间距大于2倍的线宽;差分对之间的间距、差分对与敷铜的间距大于同一对差分线之间间距的2倍。

(2) 差分对两线之间等间距, 保持平行;差分对正负级等长, 误差控制在10mil以下。

(3) 相邻差分对的隔离:相邻的差分对之间设置隔离地, 以减少差分对之间的互感。

(4) 相邻层信号走线尽量避免平行, 如果必须平行的话, 线间距大于2倍线宽。

(5) 保持信号线的连续性, 同一根信号线宽度保持一致, 尽量避免使用过孔, 如果使用的话, 同一组信号线的过孔数量保持一致。

(6) 因为工作频率较高, 因此采用“多点就近”的方式接地;同时, 采用“地平面”的方式降低接地阻抗, 增强模块的抗噪声性能。

(7) 对布线进行阻抗匹配设计和信号完整性分析。

(4) 阻抗匹配和信号完整性分析。在布线完成后, 还必须对高速走线进行阻抗匹配和信号完整性分析[3], 这也是决定PCB能否达到设计要求的关键步骤。

①阻抗匹配。

阻抗匹配, 是指在PCB设计过程中, 计算导线的特征阻抗和器件要求的特征阻抗是否一致, 在印制板特别是高速印制板的设计中, 这一点尤其重要。

影响PCB导线阻抗的因素主要有信号线的宽度和厚度、制作PCB介质的的介电常数和厚度等。常用的微带线特征阻抗的经验公式如下[3]:

带状线特征阻抗经验公式如下:

其中, Zn表示导线的特征阻抗;εr为绝缘材料的介电常数, 常用的FR4 (阻燃型覆铜箔环氧玻璃布层压板) 在1GHz下的介电常数为εr=4.25±0.2;h为导线与参考面之间的介质厚度, 通常我们选择地平面为参考面;w为导线宽度;t为导线的厚度。

在布线结束后, 可以依据阻抗经验公式对高速数据信号线的特征阻抗进行计算, 最终使信号发出端的内部阻抗与线路的阻抗相等。通常情况下, 单端信号阻抗一般控制在50Ω~65Ω之间;差分信号控制在96Ω~104Ω之间。

②信号完整性分析。信号完整性 (Signal Integrity, SI) 是指信号未受到损伤的一种状态, 它表明信号通过传输后仍保持正确的时序和幅度关系, 使接收端不会出现错误的判断。信号完整性问题的真正原因还是随着电路频率的提高, 不断缩减的信号上升和下降时间。

在高速电路中, 影响信号完整性的因素包括PCB参数、元器件布局、高速信号线的走线等等, 这些因素都会导致信号完整性问题, 最终引起信号失真、错误等严重问题。

对PCB进行信号完整性建模仿真, 是保证高速PCB达到设计要求的重要手段, 需要高级的专业软件和丰富的硬件设计经验, 步骤比较复杂, 这里就不再赘述。

4 基于FPGA的高速串行数据接口验证

4.1 LVDS数据接口的设计

EP2SGX30D共提供了29个完整的源同步通道, 这些源同步通道都支持LVDS、和HyperTransport电气标准, 最高传输速率达到1Gbsp, 是高速收发模块 (GXB) 的补充方案, 能够满足当前大部分串行数据传输的需求。我们就使用这些源同步差分接口来实现LVDS接口。

由于FPGA内部集成了LVDS收发器的硬核, 使得设计变得相对简单。首先, 我们在Quartus中建立一个新的工程[4], 添加一个新的SCH设计文件。在设计文件中导入LVDS接收器硬核, 设置解串行比为8, 一通道;设置速率核和时钟, 此时, 软件会自动显示时钟频率, 正好是数据速率除以8, 即解串行比。在进行一系列的设置后, 我们就在设计文件中添加了一个LVDS接收模块。

依次类推, 继续添加LVDS发送模块及其它外围设备, 最终完成顶层电路图设计, 如图3所示。

如图3所示, 顶层电路由LVDS接收模块、发送模块、32位计数器、32bit-8bit缓冲、锁相环组成。所有设计完成后, 对DEMO工程进行综合和编译, 最终生成网络图。

4.2 LVDS数据接口测试

设计完成后, 对LVDS接口进行测试。使用双绞线将LVDS接口的收发端短接, 通过下载器之前设计的DEMO下载到FPGA运行。经过测试表明, LVDS数据接口以458.752Mbps的传输速率稳定运行, 测试波形如图4所示。

如图4所示, LVDS输出端口在时钟上升沿发送由模255的计数器产生的8位数据, 接收端在时钟下降沿对数据进行采样接收。由图4中可以看出, 接收端能正确接收到发送端发出的数据, 但是有近4个时钟周期的延时, 这是由于FPGA内部门电路延时造成的。

4.3 光纤数据接口的设计与测试

使用FPGA中的高速收发器模块 (GXB) 直接连接光通信模块EOF-13-12-20I的方式来实现光纤通信, 具体电路设计见3.1节。因此光纤数据接口的设计实际上就是基于GXB的数据接口设计。

采用GXB模块设计光纤数据接口, 和设计LVDS数据接口类似, 可以直接调用FPGA集成的GXB硬核实现, 测试方法也和LVDS接口测试相近, 这里就不详细介绍。

5 结语

本文介绍了一种基于FPGA的高速串行光电接口模块的设计, 重点从模块的架构、原理图、印制板、接口测试验证等方面进行了论述。

目前, 高速串行数据传输及高速光纤数据传输已经在高速、大容量数据传输中体现了其独特的优越性, 未来必将在通信、信号处理等大型系统尤其是分布式系统中得到广泛应用。

摘要:首先介绍了低压差分信号、光纤传输的一般原理, 然后提出了一种基于FPGA的多通道高速光电接口模块设计方法, 从模块的原理设计、印制板设计、FPGA设计等多个方面进行了分析。最后对基于FPGA的高速串行数据接口进行了测试验证。

关键词:高速串行数据传输,低压差分信号,光纤传输,现场可编程门阵列

参考文献

[1]ANSI/TIA/EIA644-A-2001[S], 低压差分信号接口电路的电性能, 2001

[2][美]JosephC.Palais著, 王江平等译.光纤通信 (第五版) [M].电子工业出版社, 2006, 1

[3]姜付鹏等编著.电磁兼容的电路板设计[M].机械工业出版社, 2011:76-78

基于FPGA的时统模块可靠性设计 第3篇

高可靠性永远是计算机系统中必不可少的重要需求,尤其是对于整个系统中用来产生统一时间信号的专用设备来说,其可靠性和精准性非常重要。时统模块的功能就是保证整个系统处在统一时间的基准上,它接收时统站发来的时间信号,完成与时统站送来时间信号的同步,同时回送一路供时统站延时检查和解调检查用,并向测控设备发送所需要的各种频率信号、时间信息和各种采样脉冲信号,来确保测控设备的定时与靶场的时间基准保持一致。

时统信号对信号噪声非常敏感,因此时统模块设计最关键的技术就是抗干扰技术。本系统采用大规模可编程逻辑器件实现修时、分频、产生时间信号和各种同步信号,以使时统接口模块集成度更高、可维护性增强;还充分考虑了EMC设计、时统信号的远距离传输;并且进行了PCB仿真设计。

1 FPGA实现数字滤波抗干扰

大规模可编程逻辑器件(FPGA)的出现,为解决计算机系统抗干扰问题开辟了新的途径,运用FPGA实现数字信号的滤波是一种高效可靠的方法,解决了传统的应用系统中,滤波部分要占用较多的软件资源和硬件资源的问题。而且FGPA具有编程方便、集成度高、速度快等特性,可反复编程、擦除、运用,在不改动硬件设计的情况下,可实现不同的功能需求。该时统模块在FPGA内部实现了同步脉冲的提取、对时功能、自守时、脉宽调制等功能。

1.1 脉冲的提取

脉冲的提取主要包括脉冲识别、中断源判断等。为保证时统信号的精确识别,防止丢帧、误判,须要对信号整形,适当展宽。在FPGA中运用反相器对信号整形,运用信号上升沿触发D触发器输出高电平去提起中断,在CPU主板响应中断后,通过控制D触发器清零端将输出的高电平拉低。以此防止非正常情况的出现。通用时统接收处理模块设计了多路时统接收电路,可同时采集多路外部授时信号,在同时工作的情况下,系统可得到多种不同的时间信息。因此,设计时需要能精确地识别这几路不同的中断源。CPCI系统只能分配给每个CPCI设备一个中断号,使得各路中断源都要通过这一个中断号向CPU主板提起中断。设计流程中可以运用FPGA内部寄存器来识别各路中断源。如图1所示。4路信号用寄存器74373的低4位识别,在系统响应中断后,随即读取寄存器,根据寄存器位的值,判断是由哪路信号源提起的中断。屏蔽信号用于系统关断任一路中断信号源,根据需要,可用软件屏蔽一路或多路信号源,未被屏蔽的信号进入中断产生器,输出中断信号,发起中断申请。CPU主板收到时统模块的中断请求后,做出响应,系统软件根据中断响应输出时间信息。

1.2 信号内部调理

信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。

由于存在这两方面因素,当多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。在本时统接收处理模块处理单元的状态机设计中,采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D触发器的D输入端对毛刺不敏感。根据这个特性,在本时统模块处理单元设计中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟上升沿,只要毛刺不出现在时钟的上升沿,并且不满足数据的建立和保持时间,就不会对系统造成危害(由于毛刺很短,多为几ns,基本上都不可能满足数据的建立和保持时间)。在本设计中,将有毛刺的外部输入时统信号经过两次D触发器触发,利用其对毛刺不敏感的特性,两次经过同步触发,将毛刺消除,亚稳态产生的机率变得特别低,不过信号将要延迟两个时钟周期,即40ns,两个时钟周期相对于一般时统模块μs级的精度要求来说是微不足道的,因而该方法对同步时钟精度可以认为无影响。

1.3 自守时设计

守时是指外部授时信号中断或受阻时,模块可以自行产生频率相同且脉冲沿一致的信号维持系统时间信息。在外部授时信号正常时,由其发起中断取得系统时间信息,无外部授时信号时,需由模块自行产生的信号自动接替外部授时信号的工作,同时用来维持时统信号输出,保证全系统的时间不中断。对于外部时统输入的时钟,为了定时精确,在FPGA处理单元设置5个状态,包括空闲态、A1、A、B1、B等状态,A和B分别为接收到的时统信号低和高,A1、B1分别为接收到的时统信号的第一个低和高。本板通过调线可以设置外部输入有效电平(为高或为低),假设有效电平设置为高,其外部时统输入的同步状态机如图2所示。

本时统模块在上电状态初始化时便启动全局计数器,当在A1状态或在A状态,以板载温度补偿晶振产生的精确的32MHz时钟(误差<1Hz/32MHz)对输入时统进行循环计数直到A1或A状态改变,计数值为Count,在Count基础上分别加上SET-Offset,SET+Offset便可以设置下一个时统时钟周期上升沿调变在允许误差范围内的计数最小和最大允许值,其中SET为32MHz时钟对一个完整时统周期的计数值,Offset为门限误差。以移动标尺方式对下一次外时统输入的沿调变设置了允许误差范围。如果在此限定的计数范围内出现一次上升沿跳变,说明此时有外时统输入,该时统信号是有效的,并依据此上升沿作为同步,向外提供各种同步时统信号,同步误差为一个计数周期,即20ns。假如在此限定的计数范围内没有出现上升沿跳变,则产生一个错误标志位。说明没有外时统信号输入,或者外部输入时统信号无效,此时经由板载温补晶振产生的32MHz分频后,产生所需要的各种时统信号,对外转发,做到自守时功能。一旦有有效的外部时统输入,便可进入同步状态。若没有有效时统输入,立即转入自守时状态。

2 高速电路EMC设计

目前该时统模块主要运用于CPCI系统,基于PCI Express接口的电路属于高速电路,硬件设计中的关键要点是高速电路设计,进行高速电路的PCB设计,首先要充分考虑电磁兼容(EMC)。因为数字电路板形成的磁场天线和电场天线往往是整机设备最大的干扰源,其EMC性能好坏直接影响到设备的功能运行和认证测试。同时,设计初期考虑电路板的EMC问题,可以降低成本,提高产品合格率,缩短开发周期,提高系统的抗干扰能力和可靠性。

数字电路板中因为分布参数引起共电源阻抗耦合和共地阻抗耦合的共模辐射是最多的,而回流面积过大、回流集中问题往往是起因;同时注意密集的过孔、通孔、过大的安全间距、电地层的分割会破坏参考面的完整性,达不到EMC预想效果。

时统接收处理模块数字电路板布局时,时钟发生/缓冲分配器首先放置,并且要满足其间隔距离要求。时钟信号先走线,可以通过串接阻尼电阻或适当的虑波,增大高速信号的上沿时间和下沿时间,减小信号产生的电磁辐射强度和谐波数量,或者采用隔离技术如光隔、变压器隔离等,同样能过滤高频噪声。在可能的情况下,高速的时钟和信号线最好能跟地走,以达到回流面积最小的效果,也能解耦电容大小配备适当,并尽量靠近器件的电地管脚附近,不但能减小信号环流面积,而且能减小电源层耦合噪声的可能性,从而减小共电源阻抗耦合的共模辐射;铺铜要宽且不能留孤岛,铜皮上多打过孔并和地良好端接;信号线不悬空并实现良好端接;器件无用管脚和地良好端接,防止形成电场天线造成共模辐射;另外,3W规则和20H规则的执行、器件的浪涌保护等也可以增强数字电路板的EMC。

3 PCB仿真技术

通过进行PCB仿真,能启发新的思想或产生新的策略,还能暴露出原系统中隐藏着的一些问题,以便及时解决。高速串行电路设计中一个重要的技术难点就是如何保证信号的完整性,在进行PCB设计过程中,有针对性地对模块进行信号完整性分析,对提高系统的抗干扰能力、可靠性有很大的帮助。在本设计中采用的仿真工具是Mentor公司Hyperlynx GHz,Hspice仿真模型由器件的生产厂家提供。

仿真的过程主要包括前仿真和后仿真,以下叙述两种仿真的具体内容。

3.1 前仿真的实现

前仿真是在进行电路布线之前进行的仿真,也即是功能仿真。前仿真的主要目的有两个:验证原理设计的正确性,为电路布线提供设计参数。所以在这个仿真过程中只需要进行一些基本参数的设置,通过调整参数对比仿真的结果,在前仿真时不需要将PCB的全部信息导入。

3.1.1 阻抗控制

PCI Express规范对信号线的特征阻抗要求为:差分阻抗100Ω,单端阻抗50Ω,特征阻抗的误差范围为±10%。特征阻抗主要由线宽、线间距、铜皮厚度、介质层厚度、介质材料等因素决定。特征阻抗的计算界面如图3所示,经计算,特征阻抗为94.5Ω,满足要求。

3.1.2 损耗

在高频电路中,损耗是一个需要重点考虑的因素。在设计中需要采取控制线长、选择介质等手段加以控制。根据在模块上可能出现的最坏情况设置参数:表层走线宽度0.1778mm,走线间距0.1524mm,走线厚度0.1016mm,走线长度为762mm的情况下得到结果如图4所示,进行仿真得到驱动端的眼图符合要求。

3.2 后仿真的实现

后仿真主要是在PCB绘制完成后,在前仿真的基础上将PCB相关的数据导入后再进行的仿真。在将PCB参数导入后进行仿真,结果如图5所示。信号幅度满足要求,在接收器可以识别的范围之内。

根据仿真的结果,得到如下结论:

(1)制板时,要求PCB厂家将差分阻抗控制在100Ω;

(2)PCI Express总线要按照差分线方式走线,差分对间距保持一致;

(3)PCIExpress总线差分对之间的间距保持在0.762mm以上(有空间尽量大);并且和其它类型信号线的间距尽量保持在0.762mm以上(有空间尽量大)。

(4)时钟线一定要走成差分线,保持与其它信号线间距大于0.762mm。

4 结束语

本文详细介绍了作战系统时间统一同步的可靠性设计,从EMC设计、高速电路PCB设计、FPGA逻辑编程设计等几个方面介绍了时统接收处理模块的抗干扰设计及其实现方法,并用仿真技术进行仿真,从而将时统系统可能受到的干扰减到最低,提高了整个作战系统的可靠性。文中的时统模块已经应用于实际的作战系统中,效果良好。

摘要:文章从FPGA逻辑编程设计技术、EMC技术、高速电路PCB设计技术等几个方面介绍了时统接收处理模块的抗干扰设计及其实现方法,实现了同步脉冲的提取、对时功能、自守时、脉宽调制等功能,提高了同步精度和抗干扰性。解决了传统时统模块定时精度不高、设置固定只能满足单一需求等问题。

关键词:同步精度,可编程门阵列,时统,紧凑型PCI

参考文献

[1]田耘,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2010.

[2]西勒提.Verilog HDL高级数字设计[M].北京:电子工业出版社,2010.

[3]何为,杨帆,姚德贵.电磁兼容原理与应用[M].北京:清华大学出版社,2009.

FPGA模块化设计 第4篇

(1)FPGA芯片具有体积小、功耗低、集成度高.

(2)FPGA具有多种配置方式,具有在线修改等特点,方便设计更改.

(3)FPGA采用标准的硬件描述语言进行设计,复杂度高的设计以IP的形式存在,便于设计的移植和修改.

(4)有足够的商业应用作为技术支持,开发方便.

1 接口模块电路设计

接口模块采用FPGA进行设计,如图1所示,主要包括FPGA电路、总线驱动隔离电路、RS422接口电路、电源电路和离散信号处理电路.

其中FPGA电路是接口模块的核心部分,主要由FPGA芯片和配置电路滤波电路组成,完成接口模块的主要功能.电源电路主要采用电源转换芯片进行设计为FPGA电路提供3.3 V和2.5 V电源;驱动隔离电路主要用于对处理器总线信号进行驱动和隔离;离散信号处理电路主要完成对输入离散信号的RC滤波和输出信号的驱动;RS422电路主要进行TTL电平和RS422电平之间的转换.

2 FPGA设计

2.1 FPGA芯片的选型

FPGA芯片的主要生产商有Xilinx、Altera、Lattice、Actel等.Xilinx作为FPGA的发明者在业界具有主导地位[2].Virtex系列是Xilinx的高端产品,也是业界的顶级产品,而且Xilinx的产品具有先进的逻辑和系统设计工具的支持,这些工具具有强大的综合功能、灵活的实现算法以及高效的验证能力等优点,可以缩短开发时间.按照功能要求综合考虑,本设计选用Virtex的Xqv300进行设计,Xqv300具有如下特点:

(1)采用0.22工艺.内部集成300 K系统门,时钟频率最高可达200 MHz.

(2)芯片内核电压2.5 V,系统工作时钟最高可以达到200 MHz.

(3)支持16种高性能IO标准.

(4)内部具有4个DLLS用于先进的时钟控制.

(5)LUT可配置为16位RAM、32位RAM、16位双端口RAM.

2.2 FPGA接口模块的开发流程FPGA开发流程如图2所示[3].

说明:VerilogHDL和仿真测试向量编辑工具采用FPGA Advantage;功能仿真和后仿真工具采用Modelsim SE;综合工具采用Leonardo Spectrum;布局布线工具采用Xilinx的ISE.

2.3 FPGA功能分析及设计定义

根据接口模块的设计要求,分析MD8251A、MD8255A和MD8259A及处理器模块总线的功能需求,确定FPGA内部功能如下:

(1)接口逻辑控制功能

与PowerPC模块交联,数据总线8位(XD7-XD0),地址总线11(XA11-XA1),控制总线(XCMD、XMIO、XIOCS1、XDC、XRD、XWR、XBCLK),接口时序遵守LBE总线规范.

(2)4路RS422接口

4路RS422异步串行通信接口,波特率38 400 bps,起始位1位,数据位8位、偶校验1位,停止位1.5位;

每一路发送和接收各具有8字节FIFO数据缓冲功能.

(3)中断管理

管理8个中断源(串口1发送中断,串口1接收中断,串口2发送中断,串口2接收中断,串口3发送中断,串口3接收中断,串口4发送中断,串口4接收中断).

具有中断嵌套功能,采用固定优先级方式.

由于本模块作为从中断,未和处理器模块中断级联,不能自动清除,所以中断清除采用写寄存器方式完成.

(4)3个8位通用IO接口

8位按字节设置端口,具有锁存功能,寄存器操作方式;

8位按位设置端口,具有锁存功能,寄存器操作方式;

8位输入端口,寄存器操作方式.

(5)4路开关消抖功能接口

采用高速时钟分别对4路离散信号进行采样,通过对连续采样值的判断来确定信号的状态,采样频率为2 ms,连续采样10次采样值不改变,确定信号为当前值.

2.4 FPGA逻辑设计

FPGA程序采用VerilogHDL,按照从顶向下的方法进行设计.将整个设计划分系统主模块、发送模块、接收模块、控制模块、中断管理模块、时钟模块和离散信号处理模块和FIFO模块等8个功能模块,在主模块内调用其他模块,FPGA内部组成框图如图3所示.

主模块完成FPGA的全部功能,内部调用4个发送模块、4个接收模块、1个时钟模块、1个离散处理模块、1个中断模块和1个控制模块.主模块内进程将系统信号分配给各个模块,控制各模块协调工作.

发送模块主要功能:接收主机发来的并行数据并将并行数据转换为串行数据发送到FPGA的输出引脚,为减轻主机负担,发送模块内部采用8 B的FIFO,可连续接收来自主机的8个字节数据按先入先出的顺序将带有奇校验位的数据发送出去,发送模块主要采用2个状态机实现,发送状态机和FIFO控制状态机,发送模块的关键电路为FIFO输出与并串转换电路的时序控制.

接收模块接收TXD端口的串行数据,将串行数据转换为并行数据并将其存入接收FIFO,接收FIFO的深度为8字节.接收模块具有奇校验功能,同样采用状态机控制,并且具有数据检测功能,其关键电路为起始位检测,串并转换单元和FIFO输入时序控制.

时钟模块主要为发送、接收模块提供发送、接收时钟,并为其他所有模块提供工作时钟.为减轻系统功耗,时钟模块设计成可控制,通过控制模块的时钟使能信号控制时钟模块在工作状态和休眠状态之间的切换.时钟模块设计时采用传统的数字电路设计方法,利用n模计数器,画出状态图,用卡诺图化简后,形成门级表达式.这种方法简单实用,占用FPGA的内部资源较少.

控制模块主要接收处理器模块总线的各种控制信号,分组产生各个接口模块的片选、读、写和使能等控制信号;并产生中断应答信号和LBE总线等待逻辑信号等[4].

中断模块,完成中断管理.内部由中断保持寄存器(IVR),中断服务寄存器(ISR),中断屏蔽寄存器(IMR),中断向量寄存器,中断触发判断进程组,中断优先级判断进程组,中断清除进程组等组成.完成对8级中断的管理和控制.

FIFO模块为8字节深度,异步方式控制.FIFO模块主要以发送模块和接收模块内部空间作为数据缓冲区使用[5].

离散模块主要包括:1个8位按字节输出寄存器和相应的控制逻辑进程组;1个8位按位输出寄存器和相应的控制逻辑进程组;1个8位输入寄存器和相应的控制逻辑进程组;1个离散输入采样滤波进程组.

2.5 FPGA综合和仿真验证

在完成源代码的编写后,首先对VerilogHDL程序进行功能仿真,对仿真的波形进行了分析,对不满足时序和功能要求源代码进行了修改,直到仿真结果满足设计要求.

经过功能仿真后,使用Leonardo Spectrum综合,程序占用FPGA资源在40%左右,在综合时按照速度优先的综合原则进行;并采用ISE工具进行布局布线.

将布局布线后产生的设计文件和标准时延文件以及测试向量文件调入Modelsim进行后仿真,查看仿真波形中各种线号的时序关系,对不满足时序和功能要求的位置,分析其原因,对源代码和综合约束文件进行了修改,最后满足设计要求.4串口同时发送8字节数据的时序图如图4所示,4串口同时接收8字节的时序图如图5所示.

2.6 FPGA在系统测试

采用Zuken CR5000进行接口模块的PCB设

计.接口模块电路板采用标准的F2结构,全工艺;层数6层;使用专用的电源层和地层,时钟线采用双地线进行屏蔽.数据线进行了等长控制.

在仿真验证后,通过JTAG接口配置FPGA,接口模块在系统上进行了验证,包括以下功能:

并行端口信号输入、按字节输出、按位输出;

离散信号处理;

时钟使能功能;

串行接口单次1字节、2字节8字节发送;

串行接口单次1字节、2字节8字节接收;

中断产生和清除,及中断服务测试;

综合测试.

3 结 论

通过仿真验证和在系统验证,表明基于FPGA设计的接口模块运行稳定、可靠,功耗低,而且,可以根据需要在不改变硬件设计的情况下进行功能更改.FPGA技术以其鲜明的特点在高可靠性的嵌入式领域将拥有更加广泛的应用.

参考文献

[1]赵杨,王龙,赵群,等.基于FPGA的全数字锁相环设计研究[J].光电技术应用,2007,22(6):18-20.

[2]赵曙光,郭万有,杨颂华.可编程逻辑器件原理、开发与应用[M].西安:西安电子科技大学出版社,2000.

[3]蒋昊,李哲英.基于多种EDA工具的FPGA设计流程[J].微计算机信息,2007(32):204-205.

[4]戴梅萼,史嘉权.微型计算机技术及应用[M].北京:清华大学出版社,1995.

FPGA模块化设计 第5篇

1 设计要求

设计一个DDS正弦波信号发生器的按键/LCD模块。此信号发生器输出频率范围是1 KHz~2000 KHz、频率步进100 Hz。

具体要求:

(1)在LCD上显示波形信息,显示输出信号频率,复位时输出1.0 kHz。

(2)使用按键手动输入频率。

(3)模块同时进行DDS的二十位频率字计算,设100 Hz的频率字为84。

2 顶层模块框图(见图1)

整个按键/LCD模块由keys子模块、LcdDisplay子模块和子DIVIDER模块构成。keys模块功能是实现手动输入频率字;LcdDisplay模块功能是把输出信号的波形、频率用LCD显示器显示出来;DIVIDER模块则是通过分频产生按键防抖动电路所需的时钟。

3 keys模块设计

考虑到在DDS模块中参与累加的是频率字而非频率,而频率字不等于频率,是频率与一常数的乘积。若用扫描式键盘直接输入频率,还得设计一乘法电路计算频率字,为了使设计简单,采用多个按键输入频率,其中每个按键处理十进制频率中的一位数字的输入。从0开始,每按一次,递增1,到9后,再按一次变回0。同时使用累加方式算出相应的频率字。

3.1 实体声明

根据设计要求,该模块的输入有:五位的按键输入信号keys,复位RESET信号和来自分频模块的消抖时钟信号CLK。输出有:二十位的频率输出信号DOUT和二十四位的频率字输出信号FWORD。此模块的实体声明如下:

3.2 按键消抖

将五个按键合为一信号KEY1进行消抖,这里:

3.3 频率和频率字累加

每位数字,从0开始,对应的按键按一次,频率累加1,到9后,再按一次变回0;相应的频率字则累加一个频率字单位,例如100 Hz位,频率字单位为84,而1 kHz为则是840,等等。下面是频率和频率字累加进程:

4 LcdDisplay模块设计

4.1 实体声明

该模块的输入有:自分频模块的LCD时钟信号CLK、复位RESET信号、来自keys模块的二十位的频率信号DIN;输出有:LCD读写、使能、命令数据选择、和数据信号:

4.2 LCD控制电路设计方法

LcdDisplay模块中的LCD控制电路通常有两种设计方法,一是状态机方法,二是计数器方法。这里采用计数器方法,因此方法具有直观,容易设计的特点。

(1)LCD显示译码。

(2)LCD控制过程。

LCD控制过程分为初始化阶段和循环扫描两行输出阶段。初始化阶段编程参照以上1602的一般初始化过程。两行循环扫描中则有三种情况:一是空白,此时输出空白符。二是不变字符,此时直接输出所要求的字符如“i”。三是输出变化的各位频率值,此时输出各位频率信号。下面是LCD控制电路的主要进程:

5 时钟分频DIVIDER模块

通过分频,由20 MHz的系统时钟得到125 Hz的消抖时钟和1 kHz的LCD驱动时钟。使用周期足够大的LCD驱动时钟,可有足够延时,写指令不用检测忙信号。实验证明对于作者所用的康芯开发板,1 kHz已足够。此模块设计简单,这里简略。

摘要:本设计应用可编程逻辑器件FPGA,设计一个DDS信号发生器的频率字输入和波形与频率显示模块。采用多个按键输入频率,其中每个按键处理十进制频率中的一位数字的输入,同时使用累加方式算出相应的频率字。与大多数DDS信号发生器采用的FPGA+单片机方案相比,既节省了成本又充分利用FPGA内部资源。

关键词:DDS信号发生器,FPGA,按键/LCD模块

参考文献

[1]邓耀华,吴黎明,张力锴,等.基于FPGA的双DDS任意波发生器设计与杂散噪声抑制方法[J].仪器仪表学报,2009(11):21-27.

FPGA模块化设计 第6篇

ATM它采用固定长度的信元 (Cell) 的概念, 综合了传输、复用和交换技术, 向用户提供高速带宽, 使用户可以在同一网络上传送综合业务。ATM层连续输出53 bytes的信元 (包含5个bytes的信元头及48 bytes的净荷) , 由于ATM信元中缺乏差错控制和流量控制等功能, 不能很好地满足多数应用的要求。为了弥补这一不足, ITU在I.363中, 在ATM层之上定义了一个端到端的层, 这一层称为ATM适配层 (ATM Adaptation Layer, AAL) 。AAL层又进一步划分为若干子层, 其中, AAL2子层主要是面对可变比特率 (VBR) 业务, 这类业务通常采用特定的压缩编码, 并且要求严格的实时服务。

1AAL2信元格式

1.1时延分析

由于带宽资源紧张, 很多设备 (诸如数字话机、数字传真机或者卫星等) 在接入网络前往往会对语音类业务进行压缩编码, 在满足一定语音质量的前提下大幅度降低信息速率。

传统的ATM信元报文较长, 如果直接采用ATM信元传输语音 (或传真, 下同) 的话, 由于每个信元只能承载一路语音数据, 因此会在信元封装时产生较大的语音时延。封装时延计算公式为:Td=L/B, 其中Td为时延 (ms) ;L为封装长度 (bit) ;B为码率 (kbps) 。表1列举了几种常见编码格式的接口方式、码率和时延。可见, 在采用ATM信元传输时, 码率较高的PCM编码仍可保持较小的时延, 不会影响到用户的通话感受, 而G.729、AMR等低码率业务的时延则非常大, 如果再累加上编码时延、交换时延和解码时延, 会使通话变得非常难懂。可见, 直接采用ATM信元承载语音类业务是不合适的。

1.2信元格式

AAL2适配可以通过调整微信元长度来控制时延及系统容量。常见的AAL2适配方式分为定长AAL2适配和变长AAL2适配:变长AAL2的优点是可以通过控制封装长度精确调整时延, 但这种适配方式由于复杂度较高, 在封装、传输、交换和重组等过程中的处理量较大, 容易导致设备成本上升。而定长AAL2适配方式是将微信元长度封装成同等大小, 处理起来非常容易, 而且也能有效降低时延, 因此应用较为广泛。

在平衡时延与微信元尺寸之后, 提出了一种定长的AAL2适配信元格式, 如图1所示。在一个ATM信元中, 保留前5个bytes信元头, 剩余的48 bytes净荷被等分成4个AAL2微信元, 每个微信元为12个bytes, 其中前2个bytes为微信元头 (微信元头包含1个byte的通道标识符CID及1个byte其他控制字段) , 其他10个bytes为净荷。这种封装格式可以在同一个ATM信元中容纳多达4路语音数据, 与采用大信元传输相比, 时延减少了80%。

2基于FPGA的模块设计

2.1接口种类

常见的语音类业务接口方式可分为TDM (Time Division Multiplexed) 及主机接口HPI (Host Processor Interface) 。TDM接口常用于波形编码器, 如PCM、ADPCM、CVSD等, 这种接口通常采用帧同步、时钟和收发数据等信号进行设备互连和信息交互;HPI接口常用于参数编码器, 如G.729、AMR等, 这种编码器通常需要通过CPU完成与其他设备之间的信息交互。

2.2传统的适配方式

传统的AAL2适配方式是采用高性能通信处理器完成的, 借助处理器提供的TDM接口及CPU接口完成TDM流格式以及HPI包格式数据的处理, 通过配置CPU接口的时序等参数, 使之适应不同种类的外设。这种方式灵活性高, 适应性强, 但由于实时业务的处理优先级较高, 对处理器的资源占用很高, 多路业务并发时处理能力跟不上。在某些核心板卡中, 过高的业务处理负担会严重影响CPU对协议、信令的响应速度, 很容易导致系统不稳定甚至死锁;其次, 由于要求CPU具备TDM、HPI和UTOPIA等多种接口, 使CPU的选型受到一定限制, 通常要选用成本较高的通信处理器, 致使系统成本上升;为了保证处理性能而选择更高主频的处理器, 也会导致系统功耗进一步攀升。

2.3基于FPGA的适配方式

2.3.1 模块构成

为了实现线速的处理性能, 减轻CPU负荷, 同时降低系统成本和功耗, 采用HDL语言在FPGA平台上实现AAL2适配不失为一种高效的方式。这种设计方式可以使模块很方便地在不同FPGA芯片间移植, 由于通信板卡通常会配备FPGA芯片, 这种方式不会增加板卡的复杂度。

AAL2模块主要由业务接口、数据缓冲区、适配/解适配控制、UTOPIA接口和调试缓冲区等几部分组成, 模块的原理框图如图2所示。

2.3.2 详细设计

详细设计方法如下:

① AAL2模块的业务接口有2个:16 bit数据宽度的HPI接口和8.192 MHz时钟速率的TDM接口。HPI接口由16位地址、16位数据及相应的控制信号构成, 处理器通过HPI接口完成AAL2模块和编码器之间数据交换;TDM接口是一个自定义接口, 帧格式如图3所示, 帧速率为8 kHz, 每帧包含64个时隙, 每个时隙包含16个bit。TDM接口包含6条信号线:收发时钟、收发数据和收发帧头。帧头标识每一帧的起始位置, 帧头后的第一个数据为第0时隙的第0 bit, 数据的变化发生在时钟的上升沿。通过配置每个时隙中的有效比特数 (1~16) , 这种帧格式可以承载编码速率为8~128 kbps的语音数据 (以8 kbps递增) ;

② AAL2模块包含几组数据缓冲区:业务接口侧有TDM数据收发缓冲区和HPI数据收发缓冲区;UTOPIA接口侧有信元收发缓冲区。TDM数据接收缓冲区为每个话路提供2个微信元 (160 bit) 的缓冲容量, 适配模块采用“乒乓”方式进行数据提取, 可以将封装时延降到最低, 硬件资源消耗也较小。TDM数据发送缓冲区同时承担着数据缓冲和吸收时延抖动及数据突发等作用, 通常会设置每路8~32个微信元的容量, 具体数值要根据系统的时延和抖动情况决定。HPI数据缓冲区是一个共享缓冲区, 在收发2个方向各设置了32个小信元的容量, 可以兼顾处理器的负荷和信元的突发。UTOPIA接口的收发信元缓冲区均设置为8个ATM信元的容量, 分别占用1个M4K的RAM块 (以ALTERA公司的FPGA为例) ;

③ AAL2模块中的适配/解适配控制是整个模块的核心部分, 它完成原始数据和ATM信元之间的双向转换。适配控制部分按照固定的节拍扫描TDM接口和HPI接口的全部话路, 根据控制寄存器中的配置参数, 将数据接收缓冲区中的数据封装为微信元, 转存到UTOPIA接口的ATM信元缓冲区。适配控制对于TDM接口采用“乒乓”方式进行数据采集, 对于HPI接口采用BD (Buffer Descriptor) 方式进行数据采集。适配控制部分具备定时控制能力, 可以对ATM信元的最大等待时间进行设置, 如果在规定的时间内没有足够的微信元完成ATM信元的封装, 则在信元的尾部填充1~3个“空微信元” (指CID=0xFF的微信元) , 并立刻转发到ATM网络中。解适配控制的处理流程与适配控制相反, HPI接口的数据处理也采用BD方式, 由于TDM接口数据缓冲区承担着吸收抖动和突发的作用, TDM接口的数据处理采用环形缓冲区配合读写指针实现:TDM接口侧的读指针按照接口速率从双端口RAM中读取数据, 当某一话路被使能后, 解适配控制将这一路的写指针调整到距读指针半个缓冲区的位置。正常情况下读写指针间距保持在半个缓冲左右, 当系统未达到同步或者产生数据突发时, 二者间距会发生变化, 未使指针发生碰撞 (即指针相等) 的失步和突发不会引起误码或滑码, 一旦发生指针碰撞, 解适配控制模块会重新调整写指针, 指针的调整会同时产生误码或滑码;

④ UTOPIA接口完成AAL2模块与ATM交换芯片之间的数据交互, ATM论坛规定了2种接口格式:UTOPIA LEVEL1和UTOPIA LEVEL2。LEVEL2接口目前应用较广, 它有8位接口和16位接口2种格式, 为使模块具有更强的适应性, 模块的UTOPIA接口设计为可通过CPU配置参数来确定接口的位宽;

⑤ 设计中还提供了监视缓冲区及多组计数器, 可用来查看大小信元的收发数量以及其他异常情况, 查看当前的信元内容。这些措施主要用于系统调试和故障定位。

2.4典型应用

在ATM交换设备中, 存在着大量的语音、传真和电台等业务, 其接口方式基本可划分为TDM接口和HPI接口。典型应用方式如图4所示。

HPI接口接入AAL2模块的方式比较简单:将编码器的HPI接口和AAL2模块的HPI接口同时挂接到处理器上, 为每个模块分配独立的片选、中断等控制信号, 数据交互则由处理器完成。

TDM类型的接口之间区别较大, 主要体现在时钟速率、话路数和单路码率的差异上。为了便于多种不同TDM接口的接入, 在AAL2模块与编码器之间需放置一个多速率复分接模块, 各种不同/相同速率编码器的TDM码流经过多速率复分接模块形成一条高速率的TDM码流连接到AAL2模块。

2.5性能分析

2.5.1 适配时延

适配时延即完成一个微信元封装和将微信元从UTOPIA接口转发出去所使用的总时间。

由于微信元长度固定, 因此TDM接口的微信元封装时间仅与话路的码率相关, 以64 kbps速率的PCM编码为例, 封装时延Td= (10*8) /64=1.25 ms。当系统中只存在1个话路时, 整个ATM信元全部用来承载这个话路的数据, 此时的转发时延最大, 相当于封装时延4倍。话路数越多, 单位时间内生成的微信元越多, 转发延时也就越低。

HPI接口的微信元封装是在处理器中完成的, 因此, 封装时延与处理器性能以及封装算法密切相关。由于微信元数据量极小, 这一时延通常不会对系统时延产生大的影响。

在系统中话路较少且话路的码率较低时, 为了避免产生大的适配时延, 应该使能适配定时控制, 并且将定时寄存器设置为恰当的值。

2.5.2 解适配时延

解适配时延指的是将从UTOPIA接口收到的ATM信元转发到TDM或HPI接口缓冲区并转发出去所使用的时间。在25 MHz时钟工作时, 解适配控制部分可在4 μs内将1个ATM信元转发到接口缓冲区, 这个时间可以忽略不计。

TDM接口解适配时延取决于读写指针的间距及话路的码率。通常, 这一间距为单路缓冲区的一半, 在最差情况下 (写指针紧跟读指针时) , 二者间距为 (n-1) 个微信元, n为单路缓冲区的总微信元数量。

和适配时延一样, HPI接口的数据转发也是在处理器中完成的, 这一时延也不会对系统时延产生大的影响。

2.5.3 承载话路数量

根据微信元的结构, CID字段占用了1 byte, 因此AAL2模块可支持256个话路, 由于0和255两个CID为保留值, 实际可同时承载的最大话路数量为254路。

从TDM接口的帧格式可知, TDM接口最大可以承载64个话路 (每个时隙为一个话路) ;由于HPI接口为公用缓冲区接入方式, 在处理器转发性能足够的情况下, 只要HPI接口话路数和TDM接口话路数的总和不超过254个即可。

3结束语

这种定长的AAL2信元格式和基于FPGA的AAL2模块已经在多项工程中得到应用, 在处理大容量、多种编码的语音类业务时表现出了良好的处理性能和较低的时延。HDL语言的设计方式提供了良好的可移植性, 使AAL2模块可以应用在多种FPGA平台上。灵活的接口配置方式和丰富的控制手段也为应用提供了极大的便利。对于以分组交换为基础的传送网络硬件设计, 文中提到设计方法也具有一定的借鉴作用。

参考文献

[1]陈锡生.ATM交换技术[M].北京:人民邮电出版社, 2000.

[2]ITU-T Recommendation Q.2630.1 AAL Type2 SignallingProtocol (Capability Set 1) , 1999[S].

[3]The ATM FORUM Technical Committee:Utopia Level2, Version 1.0, June 1995[S].

FPGA模块化设计 第7篇

OFDM(正交频分复用)是多载波传输方案的实现方式之一[1]。COFDM是由信道编码和OFDM结合起来的一种数字调制方式,提供了强大的编码纠错能力,在数字音视频广播和高速无线局域网等多个领域中得到广泛应用。欧洲广播机构为DVB-T(地面数字视频广播标准)选择了COFDM为调制方式。

本文以DVB-T标准为背景,选用FPGA为硬件平台研究并仿真了COFDM各编码调制模块。

2 FPGA实现OFDM的基本思想

OFDM是一种对多载波调制技术改进后的传输方案。在传统频分复用系统的基础上,其基本思想是将高速数据流经串并转换,分配到给定频域内的若干正交子信道上,各子信道载波之间虽有重叠,但子载波频率是互相正交的,每个载波频谱最大值都和相邻载波的零点重叠。因此OFDM的信道利用率高于传统的频分复用系统。同时使信道衰落引起的突发误码分散到不相关的子信道上,变为随机误码,有效地减少了码间干扰。

实现OFDM调制需要使用离散傅立叶反变换(IDFT),在OFDM系统的实际应用中,可以采用方便快捷的IFFT来实现调制模块。

对于DVB-T的核心模块FFT计算,随着应用需求的增加,算法复杂度也提高了[1,2]。系统需要较高的工作速率及复杂的计算处理能力。FPGA作为并行处理系统,可采用并行计算完成复杂的设计。对多点的FFT计算来说,集成了DSP核的FPGA方案整体性能和计算速度均优于基于指令系统的DSP。

笔者选用Xilinx Virtex-5 SX50T FPGA作为开发平台,时钟高达550 MHz,同时有288个DSP48E硬件资源和4 752 Kbyte的BlockRAM资源[3],可满足DVB-T基带处理系统开发的硬件要求。

3 DVB-T COFDM系统及实现

欧洲地面数字标准DVB-T[4]主要规范了发送端的系统结构和编码调制方式。一般的发送端功能结构由信道编码、OFDM调制、上变频等部分组成。图1为DVB-T标准V1.6.1中给出的发送端结构框图。

输入端采用MPEG-2压缩的音视频作为资源(TS码流)。每个TS包由188 byte组成,在最终形成射频信号发送到信道中之前,将主要经过以下过程:

1)能量扩散:在实际应用中,常用一组伪随机序列对经信源编码的一组TS码流按比特异或进行随机化处理,用以保证在任何时刻进入传输系统的“0”与“1”的概率基本相等,提高输入数据码流的统计特性,拓展了数字信号的功率谱。

2)两层纠错编码

(1)RS码。DVB-T中规定外码纠错部分采用RS(208,188,t=8)编码。在传输流188 byte之中,加入16byte的冗余纠错码,生成一个误码保护包。这种编码可以纠正8 byte的突发错误。码生成多项式g(x)=(x+λ0)(x+λ1)(x+λ2)(x+λ15),其中λ=02HEX。编码电路定义clk为输入字节时钟。编码电路主要由有限域乘法器、有限域加法器、选择器、线性反馈移位寄存器等组成。

(2)卷积码。内码采用Viterbi卷积码。采用移位器实现的主卷积码率为1/2。然后可以进行收缩删余,产生2/3,3/4,5/6,7/8等多种卷积码率。图2为卷积编码的具体结构。对于多时钟,可采用FPGA内部的锁相环资源。删余模块通过不同状态控制标志来实现不同码率。

3)交织。交织是一种时间/频率扩展技术,使信道错误的相关度减小,在交织度足够大时,把突发错误离散成随机错误。DVB-T系统中为避免RS产生误码,在两层纠错码之间加入了数据交织环节。对误码保护包采用交织深度I=204/17=12 byte,M=17的卷积交织,将连续的错误打散,以提高外码的纠错效率。针对FPGA内嵌RAM,外交织采用开一双口RAM的方式来代替各个支路的FIFO移位寄存器。通过控制读写地址来实现卷积交织,数据操作在与输入输出是严格同步的。在DVB-T系统中还有一层内交织。内交织包括比特交织及符号交织两部分。

4)帧形成。经幅度相位映射后的有效子载波数据和连续导频、分散导频、TPS(传输参数信令)信号等组成OFDM符号。其中,TPS描述了DVB-T系统的主要参数。导频信号的插入是为了方便接收机对接收信号进行估算,提高接收质量。图3为插入导频的结构图。在具体实现中,通过编写RAM的初始化文件,在RAM的固定位置插入固定值来实现导频插入。

5)信道OFDM调制的实现。

频域中的OFDM符号,通常采用IFFT来代替OFDM调制中的多子载波调制,得到时域OFDM符号。

Xilinx公司提供了Pipelined,Streaming I/O、Radix-4,Burst I/O和Radix-2,Minimum Resources等3种结构的FFT/IFFT核。直接调用可以合理利用Xilinx FPGA的结构,优化排局布线,缩短设计的周期。笔者综合考虑了所需资源和处理延时,采用了基于基四算法,将1帧数据存起来,然后进行计算,最后输出数据的第二种结构:Radix-4,Burst I/O。

实现时,Radix-4,Burst I/O有数据装载与输出、数据计算这两个过程,两个过程不能同时进行。当IFFT开始时,数据装载,当一帧数据装载完毕,IP核开始计算,计算完毕后进行数据的输出。

4 系统仿真及结论

4.1 系统仿真设计方案

本系统基于DVB-T的2K模式进行设计。COFDM参数如下:带宽为8 MHz;符号有序持续时间为224μs;保护间隔Tg=56μs;载波数为1 705。

由以上参数可以得到:1)符号总的持续时间为280μs;2)符号速率fs=3.57103字符/秒。

系统采用Xilinx公司的Virtex-5 SX50T FPGA,开发环境ISE10.1,Modelsim SE6.2b,程序语言采用Verilog HDL,系统实现了各编码调制子模块,完成对标准中2K模式的XST综合后的Modelsim仿真。图4所示为系统流程图。

4.2 时序仿真结果分析

图5是插入导频的时序图。Dual_RAM_out_I_2和Dual_RAM_out_Q_2是前端经QPSK映射之后的数据,Polit_ROM_out是导频数据。按照DVB-T标准,进行插入导频。符号0的导频位置为0号子载波,12号子载波,24号子载波导频的功率与数据的功率比为16∶9。所以数据的幅值为64,导频的幅值为121。由图5可以看出,在输入数据中成功地插入了导频信息。

图6所示为IFFT仿真时序图。fwd_inv为低表明进行IFFT运算;rfd信号为高时表明此时正在装载数据;busy信号为高时表明正在进行数据计算;dv信号为高时表明数据输出有效。xn_re,xn_im是输入IFFT模块中的数据信号,xk_re,xk_im是IFFT模块数据的数据的输出信号。从仿真图中可以看出,1次完整的IFFT计算所用的时间比1个COFDM符号持续时间(280μs)要小,所以IFFT模块的设计是满足时序要求的。

4.3 COFDM基带信号频谱图

将COFDM基带调制程序在Virtex-5 SX50T芯片上调试,通过ChipScope软件将调试数据截取下来,然后导入Matlab观察调制信号的频谱图,如图7所示。由图可以看出,调制信号的实际带宽为7.61 MHz,符合DVB-T标准。

5 基于FPGA的COFDM在地面数字视频广播开发中的优势

COFDM和FPGA在地面数字视频广播中的优势有:

1)COFDM采用有效的信道编码解决了由部分信道受损严重带来的失真问题,提高了系统的纠错能力。同时采用多载波的调制技术,提高了频谱利用率和抗码间干扰能力。在无线传播中,地面信道具有自身的特性,DVB-T标准选择COFDM作为地面数字视频广播的物理层标准,适用于解决地面信道中常见的多径失真和移动接收因多普勒频移引起的衰落现象,也利于单频网络的实现。

2)系统选用FPGA作为开发平台,功耗低,速率高,成本低,突出了集成DSP核的FPGA在处理高速数字信号处理上并行计算的优势,以及FPGA开发周期短、半定制的特点。随着无线通信包括数字电视传输技术和大规模集成电路的发展,FPGA将成为未来技术开发的趋势。

参考文献

[1]ATHAUDAGE C R N,ANGIRAS R R V.Sensitivity of FFT-equalised zero-padded OFDM systems to time and frequency synchronisation errors[J].IEEE Proceeding Communication,2005,152(6):945-951.

[2]吴进,华涛.DVB-T系统中TCM调制解调器的设计与实现[J].电视技术,2009,33(2):6-7.

[3]田耕.无线通信FPGA设计[M].北京:电子工业出版社,2007.

FPGA模块化设计

FPGA模块化设计(精选7篇)FPGA模块化设计 第1篇关键词:FPGA,VHDL,串/并转换,并/串转换,UART0引言 在计算机的数据通信中, 外设一般不能...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部