FPGA验证范文

2024-09-21

FPGA验证范文(精选6篇)

FPGA验证 第1篇

关键词:准循环LDPC编码,循环移位寄存器,流水线运算

LDPC码即低密度奇偶校验码,是由Robert G.Gallager博士于1963年提出的一类具有稀疏校验矩阵的线性分组码,不仅有逼近Shannon限的良好性能,而且译码复杂度较低,结构灵活,是近年信道编码领域的研究热点,目前已广泛应用于深空通信、光纤通信、卫星数字视频和音频广播等领域。LDPC码已成为第四代通信系统(4G)强有力的竞争者,而基于LDPC码的编码方案已经被下一代卫星数字视频广播标准DVB-S2采纳。本文主要研究在数字电视传输系统中LDPC编码的实现过程与验证,并与Matlab仿真结果对比得出结论。

1 LDPC编码原理

低密度校验(LDPC)码是Gallager提出的一类可用稀疏校验矩阵描述事物线性分组码。其在迭代译码条件下逼近香农限的能力,其校验矩阵具有稀疏性,即矩阵中除了少部分元素非零外,其他大部分都是0。

国家标准中采用低密度奇偶校验码(LDPC)的准循环矩阵[1]是指把大的矩阵分成若干个小子矩阵,每个矩阵是一个循环矩阵,即每一列(行)都是前一列(行)的向下或向上移一位或若干位而得到的,而各个子矩阵之间没有任何联系。准循环LDPC的编码可以用移位寄存器在线性时间内完成,编码也可用计数器寻址,且便于部分并行编码,因此在实现上更有优势。标准中所规定的LDPC码的校验矩阵仍是一个稀疏矩阵,其生成矩阵是一个具有系统机构的非稀疏的准循环矩阵。

根据编码效率的不同,LDPC码输入信息比特各不相同。LDPC码的生成矩阵Gqc的结构如式(1)所示。

其中,Ib×b阶单位矩阵,Ob×b阶零矩阵,而Gi,jb×b阶循环矩阵,取0≤ik-1且0≤jc-1。前级码字按顺序进入LDPC编码器时,最前端的比特信息是信息序列矢量的首位元素,而LDPC编码器输出的码字却是校验位在前,信息位在后。在循环矩阵Gi,j内,它的每一行都是把其上一行向右循环移一位得到,首行也是由最后一行向右循环移一位得到的;同理,此循环矩阵的每一列也具有与行相同的机构特点。这样就可以确保其生成矩阵的每个子矩阵由其第一行或第一列移位获得。这种循环矩阵结构大幅减少了生成矩阵的存储量。国标提供了生成矩阵中各循环矩阵Gi,j的生成多项式,即每个循环矩的第一行的行列式。根据国标,3种不同内码码率的LDPC码的结构分别为:

(1)码率为0.4的LDPC(7 493,3 048)码,其生成矩阵Gqc具有上式所示的矩阵形式,其中参数分别为k=24,c=35和b=127。

(2)码率为0.6的LDPC(7 493,4 572)码,其生成矩阵Gqc具有上式所示的矩阵形式,其中参数分别为k=36,c=23和b=127。

(3)码率为0.8的LDPC(7 493,6 096)码,其生成矩阵Gqc具有上式所示的矩阵形式,其中参数分别为k=48,c=11和b=127。

2 LDPC编码的FPGA实现

由于3种不同码率的编码仅在于校验位与信息位的比例不同,所以在FPGA实现结构设计时可以采用同一种运算模式。根据国家标准提供的生成矩阵Gqc结构,只需要取前面c×b bit的校验位便可以得到LDPC码编码后的码字;后k×b bit的信息位可直接将输入数据存储单元后即可输出。在这种编码结构下,以b=127的循环矩为基本计算单元来分解整个编码过程,单个计算单元先对127 bit信息码与127×127 bit循环矩阵进行矩阵相乘,再对同一列相乘结果进行异或累加,便可以得到127 bit的校验位。

与简单的并行输入结构比较发现,采用串行输入并行输出[2]的结构,可以节省硬件资源,简化单位运算模块结构,时钟限制小,且具有大量并行处理的优点,故采用串行输入并行输出的结构。其中,每一位校验码的生成公式均为C=D×G,C为校验码,D为输入的信息码,G为生成矩阵Gqc的前半部校验码生成矩阵部分。针对G的特殊结构,可以将公式分解为,如式(2)所示

其中,生成矩阵G中同一行的子矩阵Gi,0~Gi,c-1所对应的运算数据Di是相同的。这采用流水线方式读取循环矩阵及完成子矩阵运算,输入码为运算数据Di,移位寄存器存储的是子矩阵Gi,0~Gi,c-1的第一行信息,两者同步移位,实现结构如图1所示。

在此结构中,每个时钟周期完成一位输入数据与相对应行相乘的运算,然后将运算结果与对应寄存器中数据按位相异或并存入寄存器,实现并行处理输入数据与循环矩阵各列的乘运算及结果相加。由于生成矩阵Gqc结构具有规则性,循环矩阵Gi,j的同一行在编码时运算过程完全相同,因此可以级联采用c个单位循环矩阵运算结构并行实现LDPC编码,其中3种码率中的c最大值为35,LDPC编码实现[3]框图如图2所示。

LDPC编码结构图2中,运算模块是由c个单位运算结构[4]并行组成的,其编码过程如下:初始化各寄存器,一个计算周期可分为2个数据输入有效时钟周期,第一个时钟周期把第一个数据D0写入寄存器,同时把G0,0信息写入单位运算模块的寄存器;第二个时钟周期完成第一组数据的运算并存入校验比特寄存器,控制单元控制输入数据D0在移位寄存器中移一位,循环子矩阵G0,0自循环移1位,并在数据输入端口存入下一个输入数据D1,写入G0,1信息到第二个运算单元寄存器。以后采用与第二周期同样的方式运算操作,每一个Gi,cGi,c-1要晚一个时钟周期进行运算,第c个时钟周期后,所有并行的单个循环子矩阵Gi,0-c同时运算,当第128个输入数据输入时,G0,0以完成全部127次运算,然后将G1,i这一列子矩阵按照G的第一列结构运算,各列依次按此结构完成一组LDPC编码。当第一组编码完成,即第k×127+1个时钟周期到来时,把第一组编码存入的校验码寄存器的数据输出到码字合成器中,并将此单元清零。然后将此后连续生产的c个校验码存入码字合成器,组成第一组校验码,然后在码字合成器中与信息码组合并行127 bit输出。

LDPC总体实现结构及引脚信号定义如图3所示。

信号定义:data_in,串行输入数据,1 bit位宽;data_in_en,输入数据有效指示信号,高电平有效;clk,工作时钟,为各信号提供统一的时钟;rst,系统复位信号,低电平有效;sys_K,参数K;sys_C,参数C,根据KC的值取7 bit位宽;data_out,编码后的并行数据,127 bit位宽;data_out_en,数据有效指示信号,高电平有效;first_indiction,首个127位并行校验位输出指示信号,指示删除其高5位。运算模块实现结构如图4所示。

运算模块由模式选择块LDPC_mode、G矩阵存储器ram1-3、运算单元matrix_caclulate、输出缓存ram4组成,首先模式选择块LDPC_mode选择相应模式的G矩阵信息,然后通过matrix_caclulate完成编码运算,最后通过输出缓存完成对编码结果的并行输出。

3 LDPC编码的测试

通过Modelsim仿真LDPC编码的结果[5]如图5所示,在初始化时,通过控制单元确定sys_K和sys_C的值,据此选择LDPC编码模式,其中C的最大值为35,故编码模块采用35级流水运算结构以兼容3种不同编码模式,并且3种模式共用矩阵计算模块。由于数据和使能信号只缓冲到第sys_C个存储单元,所以在给定的模式下只有sys_C个运算单元参与运算,当输入sys_K×127+1 bit的数据后,矩阵运算单元依次输出sys_C个校验码,通过校验比特寄存器依次输出并行校验数据,再输出sys_K个信息数据,数据位宽均为127 bit,再通过码字合成器把信息数据和校验信息组合起来输出,即在first_indiction信号有效时需要删除该组校验码的高5位。LDPC_mode表示系统工作在第3种编码方式,即K值为48,当编码48×127=6 096个数据后输出数据先并行输出11组127位校验码,再输出48组127位数据,与输入数据计数器data_count相符,都为6 096。

LDPC编码仿真图5中的data_out就是编码所得的校验比特,通过比较它和在Matlab建模仿真运算中得到的校验码是否一致来判断LDPC编码其正确性。取不同变换信息序列进行编码仿真,实验比较两种方式得到的校验码基本相同,故编码是正确的。

仿真通过后,还需要将程序下载都开发板Stratix II EP2S60F1020C3 DSP Develoment Ezkit上进行板级调试,EZKIT通过JTAG接口把仿真数据传输到上位机,Matlab通过SignalTap接口读取经编码调制后的数据结果,并对其进行分析,与Matlab仿真的结果进行比较,发现其输出的校验码与Matlab得到的基本一致。通过对不同的码率的实验比较,最终验证编码器的FPGA实现是正确的,如图6~图8所示。

4 结束语

按照GB60600-2006《数字电视地面广播传输系统帧结构、信道编码和调制》的要求,设计的一种基于准循环LDPC编码的FPGA实现方案。设计利用循环移位生产矩阵,减少了对大量存储空间的要求,在运算模块采用流水线运算执行方案,节约了硬件资源,并达到了标准要求的指标。最后通过与Matlab建模仿真结果对比,验证了FPGA实现的正确性。

参考文献

[1]国家标准化管理委员会.GB20600-2006.数字电视地面广播传输系统帧结构、信道编码和调制[S].北京:中国标准出版社,2006.

[2]陈涛.数字电视地面广播传输系统发端FPGA设计与实现[D].电子科技大学,2008.

[3]梁小斌.基于FPGA的数字电视激励器设计[D].西安:西安电子科技,2011.

[4]张杨军.数字电视传输系统中LDPC码编码器的研究与FPGA实现[D]北京:北京交通大学,2008.

FPGA验证 第2篇

本文采用ARM处理器+FPGA的验证方案,开发板由ARM920T核为处理器的平台,包含存储器、常见的通信接口(如Uart、I2C、SPI)等硬件资源和FPGA平台组成,它与ARM之间通过标准总线互连。当所验证的IP改变时,只需将该IP的硬件代码综合后下载到FPGA中。这种方法兼顾成本可重用性,方便实用,更接近现实。通过总线桥的使用,该平台可同时适用基于各种总线的SoC系统。

1 验证平台硬件介绍

验证平台硬件包括对ARM平台和FPGA平台的分析。验证平台的整体框图如图1所示:

图1中间是ARM公司的ARM920T平台,下边是Xilinx公司的FPGA平台。通过在FPGA上下载待验证IP模块,是其与ARM内的对应模块进行通信,就能实现对芯片和系统的验证。

2 验证平台软件概述

文章前一部分介绍了验证平台的硬件部分,在这个硬件平台上运行的程序就是验证平台的软件部分。

软件部分的实现有两种方式,一种是编写汇编和C代码直接在平台上运行。此种方法适用于验证规格简单,没有并行处理的应用;另一种是先移植嵌入式操作系统到平台上,然后在操作系统的基础上编写验证代码。此种方法适用于复杂的验证项目,如多模块验证。移植操作系统还有一个优点就是隔离上层软件和底层硬件,包括底层驱动的操作系统负责上层软件和底层硬件的通信。这样程序员就不需要关心硬件,编程难度大大降低。本项目目前处于模块功能验证阶段,所以采用前一种方法,先用汇编编写启动代码,对ARM和外设以及存储器进行初始化,再创建C言语运行的环境,最后跳转到C代码。

3 验证平台搭建

为了对所开发的软件平台进行调试,我们使用JTAG仿真器,通过PC的并口与开发板的ARM JTAG口相连。在AXD环境下进行调试。处理器选择ARM920T,编译测试代码并下载后,处理器就可以通过读写存储器执行指令了。AXD还提供单步跟踪,设置断点,查看寄存器及存储器,搜索函数定位等功能帮助调试。待验证的硬件代码即IP模块下载过程如同软件调试,也是使用JTAG仿真器,通过PC的并口与开发板的FPGA JTAG口相连。图2为验证平台的连接图:

4 软硬件协同验证方法

验证平台通过ARM中通信接口与FPGA中的待验证IP建立通信,判断通信是否可靠、正确,来确定待验证IP的正确性。以此类推,应用与其它IP的验证,验证SoC芯片的各模块功能。验证系统的一般步骤如图3所示。

基于以上的FPGA验证架构,利用ADS集成开发环境开发测试软件,通过JTAG仿真器,将二进制代码下载到SDRAM中,控制ARM与FPGA的通信,整个软硬件协同验证平台架构与图2基本一致。在该平台上能完成SoC软硬件协同验证。

该平台已经应用于SoC芯片设计的验证,包括Uart、I2C、SPI等模块验证。现以SPI模块验证为例,根据协议定义,SPI有4根信号线,分别为SCLK(时钟线)、MOSI(主设备数据输出,从设备输入线)、MISO(主设备数据输入,从设备输出线)和SS(设备选择信号线),支持多种工作方式。具体验证方法如下:先将待验证的SPI硬件代码下载到FPGA中,再将测试软件下载到ARM的片外SDRAM中,启动程序。程序的运行步骤为先配置ARM中的SPI0为主发送模式,再配置FPGA中的SPI为从接收模式,然后程序向SPI0的发送数据寄存器写若干确定数据,最后程序从SPI的接收数据寄存器中读取数据,检查接收到的数据是否与发送的数据一致,若能正常接收数据,再转换工作模式。如配置ARM中的SPI0为从接收模式,配置FP-GA中的SPI为主发送模式,启动数据收发,经过各种情况下的验证,判断待验证的SPI模块的功能正确与否。SPI模块验证如图4所示:

5 结束语

随着芯片向SoC的方向发展,流片费用、项目进度的要求,对一次流片成功率的要求不断提高。但是SoC需要软硬件协同仿真,使得原有的仿真平台很难完成100%的覆盖。本文讨论的验证平台可以通过FPGA验证板,完成对不同IP、SoC芯片几乎达到接近现实的仿真,对于中小型IC企业而言,可以节约开发成本,缩短开发周期,提高流片成功率。

摘要:基于FPGA的验证平台能够缩短SoC芯片的开发时间, 提高验证工作的可靠性, 并具有可重用性。利用Xilinx公司的FPGA作为一个基于标准总线连接的IP模块验证平台, 并将待验证IP模块综合后下载于FPGA中, 通过软硬件协同验证的方法, 验证了待测IP模块的正确性。通过介绍SPI模块的验证方法, 给出了基于FPGA的SoC/IP验证的软件设计思路。

关键词:SoC,FPGA,SPI,验证a

参考文献

[1]田泽.嵌入式系统开发与应用[M].北京:北京航空航天大学出版社, 2005.

FPGA验证 第3篇

随着电路设计复杂度的不断增强,电路验证的重要性日益突出。然而,传统验证方法不能涵盖系统所有可能出现的问题。形式化验证方法可以对其功能进行详细验证, 越来越受到关注。

对于同时包含离散分量与连续分量的数字电路,要将验证的问题公式化,可以通过可达性分析解决。这种电路可以用常微分方程建模,将电路验证问题等价于计算常微分方程模型的可达状态集和检验电路在这些状态的属性。

OpenCoho是一个可以验证模拟或混合信号电路性质的形式化验证软件工 具[2](简称Coho)。其特点如 下:1使用常微分方程来近似电路系统;2可以应用于非线性的电路模型[2];3可以有效处理复杂度高的问题。Coho已经应用于Van der Pol振荡器、Yuan-Svensson触发器、 Rambus环形振荡器、异步电路等典型电路。

本文介绍Coho验证电路 性质的一 般流程 、探讨利用System Generator[4]来加速Coho的核心模块Mode的方法和技术[3]、描述Mode的硬件设 计[5],验证环形 振荡器电路的有效性 ,并对结果 进行对比 分析 ,最后得出 结论。

1 Coho

1.1形式化验证

形式化模型是使用数学形式化规则将特定系统形式化而成的抽象数学模型,形式化验证即对此模型的验证。 此方法可以应用于硬件系统、软件系统、网络协议、飞机系统等。一般来说,其涉及的数学模型包括有限状态机、标记变迁系统、佩特里网络等。

近年来,形式化验证成功应用于离散系统数字电路和通信协议领域。将形式化验证技术应用领域扩展到连续动力学系统尚具有一定挑战性。

混杂系统是同时包含离散行为与连续行为的动力学系统。在嵌入式系统、飞行控制器和同时带有数字信号及模拟信号的电路常用到混杂系统。越来越多的计算机成为关键安全系统的自动控制器,模拟电路对深亚微米集成电路的影响日益加大。

一般称混杂系统的形式化模型为混杂自动机。大部分非线性混杂系统的验证问题是不可判定的。对这类系统的验证要用到针对混杂系统的可达性分析。

1.2相关知识

“微分包含”经常被用 于研究混 杂系统。 微分包含 (ODI)是指具有如下形式的常微分方程(ODE):

其中,F(x,t)表示一个集合,而非实数空间中的一个点。电路系统一般可以分为模拟电路系统和数字电路系统。模拟电路系统对连续电信号进行处理,数字电路系统对离散电信号进行处理。

混杂电路系统指同时具有连续动态和离散事件动态行为,且二者之间相互作用的电路系统。由于混杂电路系统是非线性的,其模型用微分包含表示,所以对混杂电路系统进行可达性研究必须用到近似方法。

过近似常用于可达性分析,其在保持原空间性质不变的基础上,对原空间进行适当扩大,使其更适合验证和计算。

过近似的优点是能验证系统的不安全性,如果扩大后的空间不满足安全性,那么原空间一定也不满足。

1.3Coho及Coho可达性验证流程

Coho是一个对用非线性常微分方程建模的系统进行可达性分析的工具。为了便于计算,Coho用过近似的方法将每一段的非线性ODI模型近似成了线性ODI模型。 近似后的模型如下:

cube(u)是n个区间的笛卡尔积,表示近似后的误差。

Coho可达性验证流程如下:

(1)得到用户提供的系统模型(ODI),以及初始状态空间。

(2)用P表示一个初始状态空间。设多面体H是P的过近似凸包。H可以用线性规划来描述:Ax≤c。然后将H膨胀得到B:

(3)将当前时间段模型非线性ODI近似成线性ODI。 近似后的线性ODI:

(4)将当前时间段模型的一个解对应一个轨迹,这个轨迹是线性模型:

设xe是当前时间tcurr状态x0在下一个时间点tnext=tcurr+Δt的状态。那么,在区间[tcurr,tnext]对方程(1)积分, 得到:

继而得到新的约束F:

F是tnext的多面体,将F有限膨胀,判断其与B是否有交集。

(5)如果F与B没有交集,跳出程序,系统模型 不可达;若有交集,继续下一个时间段,直到模型时间结束或遇到不可达情况。

2电路中的系统级建模

2.1使用SystemGenerator进行硬件设计

System Generator是一个借助FPGA硬件设计来 进行系统级建模 的工具。它扩展了Simulink的许多功 能, 使得到的模型更适合硬件设计。在传统软件设计方法中, 一般采用Matlab、Java、C语言等来描述各个功能模块,进而实现系统建模。如果在寄存器传输级中将Matlab等语言描述经人工转换为HDL语言,要求设计人员要同时掌握这两类语言,而且这个转换过程会花费大量的时间和精力,还可能会产生一些错误,从而降低了开发效率。

2.2设计流程

图1描述了System Generator设计过程。 首先,在Matlab算法中完成系统建模后,通过调用System Generator将simulink模型转换成硬件可执行模型;然后,在Xilinx综合工具ISE中进行布局布线;最后,生成bit流文件并下载到FPGA中,从而完成算法设计到硬件的实现。

3Coho加速设计

3.1Coho的系统结构

Coho有两个主要组件:一个使用Matlab编写,另一个使用Java编写。图2为Coho的系统结构图。

Matlab组件提供了用户 操作界面,由于需要 验证的系统模型被写成了Matlab的数据格式,用户通过输入一系列Matlab函数来操作Coho。这些函数包括建立模型、 定义多面体和计算可达区域。系统模型构建与可达空间模型构造也是在Matlab中完成。Java组件的主要功能是计算投影多边形和线性规划求解。Java组件和Matlab组件通过一个C程序作为管道进行通信。

3.2Mode模块

Matlab组件中的Mode模块至关重要,在Coho中被频繁调用。Coho在Mode模块消耗的时间占整个软件运行时间的40% ~45%。Mode模块的功能是实现 可达性计算,根据每两个相邻离散时间段的多面体是否相交,推断其是否可达,进而生成轨迹。计算多面体是否相交[8], 即判断一个多面体的顶点中是否至少有一个在另一个多面体内,其运行速 度很大程 度上影响 整个软件 的性能。 Mode模块因为涉及大量的矩阵运算,所以速度并不理想。

3.3硬件加速Mode模块

图3是将Mode模块硬件化的总体设计图。Coho的Matlab组件计算多面体的顶点后将其输入到FPGA中, FPGA判断顶点是 否在另一 个多面体 内,将结果返 回Matlab组件。Mode模块的功 能用System Generator辅助设计实现。设计如图4所示,F1、F2、F3是输入的激励, MCode是判断点是否在多面体内的核心算法 单元,其应用的Matlab函数包括多面体每个面的方程。当有输入进入Mcode时,Matlab函数根据输入的不同对其进行相应处理,最后得出结果。

4实验与性能分析

4.1实验环境

本文在测试平台上实现了Coho算法加速器。测试平台由一台主机和一块FPGA算法加速器构成,通过PCIE×8接口相连。主机配置为Intel四核I5处理器,4.0GB内存。硬件加速器是Xilinx公司生产的VC707原型。

环形振荡器具有不稳定性,电压在跳变过程中可能会达不到要求值,所以验证环形振荡器的有效性尤为重要。 选取一个环形振荡器作为实验对象,该振荡器由3个反相器组成,取各反相器的输出电压为侦测变量,检测其有效性。输出结果是一维向量,如果向量中的元素是同号的, 表示代表电路模型的多面体相交。当系统模型验证结束时,如果没有多面体不相交,则系统模型可达,即环形振荡器有效,否则无效。

4.2FPGA综合结果

测试Coho的Mode模块在FPGA上的运行情况,结果显示硬件加速器的计算结果与软件计算结果完全一致。

从表1可以看出,相对于Coho常规执行时Mode模块占用的时间,Mode模块硬件化可获得超过10倍的加速效果;并且规模越大,节省时间越多。Coho的整体运行时间将节约35%~40%。

5结语

Coho是形式化验证领域的一个重要软件平台,目前基于通用处理器平台的Coho计算量大。针对此问题,本文在FPGA的基础上,对Coho的可达性 分析算法 加速, 通过将Coho的核心模块硬件化,使计算速度提高了约10倍,并正确验证了一个环形振荡器的有效性。结果表明, 基于FPGA的硬件加速有效提高了Coho的性能,对形式化方法在混杂系统中的应用具有重要意义。

摘要:OpenCoho是一个通过可达性分析及计算对集成电路设计进行形式化验证的软件工具。它可以验证由非线性常微分方程建模的电路系统的正确性。提出基于FPGA的验证算法硬件加速方法,探讨环形振荡器电路有效性验证,通过仿真说明该方法的可行性和意义。实验结果表明,利用该方法平均验证速度提高了约10倍。

FPGA验证 第4篇

目前, 国内ETC通信芯片主要由国外跨国公司的产品所垄断, 为打破外国技术的垄断、开发自主知识产权的ETC通信芯片势在必行。而在现在集成电路设计中, 设计验证变得非常的关键, 特别是随着集成电路复杂度的提高, 验证工作的复杂度和工作量呈指数上升。能否及时发现设计中存在的错误, 对保证设计的正确性和缩短芯片上市时间至关重要。这就对芯片的验证平台提出了投入小、开发周期短、可复用的要求。

传统的基于软件原型的验证方法, 不能长时间实时监测, 且调试软件很不方便。本文针对这些问题, 提出了一种低成本的可复用ETC通信芯片软硬件协同验证平台。该平台基于FPGA、以STR715MCU为硬件基础, 能实时地对ETC通信芯片进行验证。具有资源丰富、I/O口多、可扩展性好等特点, 目前利用该平台已成功开发了ETC系列通信芯片LX5811A/LX5811B。

1 ETC通信芯片系统结构及帧格式

1.1 ETC通信芯片的系统结构

整个ETC系统主要由RSU (Road Side Unit, 路边单元) 和OBU (On Board Unit, 车载单元) 组成, 其中RSU和OBU之间通过无线信道进行双向通信。根据国家标准化委员会规定, ETC通信系统的数据按HDLC (High Level Datalink Control, 高级数据链路控制) 帧格式传输, 数据遵循FM0编码方式, RSU和OBU的通信信号为5.8GHz的高频信号。因此, ETC通信芯片要包括射频和基带两个组成部分, 同时满足全双工性, 其总体结构如图1所示。

在发送过程中, 首先数据经过SPI写入发送RAM中, 再使能HDLC模块进行编码, 送到射频电路部分将数字信号进行数模转换、调制等操作后发送出去;在接收过程中, 高频信号先经过射频部分的接收、解调、模数转换等操作, 送到基带电路部分, 基带电路再进行解码、校验后存入接收RAM中。

1.2 ETC通信系统的数据帧格式

ETC通信系统所使用的HDLC数据帧格式是一种面向比特的数据链路控制协议的代表, 相对于面向字符的协议, 有更大的灵活性。因此, ETC通信系统比较适合大批量数据的传输。其数据的基本传输单元是帧, 它的结构如图2所示。

在该帧格式中, 用16bits的“0”作为前导序列, 8bits“1”或“0”作为后导序列;紧接着用二进制码“01111110”作为开始和结束标志;然后是最多可达128bytes的数据段, 发送的数据个数可以进行配置;最后是FCS (Frame Check Sequence, 帧校验序列) 字段。对于FCS, 采用的CRC (Cyclical Redundancy Check, 循环冗余校验) 编码方式是基于CCITT标准[1]:G (x) =X16+X12+X5+1。所验证的ETC通信芯片基带部分HDLC数据帧产生框架如图3所示[2,3]。

2 验证平台设计方案

2.1 验证平台的硬件设计

ETC通信芯片的验证平台由FPGA验证主板和含有STR715 MCU的扩展子板组成, 其结构示意图如图4所示。其主要设计思想:简化设计内容大量的FPGA验证主板, 实现可重复使用;其它功能由连接标准接口的不同子板完成, 可实现平台的可重构设计。由于ETC通信系统包含RSU和OBU两部分, 使用两块ETC射频处理芯片LX5811A实现两者的射频电路部分, 基带电路部分则利用HDLC的全双工性, 让两者共用一个基带电路, 提高验证效率。

FPGA芯片采用Altera公司Cyclone II系列的EP2C70F672C8, 它能提供丰富的内存资源和容量。板上包含FPGA配置芯片, 支持JTAG/Blaster下载编程接口, 以满足在PC端使用QuartusⅡ软件对待验证的基带电路部分及其管脚映射代码进行编译, 并将编译后的代码烧写到FPGA芯片中[4]。待验证的射频电路部分LX5811A芯片通过外围测试管脚完成与内部基带电路的连接关系, 这样比较方便差错检查。

扩展子板通过片上插座和FPGA主板进行连接, 板上所使用的STR715 MCU是意法半导体公司开发的一款高性能微处理器, 内部集成了ARM7TDMI内核, 以及在所设计验证平台作为性能对比的HDLC标准模块, 和大量常用外设接口。通过Multi-ICE仿真器及ADS1.2软件平台完成对该MCU的控制[5], 为整个系统的验证提供便利, 用以达到软硬件协同验证的目的。

2.2 验证平台的软件设计

在PC端, 使用STR715 MCU的SPI作为Master完成对基带和射频控制寄存器配置, 及收发数据的读写操作。在本次验证中, 所传输的数据为X9+X4+1格式的伪随机序列[4], 这样可以保证验证更符合实际情况, 所得到的验证结果也更加可靠。最后完成对接收数据和发送数据的比对, 包括CRC校验位的比较, 和差错现象的统计、分析及误码率的计算, 并将计算结果直观地显示出来, 这样就可以看到ETC通信芯片基带电路配合射频电路的整体性能。验证平台的软件控制流程如图5所示。

3 软硬件验证平台的实际应用

基于文中提出的ETC通信芯片验证平台验证的射频电路部分是一款自主研发的ETC通信射频处理芯片LX5811A, 该芯片是一种完全满足国家ETC通信标准GB/T 20851-2007的射频芯片[6,7], 其整体版图如图6所示。基带电路部分烧写到FP-GA中, 共同实现了完整ETC通信芯片的功能验证。

采用Altera Quartus II软件对ETC通信芯片的基带部分代码进行编译、综合、生成.sof格式下载文件, 在整个调试过程中, 可以将SPI各管脚以及HDLC模块的输入输出管脚配置到FPGA主板的测试管脚上, 这样可以方便通过示波器、频谱仪等仪器完成差错的查找和观察输出波形的各参数。如图7所示, 分别为该平台验证过程中示波器的检测波形和ADS软件显示的发送及经过两级射频芯片传递后, 接收到的解码后数据。

根据国家电子收费专用短程通信物理层A类标准, ETC系统中位速率要工作在512kbps或者256kbps, 所传输数据按FM0编码如图7 (a) 所示, 该次验证位速率为256kbps。可通过控制系统软件, 来使传输数据工作在512kbps的位速率上, 以及设置每帧所发送的数据和数据的个数。该帧所发送的数据仅为1字节, 示波器的信源CH1显示的是从FPGA的HDLC模块发送端出来的数据波形, 信源CH2显示的是经过两级射频前端芯片传输后送回到FPGA中HDLC模块的接收端。图7 (b) 显示的是第一帧伪随机序列的传输结果, 接收RAM的最后一个字, 存放的是HDLC数据帧产生的两字节CRC校验以及该帧的帧尾和后导码。

通过文中提出的软硬件验证平台可以实时地反映不同场景下ETC通信芯片的收发性能, 且在短时间内完成百万帧的收发比较及差错计算, 而RTL级的代码仿真往往需要更长的时间完成数据的处理, 很难反映不同场景下的潜在问题。图8显示了FP-GA中的基带电路代码的综合结果和实际验证过程中, 自主研发的基带电路和作为对比的STR715中标准HDLC模块在不同衰减下性能的对比结果。

从图8 (a) 可以看到, 所研发的ETC通信芯片基带电路部分面积较小, 所占用的管脚也较少。图8 (b) 显示了, 通过控制射频电路的衰减大小, 改变传输信号的质量, 来验证基带部分电路的解码性能。可以观察到, 在-71d B到-31d B之间, 每百万帧的传输中, FPGA中HDLC和作为对比的STR715中标准HDLC都不会出现解码错误, 性能满足国家ETC通信标准GB/T 20851-2007的规定。目前已将射频部分和基带部分集成一起, 开发出一款完整的ETC通信芯片LX5811B。另外, 在使用该平台验证其他型号的ETC通信芯片时, 只需修改平台信号线的连接关系, 或者选择不同功能的扩展子板, 具有较强的灵活性。

4 结束语

为降低ETC通信芯片的开发成本和周期, 文中提出一种基于FPGA的可复用的ETC通信芯片验证平台, 详细介绍了该验证平台主子板分离设计的思想和结构组成, 并以自主开发的LX5811A芯片的验证过程为例, 说明了该平台具有较强的通用性、可扩展性, 成功开发了同时包含基带和射频电路的ETC通信芯片LX5811B。对于中小型IC企业而言, 可以节约开发成本, 缩短开发周期, 提高流片的成功率。

参考文献

[1]Nair R, Ryan G, Farzaneh F.A Symbol Based Algorithm for Hardware Implementation of CyclicRedundancy Check (CRC) [C].1997:82-87.

[2]Lu Y L, Wang Z G, Qiao L F.Design and Implementation of Multichannel High Speed HDLC Processor[M].China:UESTC Press, 2002:1471-1475.

[3]应从三, 张行.基于FPGA的HDLC协议控制器[J].四川大学学报:工程科学版, 2008 (3) :116-120.

[4]EDA先锋工作室.ALTERA FPGA/CPLD设计[M].北京:人民邮电出版社, 2005:15-56.

[5]赵星寒, 周春来, 刘涛.ARM开发工具ADS原理与应用[M].北京:北京航空航天大学出版社, 2006:16-68.

[6]GB/T20851.1-2007.电子收费专用短程通信第1部分:物理层[Z].中华人民共和国国家质量监督检验检疫总局, 中国国家标准化管理委员会, 2007.

FPGA验证 第5篇

关键词:信号处理,定点工具箱,FPGA,验证平台

在当代雷达和通信系统中,随着设计复杂度的逐步提高以及对数据处理的实时性要求较高的情况下,在FPGA实现时对器件的要求也越来越高,随之而来是成本的提高。因此,在确定一个算法或一个设计在理论可行的前提下,能否控制成本,是顺利在FPGA上实现的重要问题。因此,在FPGA实现前对设计进行定点仿真有两点好处:(1)可以确定方案的可行性和器件的选型。(2)节约大量的调试时间。

1 定点仿真

在使用Matlab对算法进行仿真时,数据是以浮点形式参与运算,这样所得运算结果既能完全保证数据的精度,又能反映真实的理论结果。但在实际的工程实现时,数据是以固定长度的二进制形式参与运算。因此,为了能够准确地反映硬件实现时算法的性能,需要对数据的类型重新定义,使得所表示的数据能够更加符合硬件平台的处理方式,同时完全按照硬件中数据流的流向进行仿真。

定点仿真是对算法中的每一个数据进行量化,并用规定字长的二进制序列表示这个数,使其更接近实际值。对浮点数据做定点转换的方法有两种:(1)是使用C语言实现浮点到定点的转换。(2)是使用Matlab中提供的Simulink或Fixed-Point Toolbox[1]实现浮点到定点的转换。Simulink建模不需要编写代码,仅需调用库中的模块,根据数据的流向对算法进行建模,并配置相应的参数即可完成定点仿真;Fixed-Point Toolbox通过调用定点化函数,对数据重新定义完成定点仿真。

2 Matlab定点工具箱简介

在Matlab里,定点工具箱(Fixed-Point Toolbox)是提供定点数据类型和定点算法。在这个工具箱里,可以借助Matlab语法设计定点算法,并且可以和C代码的执行速度相比拟。同时也可以在Simulink里重新用这些算法传输定点数据,方便数据的仿真、实现、分析,并且能够为定点软件或者硬件验证提供测试序列。在Fixed-Point Toolbox中进行定点仿真的过程,即让数据在fi对象下进行工作的过程。

2.1 fi对象

用fi函数对数据进行定点处理的过程,实际上就是规定了该数的数据类型,即构造fi对象的过程,同时还可以对该对象进行运算,但这个对象包含有多个属性。

Data:指明fi对象在不同数制形式下的具体值,如:bin(2进制),data(实数值),dec(10进制),double(双精度),hex(16进制)等。

Fimath:规定fi对象如何执行定点运算(截位方式、溢出方式、最大乘积长度等)。当定义fi对象的fimath属性时,首先要定义一个fimath对象,然后再用fimath对象定义fi对象的fimath属性。

2.2 fimath对象

在fi对象中已介绍过其对象,现在仅对其相关主要属性如下:

CastBeforeSum:两个操作数在进行加法之前,是否被映射成和的数据类型。意思是当属性设置为“0”时,两个操作数先进行加法运算,然后对和进行截位;当属性设置为“1”时,则这两个操作数先进行截位,然后再执行加法运算。

RoundMode:指明数据的截位方式,通常在硬件实现时采取的方法是直接进行截断,一般用floor。

OverflowMode:选取溢出的方式。如果存在溢出,则溢出的处理方式通常有两种:(1)saturate方式。若数据上溢出,则用能表示该范围的最大数来代替该数据;若是下溢出,则用能表示该范围的最小数来代替该数据。(2)wrap方式。若无符号数溢出,则进位被舍弃;若有符号数溢出,则进位将取代符号位,数据将以二进制补码的形式表示。

2.3 fipref对象

在fi对象中已介绍过其对象,其相关属性为:LoggingMode:为fi对象记录所执行的操作。通常为加,减,乘等操作记录上溢或下溢,并以警告的形式显示出来。若属性设置为“on”,表示启动记录模式,若设置为“off”,则不记录,即不显示,这对于观察结果非常有益。NumericTypeDisplay:显示fi对象的数据类型属性。

2.4 numerictype对象

在fi对象中已介绍过其对象,其相关属性如下:FractionLength:规定所存储整数值的小数位的长度,用二进制序列表示。Signed:确定是有符号数据还是无符号数据,默认为有符号数据。WordLength:规定所存储整数值的字长,用二进制序列来表示。

3 设计实例

为说明定点仿真在FPGA验证中的应用,以数字预失真多项式复数算法为例,使用Xilinx的ISE开发环境以及ISE自带的ISim[2]进行功能仿真。同时,采用Matlab的Fixed-Point Toolbox进行定点仿真[3,4]。图1为输出结果的动态范围,可以看出均在要求的范围之内。

图2为FPGA中ISim仿真结果,图3为Matlab定点仿真结果,对比图2与图3可知,FPGA输出结果与Matlab定点仿真结果一致。为证明此结果的一般性,采样2 000个数据,分别画出了FPGA输出和Matlab输出的波形,如图4~图7所示,其波形基本一致。为进一步证明其完全一致,其误差图如图8和图9所示[5,6]。由此可以证明,FPGA中的运算结果正确,这个结果对于FPGA板级调试是重要的。

4 结束语

运用Matlab的Fixed-Point Toolbox对浮点算法定点化并完全按照FPGA处理数据的方式,不仅是算法在FPGA上能否实现的前提,而且还可以验证FPGA运算结果的正确性。并且随着算法复杂度的不断提高,定点仿真在FPGA尤其是高速FPGA中的应用将发挥更大的作用。

参考文献

[1]Math Works Conpration.Matlab Fixed-point toolbox user'sguide[M].USA:MathWorks Conpration,2009.

[2]ISim Company.ISim user guide,UG660(v 12.3)[M].Ul-tra:ISim Company,2010.

[3]孙重磊.基于FPGA的24点离散傅里叶变换结构设计[J].电子科技,2012,25(9):132-135.

[4]陈大科,韩九强.基于Matlab的定点DSP小波变换程序设计方法[J].数据采集与处理,2006(S1):164-170.

[5]崔冕,王宇.Xilinx ISE结合Matlab对数字系统进行联合设计与仿真方法[J].空间电子技术,2007(3):34-37.

FPGA验证 第6篇

针对以上问题,本文基于Altera公司的Cyclone II EP2C35系列FPGA完成了并行化BCH(8184,7976,16)码编译器设计,并利用So PC Builder搭建了验证平台,在Nios II处理器的控制下能高效地完成BCH编译码算法的验证,具有测试环境可配置、测试向量覆盖率高、测试流程智能化的特点。

1 BCH编译码FPGA设计

结合实际使用NAND Flash的情况,16 bit纠错是NAND Flash使用的趋势。本设计采用并行化结构实现16 bit BCH码算法。

1.1 并行BCH编码器的设计

BCH编码器通过除法电路得到余数作为系统码的校验位,实现公式为:

其中,m(x)为原码,C(x)为编码得到的系统码,g(x)为生成多项式。

对于BCH(8184,7976,16)码,有:

由式(4)可知编码的核心计算单元Ri-1(x)x8mod g(x)可由8个Ri-1(x)x mod g(x)级联而成,单个Ri-1(x)x mod g(x)电路是一个纯组合逻辑的线性移位电路,有:

则余式求解如下:

式(7)可采用线性反馈移位寄存器(LFSR)电路来实现[6]。电路如图1所示。

1.2 并行BCH译码器的设计

BCH译码由伴随式计算、求解错误位置多项式、Chien搜索3个步骤组成。由接收到的系统码R(x)计算伴随式S(x);根据伴随式S(x)求解关键方程,求出错误位置多项式σ(x);采用Chien搜索算法求解错误位置;再根据错误位置将相应位置上的数据取反,即可得到正确的原码。以上流程通过伴随式计算电路、错误位置多项式求解电路及Chien搜索电路来实现。

1.2.1 伴随式求解

伴随式的计算分两步完成:首先将接收到的系统码R(x)对最小多项式求余,获得余数项为rk(x);再将相应的共轭类元素αi逐一代入余式求解出伴随式Si=rk(αi)。伴随式计算电路求解出余式后,由常数乘法器计算得到伴随式的最终结果。

1.2.2 关键方程求解

令错误位置多项式为:σ(x)=1+σ1x+σ2x2+σ3x3+…+σtxt,伴随式多项式:S(x)=1+S1x+S2x2+S3x3+…+S2tx2t,则关键方程为覣(x)=S(x)σ(x),借助牛顿等式即可求解出错误位置多项式的各项系数。电路结构如图2所示。

1.2.3 钱搜索

得到错误位置多项式σ(x)之后,找出出错比特所在的位置。计算σ(αn-i)=1+σ1αn-i+σ2α2(n-i)+σ3α3(n-i)+…+σtαt(n-i)。如果σ(αn-i)=0,则该比特位出错,否则正确。图3为钱搜索模块电路,主要由乘法、加法和求反组成。其中对钱搜索部分影响最大的是乘法器的选择,本设计采用通用乘法器。

2 基于So PC技术的验证系统

搭建了基于So PC技术的嵌入式验证平台,NiosⅡProcessor通过AVALON总线以AVALON—SLERVER协议与RAM_CONTROLLER以及BCH_IP外设进行通信,控制编译码模块工作,如图4所示。其中data_cnt为传输码元数,eob信号为传输码元结束信号,sob为开始传输原码信号,data信号为传输原码数据。

在此基础上,利用NIOS向RAM中写入多种类别错误进行纠错。大量数据的测试证明了BCH编译码设计的正确性。部分测试结果如表1所示。

使用硬件描述语言,基于Altera公司的Quartus8.0开发工具完成了应用于NAND Flash的并行化BCH编译码器的设计。采用并行结构缩短了编解码周期,最大时钟频率可达101.84 MHz。搭建了基于So PC技术的嵌入式验证平台,在Nios II处理器的控制下高效地完成了BCH编译码算法的验证。验证结果表明该算法具有测试环境可配置、测试向量覆盖率高及测试流程智能化的特点。

摘要:针对NAND Flash应用,完成了并行化BCH编译码器硬件设计。采用寄存器传输级硬件描述语言,利用LFSR电路、计算伴随式、求解关键方程、Chien搜索算法等技术方法完成了BCH编译码算法在FPGA上的硬件实现。相比于传统串行实现方案,采用并行化实现提高了编译码器的速度。搭建了基于SoPC技术的嵌入式验证平台,在Nios处理器的控制下能快速高效地完成对BCH编译码算法的验证,具有测试环境可配置、测试向量覆盖率高、测试流程智能化的特点。

关键词:并行化,BCH,FPGA,优化,SoPC

参考文献

[1]孙怡,田上力,林建英.BCH码译码器的FPGA实现[J].电路与系统学报,2000(12):98-100.

[2]江建国.BCH编译码器的设计及验证[D].上海:上海交通大学.2010.

[3]张彦,李署坚,崔金.一种BCH码编译码器的设计与实现[J].通信技术,2010,43(12):24-26.

[4]刘冀,孙玲.可变码率BCH码编译码的FPGA实现[J].信号与信息处理,2010,40(7):11-13.

[5]许锦.NAND Flash快速BCH编解码算法及硬件实现[D].上海:上海复旦大学,2008.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【FPGA验证】相关文章:

验证项目05-06

验证反思05-08

流程验证05-10

验证结果05-13

计划验证06-02

网络验证06-12

表单验证06-29

制剂验证07-05

验证效果07-07

验证管理07-09

上一篇:护理干预产科护理下一篇:高师院校学生