基于FPGA的m序列发生器_第1页
基于FPGA的m序列发生器_第2页
基于FPGA的m序列发生器_第3页
基于FPGA的m序列发生器_第4页
基于FPGA的m序列发生器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于FPGA的序列发生器基于FPGA的序列发生器摘要序列广泛应用于密码学、通信、雷达、导航等多个领域,本文提出了一种基于FPGA的伪随机序列产生方法,应用移位寄存器理论从序列的本原多项式出发,获得产生该序列的移位寄存器反馈逻辑式,结合FPGA芯片结构特点,在序列算法实现中采用元件例化语句。算法运用VHDL语言编程,以A1tera的Quartus软件为开发平台,给出了序列的仿真波形。序列的统计特性分析表明:该方法产生的序列符合序列的伪随机特性,验证了算法的正确性。关键词:序列;移位寄存器理论;VHDL语言1 m序列m序列是伪随机序列的一种 ,结构简单 ,实现方便。在现代工程实践中 , m 序列在

2、通讯、导航、雷达、通信系统性能的测量等领域中有着广泛的应用。例如 , 在连续波雷达中可用作测距信号 , 在遥控系统中可用作遥控信号 , 在多址通信中可用作地址信号 , 在数字通信中可用作群同步信号 ,还可用作噪声源及在保密通信中起加密作用等。伪噪声发生器在测距、通信等领域的应用日益受到人们重视。目前,m序列产生实现方法主要有3种:(1)门电路实现该方法设计简单,但随移位寄存器级数的增长,电路装调困难,且占用的印制板面积较大。(2)DSP编程实现该方法专业性过强,不适合一般用户。(3)VHDL与CPLD实现由于CPLD的高集成度,而且VHDL语言编程较为方便,故可以大大减少电路的装调的困难。文章

3、提出VHDL语言实现,l序列电路是周期、初相位可编程变化的,其应用较为灵活,通过微处理器对其进行适当的初始化,即可产生用户所需周期、初相位的m序列输出。用软件方式构成的特点是采用灵活的数据查询方式可以获得任意级数 n 的本原多项式系数 ,从而实现 m 序列的产生 , 但速度受到单片机工作速度的限制。而 FPGA 具有硬件电路实现的优点 , 又具有设计上的灵活性 , 并且由于 FPGA 便于实现大规模的数字系统 。1.1 理论基础 m 序列是最长线性反馈移位寄存器序列的简称,它是由带线性反馈的移位寄存器产生的周期最长的一种序列。m 序列发生器的结构主要分为两类,一类称为简单型码序列发生器,另一类

4、称为模块型码序列发生器。原理图如图 1 所示。 图1-1 m列原理图扰码的目的是使短周期输入序列变为长周期的信道序列。从原则上看,就可以用将一个长周期序列叠加在输入序列上的方法来实现,并且叠加序列的周期越长越好。从理论上说,一个真正的随机(二进制)序列的“周期”是无限长的,但是,采用这种序列时在接收端将无法产生相同的序列与之同步。所以,人们就不得不企图用简单电路来产生尽量长的序列。同时随机噪声在通信技术中,首先是作为有损通信质量的因素受到人们重视的。信道中存在的随机噪声会使模拟信号产生失真,或使数字信号解调后出现误码;同时,它还是限制信道容量的一个重要因素。因此,最早人们是企图设计消除或减小通

5、信系统的随机噪声,但是,有时人们也希望获得随机噪声。例如,在实验室中对通信设备或系统进行测试时,有时要故意加入一定的随机噪声,这时则需要产生它。20世纪40年代末,随着通信理论的发展,仙农(Shannon)就曾指出,在某种情况下,为了实现最有效的通信,应采用具有白噪声的统计特性的信号。另外,为了实现高可靠的保密通信,也希望利用随机噪声。然而,利用随机噪声的最大困难是它难以产生和处理。直到60年代,伪随机噪声的出现才使上述困难得到解决。伪随机噪声具有类是与随机噪声的一些统计特性,同时又便于重复产生和处理。由于它具有随机噪声的优点,又避免了它的缺点,因此获得了日益广泛的实际应用。目前广泛应用的伪随

6、机噪声都是由数字电路产生的周期序列(即滤波等处理后)得到的。今后我们将这种周期序列称为伪随机序列。通常产生伪随机序列的电路为一反馈移存器。他又可分为线性反馈移存器和非线性反馈遗存器两类。由线性反馈遗存器产生出的周期最长的二进制数字序列,称为最大长度线性反馈遗存器序列,通常简称为m序列。由于它的理论比较成熟,实现比较简便,实际应用也比较广泛7。m序列是最长线性反馈移存器序列的简称,它是由带线性反馈的移存器产生的周期最长的一种序列 。图2-2中示出了n级移位寄存器,其中有若干级经模2加法器反馈到第1级。不难看出,在任何一个时刻去观察移位寄存器的状态,必然是个状态之一,其中每一状态代表一个n位的二进

7、制数字;但是,必须把全0排斥在外,因为如果一个进入全0,不论反馈线多少或在哪些级,这种状态就不会再改变。所以,寄存器的状态可以是非全0的状态之一。这个电路的输出序列是从寄存器移出的,尽管移位寄存器的状态每一移位节拍改变一次,但无疑地是循环的。如果反馈线所分布的级次是恰当的,那么,移位寄存器的状态必然各态历经后才会循环。这里所谓“各态历经”就是所有个状态都经过了。由此可见,应用n级移位寄存器所产生的序列的周期最长是。同时由于这种序列虽然是周期的,但当n足够大时周期可以很长,在一个周期内0和1的排列有很多不同方式,对每一位来说是0还是1,看来好像是随机的,所以又称为伪随机码;又因为它的某一些性质和

8、随机噪声很相似,所以又称为伪噪声码(PN码)。1.1.1 线性反馈移位寄存器图1-2 线性移位寄存器由于带有反馈,因此在移位脉冲作用下,移位寄存器各级的状态将不断变化,通常移位寄存器的最后一级做输出,输出序列为 输出序列是一个周期序列。其特性由移位寄存器的级数、初始状态、反馈逻辑以及时钟速率(决定着输出码元的宽度)所决定。当移位寄存器的级数及时钟一定时,输出序列就由移位寄存器的初始状态及反馈逻辑完全确定。当初始状态为全零状态时,移位寄存器输出全 0 序列。为了避免这种情况,需设置全 0 排除电路。 (1)线性反馈移位寄存器的递推关系式 递推关系式又称为反馈逻辑函数或递推方程。设图10-1 所示

9、的线性反馈移位寄存器的初始状态为(a0 a1 an-2 an-1), 经一次移位线性反馈,移位寄存器左端第一级的输入为 若经k次移位,则第一级的输入为 其中,l=n+k-1n, k=1,2,3, (2)线性反馈移位寄存器的特征多项式 用多项式f(x)来描述线性反馈移位寄存器的反馈连接状态:若一个n次多项式f(x)满足下列条件 = 1 * GB3 f(x)为既约多项式(即不能分解因式的多项式); = 2 * GB3 f(x)可整除(xp+1), p=2n-1; = 3 * GB3 f(x)除不尽(xq+1), qp。则称f(x)为本原多项式。 2 m序列的性质2.1 均衡性 在一个周期中,m 序

10、列中“1”的个数比“0”的个数多一个。N级移位寄存器有2n状态,这些状态对应二进制有一半为偶数(即末位数为0),另一半为奇数(即末尾数为1)。m序列一个周期经历2n-1个状态,少一个全0状态(属于偶数状态),因此在一个周期中“1”的个数比“0”的个数多一个。例如,级数n=3,码序列周期P=23-1=7时,起始状态为“111”,Ci=(13)8=(1011)2,即C0=1、C1=0、C2=1、C3=1。产生的m序列为1110010,其中码元为“1”的有4个,码元为“0”的有3个,即在一个周期中“1”的个数比“0”多一个。2.2游程特性长度为k的游程数占游程总数的1/2k。一个周期中长度为1的游程

11、数占游程总数的1/2;长度为2的游程数占游程总数的1/4;其中1=k=n-1。2.3 移位相加特性一个m序列与其循环移位逐次比较,相同码的位数与不同码的位数相差1位。例如原序列Xi=1110010,那么右移2位的序列Xi-2=0011101.2.4 自相关特性m序列具有非常重要的自相关特性。在m序列中,常常用+1代表 0,用-1代表 1。 此时定义:设长为 p的m序列, 记作 经过j次移位后,m序列为 其中ai+p=ai(以 p 为周期),以上两序列的对应项相乘然后相加, 利用所得的总和 来衡量一个m序列与它的j次移位序列之间的相关程度,并把它叫做m序列(a1,a2,a3,ap)的自相关函数。

12、记作 经过j次移位后,m序列为 其中ai+p=ai(以 p 为周期),以上两序列的对应项相乘然后相加, 利用所得的总和 来衡量一个m序列与它的j次移位序列之间的相关程度,并把它叫做m序列(a1,a2,a3,ap)的自相关函数。记作 当采用二进制数字 0 和 1 代表码元的可能取值时 由移位相加特性可知,仍是m序列中的元素, 所以式(10-7)分子就等于m序列中一个周期中 0 的数目与 1 的数目之差。 另外由m序列的均衡性可知, 在一个周期中 0 比 1 的个数少一个, 故得A-D=-1(j为非零整数时)或p(j为零时)。 因此得m序列的自相关函数只有两种取值(1和-1/p)。R(j)是一个周

13、期函数,即 式中,k=1,2, p=(2n-1)为周期。 而且R(j)是偶函数, 即 图2-1 m序列自相关函数2.5 伪噪声特性如果我们对一个正态分布白噪声取样, 若取样值为正, 记为+1,取样值为负,记为-1,将每次取样所得极性排成序列, 可以写成+1,-1,+1,+1,+1,-1,-1,+1,-1, 这是一个随机序列,它具有如下基本性质:(1) 序列中+1 和-1 出现的概率相等;2) 序列中长度为 1 的游程约占 1/2, 长度为 2 的游程约占 1/4,长度为 3 的游程约占 1/8, 一般地, 长度为k的游程约占1/2k,而且+1, -1 游程的数目各占一半;(3) 由于白噪声的功

14、率谱为常数,因此其自相关函数为一冲击函数()。 3 m序列的应用3.1 扩展频谱通信扩展频谱通信(Spread Spectrum Communication)是将待传送的信息数据被伪随机编码(扩频序列:Spread Sequence)调制,实现频谱扩展后再传输,接收端则采用同样的编码进行解调及相关处理,恢复原始信息数据。显然,这种通信方式与一般常见的窄带通信方式相反,是在扩展频谱后,宽带通信,再相关处理恢复成窄带后解调数据。扩展频谱通信方式有许多优点,如抗干扰、抗噪音、抗多径衰落、低功率谱密度下工作、有保密性、可多址复用和任意选址、高精度测量等。扩展频谱通信作为新型通信方式,特别引人注目,得到

15、了迅速发展,如今在移动通信、卫星通信、宇宙通信、雷达、导航以及测距等领域得到越来越广泛的应用。扩频通信的优势主要来自于伪随机码具有白噪声的统计特性。而随着扩频速率的不断提高,扩频码的长度急剧增加,利用计算机设计并验证扩频码的各项指标能大大提高效率。m序列是伪随机序列中最重要的序列中的一种,是最长的线性移位寄存器序列。既然,m序列在扩频通信中占据着极其重要的位置,而对于m序列的产生及仿真的研究,自然也就有很大的必要性。在雷达信号设计中的应用 近年兴起的扩展频谱雷达所采用的信号是已调制的具有类似噪声性质的伪随机序列,它具有很高的距离分辨力和速度分辨力。这种雷达的接收机采用相关解调的方式工作,能够在

16、低信噪比的条件下工作,同时具有很强的抗干扰能力。该型雷达实质上是一种连续波雷达,具有低截获概率性,是一种体制新、性能高、适应现代高技术战争需要的雷达。采用伪随机序列作为发射信号的雷达系统具有许多突出的优点。首先,它是一种连续波雷达,可以较好地利用发射机的功率。其次,它在一定的信噪比时,能够达到很好的测量精度,保证测量的单值性,比单脉冲雷达具有更高的距离分辨力和速度分辨力。最后,它具有较强的抗干扰能力,敌方要干扰这种宽带雷达信号,将比干扰普通的雷达信号困难得多。在通信系统中的应用1 伪随机序列是一种貌似随机,实际上是有规律的周期性二进制序列,具有类似噪声序列的性质,在CDMA中,地址码都是从伪随

17、机序列中选取的,在CDMA中使用一种最易实现的伪随机序列:m序列,利用m序列不同相位来区分不同用户;为了数据安全,在CDMA的寻呼信道和正向业务信道中使用了数据掩码(即数据扰乱)技术,其方法是用长度为2的42次方减1的m序列用于对业务信道进行扰码(注意不是扩频),它在分组交织器输出的调制字符上进行,通过交织器输出字符与长码PN码片的二进制模工相加而完成。 扩展频谱技术的理论基础是山农公式。对于加性白高斯噪声的连续信道,其信道容量C与信道传输带宽B及信噪比S/N之间的关系可以用下式表示 这个公式表明,在保持信息传输速率不变的条件下,信噪比和带宽之间具有互换关系。就是说,可以用扩展信号的频谱作为代

18、价, 换取用很低信噪比传送信号,同样可以得到很低的差错率。扩频系统有以下特点:(1) 具有选择地址能力;(2) 信号的功率谱密度很低, 有利于信号的隐蔽;(3) 有利于加密, 防止窃听;(4) 抗干扰性强;(5) 抗衰落能力强;(6) 可以进行高分辨率的测距。 扩频通信系统的工作方式有:直接序列扩频、跳变频率扩频、 跳变时间扩频和混合式扩频。3.2 通信加密 图 3-1 m序列加密m序列自相关性较好,容易产生和复制,而且具有伪随机性,利用m序列加密数字信号使加密后的信号在携带原始信息的同时具有伪噪声的特点,以达到在信号传输的过程中隐藏信息的目的;在信号接收端,再次利用m序列加以解密,恢复出原始

19、信号。4 开发工具简介4.1 Quartus II简介Quartus II design 是最高级和复杂的,用于system-on-a-programmable-chip (SOPC)的设计环境。 QuartusII design 提供完善的 timing closure 和 LogicLock 基于块的设计流程。QuartusII design是唯一一个包括以timing closure 和 基于块的设计流为基本特征的programmable logic device (PLD)的软件。 Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPG

20、A与mask-programmed devices开发的统一工作流程。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。当前官方提供下载的最新版本是v12.1。Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Quartus II软件评估HardCopy Stra

21、tix器件的性能和功耗,相应地进行最大吞吐量设计。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。该软件有如下几个显著的特点:1、Quartus II 的优点该软件界面友好,使用便捷,功能强大,是一个完全集成化

22、的可编程逻辑设计环境,是先进的EDA工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。2、Quartus II对器件的支持Quartus II支

23、持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,

24、可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。3、Quartus II对第三方EDA工具的支持对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商

25、的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。4.2 数字系统开发流程(1)设计输入:包括原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种方式。(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。(3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真。定时分析器可通过三种

26、不同的分析模式分别对传播延时、时序逻辑性能和建立/保持时间进行分析。(4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。4.2 FPGA简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完

27、成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用

28、集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。CPLD与FPGA的关系早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。 CPLD和FP

29、GA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。 CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续

30、正常运行。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 一、采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。 二、FPGA可做其它全定制或半定制ASIC电路的中试样片。 三、FPGA内部有丰富的触发器和IO引脚。 四、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 五、FPGA采用高速CHMOS工艺,功耗

31、低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可

32、以产生不同的电路功能。因此,FPGA的使用非常灵活。 FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。 如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的

33、新的设计挑战。 例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。 幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nm FPGA器

34、件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。 最近FPGA的配置方式已经多元化! FPGA主要生产厂商1、Altera 2、Xilinx 3、Actel 4、Lattice 其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。FPGA设计的注意事项:不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整

35、性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。I/O信号分配可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤: 1. 使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压

36、、需要的端接方法和相关的时钟。 2. 检查制造商的块/区域兼容性准则。 3. 考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。 4. 利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。 5. 按照受限制程度重新分配信号总线。在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。如果你的设计需要

37、局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。差分信号的分配始终要先于单端信号。如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。 6. 在合适的地方分配剩余的信号。 在这个阶段,考虑写一个只包含端口分配的HDL文件。然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。 这将使你在设计的初始阶段

38、就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。 你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。一旦你实现了满意的信号分配,你就要用限制文件锁定它们。 - 基于CMOS的设计主要消耗三类功率:内部的(短路)、漏电的(静态的)以及开关的(电容)。当门电路瞬变时,VDD与地之间短路连接消耗内部功率。漏电功耗是CMOS工艺普遍存在的寄生效应引起的。而开关功耗则是自负载电容,放电造成的。开关功耗与短路功耗

39、合在一起称为动态功耗。下面介绍降低静态功耗和动态功耗的设计技巧。电路设计中FPGA的应用:连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗产品设计:把相对成熟的技术应用到某些

40、特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建首发团队的状态,只要加入,前途光明产品设计是一种职业发展方向

41、定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇。系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用XilinxV-4, V-5系列的FPGA,实现内嵌POWERPCCPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINUX等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。这种山寨味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩

42、充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。5 m序列生成器仿真分析图 5-1 m序列生成器框图5.1 反馈系数表存储器设计反馈系数表存储器设计 设计Galois型反馈系数表存储器结构如图5-2所示。该结构由FPGA中内嵌的E2PROM构成,只要图3 Galois型反馈系数表

43、存储器结构图给定n,经过级数调整模块运算得到其相应地址addr,即可从E2PROM的输出端feedfactor输出其相应的反馈系数。故存储器中要存储27组反馈系数值,若设计级数的最小级数为ns,最大级数为ne,则E2PROM的地址空间范围是从0至ne-ns。将这27组反馈系数值做成一个ROM表,则需要一个5位二进制数字作为地址输入来提取与之相应的反馈系数值。 该模块的VHDL程序如下entity rom is port (rst : in std _ logic; addr : in std _ logic _ vector (4 downto 0); feedfactor : out std

44、 _ logic _ vector (0 to 27); end rom; architecture feedTable of rom is type memory is array (0 to 26) of std _ logic _ vector (0 to 27); signal data1 : memory: = (/10000000000000000000000000000, /10000000000000000000000000000, /01000000000000000000000000000); signal addr1 : integer range 0 to 26; be

45、gin addr1=conv _ integer (addr); process (rst, addr1, addr, data1) begin if rst=-1.then feedfactor =data1 (addr1); else feedfactor -Z.); end if; end process; end feedTable;5.2 移位存储器设计 为实现级数n值在329可调的m序列,先生成一个29级的Galois型移位寄存器,该结构的第29位D触发器的输出是否反馈取决于级数n。可用一个信号X来表征相应级数的Galois型结构中的反馈特征,X在移位寄存器状态输出(S(1), S

46、(28)中取值。通过输入5位二进制信号addr 4, 0来确定末位反馈信号X的取值。如当输入addr 4, 0为00000时,反馈信号X=S(1),这样就生成了一个3级的m序列发生器;当输入addr 4, 0为00001时,反馈信号X= S(2),这样就生成了一个4级的m序列发生器;依此类推。该模块的VHDL程序 PROCESS (clk, rst, addr) BEGIN IF (rst =-0.) THEN S-1.); ELSIF (CLKevent and CLK=-1.) THEN CASE addr IS WHEN/000000=XXXX=-0.; END CASE; Q=X; e

47、xa: FOR i IN n-1 DOWNTO 1 LOOP if (G (i-1) = (-0.) then S (i) =S (i-1); else S (i) =S (i-1) XOR (G (i-1) AND X); end if; END LOOP exa; S (0) =X; END IF; END PROCESS;该模块有4个输入(clk, rst, addr 4, 0,G0, 27)、1个输出(Q)和1个缓冲口(S n-1,0)。clk为器件的工作时钟; rst为器件的控制信号,为/10时器件工作;G0, 27是位于地址addr 4, 0的反馈系数表存储器中输出的反馈系数;Q为

48、n级的m序列信号的输出。5.3 仿真分析在Quartus = 2 * ROMAN II上对级数n分别为329的m序列发生器进行了仿真,给出了级数n分别为3和29的m序列发生器的仿真结果(图5-1),并对系统的延时进行分析。为便于分析,笔者对系统中各寄存器的初始状态都设定为/10,所以m序列的输出应该从/10开始。由图4可知,m序列的每一位的宽度均为一个时钟周期;m序列输出的起始位置为rst置/10后的第一个时钟上升沿是在35ns处。图5-1中m序列在571599ns开始输出,系统延时221599ns;图5-2中m序列在571472ns开始输出,系统延时221472ns。由此可见,系统延时受级数

49、n的影响较小。用VHDL语言描述复杂的数字系统设计效率显著提高,对于任意级数的m序列发生器,充分利用FPGA芯片内置的ROM构建任意级数的Galois型反馈系数表,极大地简化了快速m序列发生器的实现过程。由于其产生的速率快,且基本不受级数n的影响,因而该m序列产生方法具有较强的适应性和较广的应用范围,尤其适用于级数n可变的应用场合。图5-1 n=3图5-2 n=29参考文献1周润景.基于Quartus的FPGA/CPLD数字系统设计实例M.电子工业出版社.2007,82邢建平,曾繁泰.VHDL程序设计教程(第3版)M.北京:清华大学出版社,20053蒲海,陈自力,胡玫荣1基于CPLD的高速m序

50、列码发生器的设计J1微计算机信息, 2005, 21 (4): 17217314束礼宝,宋克柱1伪随机数发生器的FPGA实现与研究J1电路与系统学报, 2003, 8 (3): 12112415邹学玉,易国华1一类基于FPGA的m序列发生器的设计J1长江大学学报(自然科学版), 2006, 3 (3): 848616林可祥,汪一飞1伪随机码的原理与应用M1北京:人民邮电出版社, 199817梅文华,杨义先1跳频通信地址编码理论M1北京:国防工业出版社, 199618段颖妮,吕虹基于全状态伪随机序列的BIST设计J电子器件,2006,(4):126312669樊昌信通信原理(第五版)M北京:国防

51、工业出版社,2001附 录图5-1 n=3图5-2 n=29附录资料:不需要的可以自行删除C语言编译环境中的调试功能及常见错误提示调试功能1常用健 : 激活系统菜单: 将光标在编辑窗口和、信息窗口之间切换: 加载一个文件+: 查看程序运行结果: 得到有关编辑器在线帮助+: 得到有关C语言的在线帮助+: 终止正在运行的程序2块操作 KB: 定义块首 KK: 定义块尾 KV: 块移动 KC: 块复制 KY: 块删除 KH: 取消块定义3查找、替换和删除操作 QF: 查找字符串 QA: 查找并替换字符串 Option: G(全程), B(向文件头), N(直接替换) Y : 删除一行 QY: 删除从

52、光标位置到行末的所有字符编译中的常见错误例析(1)警告类错误 XXXdeclare but never used 变量XXX已定义但从未用过。 XXXis assigned a value which is never used 变量XXX已赋值但从未用过。 Code has no effect 程序中含有没有实际作用的代码。 Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0的数值。 Possible use of XXXbefore definition 表达式中使用了未赋值的变量 Redeclaration of ma

53、in 一个程序文件中主函数main不止一个。 Suspicious pointer conversion 可疑的指针转换。通常是使用了基本类型不匹配的指针。 Unreachable code 程序含有不能执行到的代码。(2)错误或致命错误 Compound statement missing in function main 程序结尾缺少括号。 “”expected; “(”expected等 复合语句或数组初始化的结尾缺少“)”;“(”。 Case outside of switch case 不属于Switch结构,多由于switch结构中的花括号不配对所致。 Case statement

54、 missing : switch结构中的某个case之后缺少冒号。 Constant expression required 定义数组时指定的数组长度不是常量表达式。 Declaration syntax error 结构体或联合类型的定义后缺少分号。 Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。 Default outside switch Default部分放到了switch结构之外,一般是因为花括号不匹配而引起的。 do statement must have while do语句中缺少相应的while部分。 Exp

55、ression syntax 表达式语法错。如表达式中含有两个连续的运算符 Extra parameter in call fun 调用函数fun时给出了多余的实参。 Function should return a value 函数应该返回一个值,否则与定义时的说明类型不匹配。 Illegal use of pointer 指针被非法引用,一般是使用了非法的指针运算。 Invalid pointer addition 指针相加非法。一个指针(地址)可以和一个整数相加,但两个指针不能相加。 Lvalue required 赋值运算的左边是不能寻址的表达式。 Misplaced else 程序遇

56、到了没有配对的else No matching 表达式中的括号不配对。 Pointer required on left side of_ 在“_”运算的左边只能允许一个指针而不能是一个一般的结构体变量或联合类型的变量。 Statement missing; 程序遇到了后面没有分号的语句。 Too few parameters in call 调用某个函数时实参数目不够。 Unable to open include file XXXXXXXXXXX 头文件找不到。 Unexpected 或:或 在不希望的地方使用了或:。 Undefined symbol Xin function fun 函

57、数fun中的变量X没有定义。5.连接中的常见错误主要错误类似于“undefined symbol _print in modula xxx”(print没有定义),通常是函数名书写错误。6.运行中的常见错误Abnormal program termination 程序异常终止。通常是由于内存使用不当所致。Floating point error : Domain 或Divide by 0 运算结果不是一个数或被0 除Null pointer assignment 对未初始化的指针赋值,程序有严重错误。User break 在运行程序时终止。7.程序的跟踪调试利用Run菜单可以进行程序的跟踪调试

58、(1)GO to Cursor ()选择该选项使程序执行到光标所在行首先将光标移到某行(一般为可执行),选择该功能项,则程序执行到该行的前一行暂停。此时程序处于跟踪调试状态,并有亮条显示在暂停处,此时可以查询变量或表达式的值。(2)Trace into ()执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项可跟踪到被调函数的内部。(3)Step over ()执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项将自定义函数当作一个语句执行,不跟踪到函程序的内部。(4)Debug 菜单程序处于跟踪状态时,可使用该菜单的选项。其主要是使用Evalu

59、ate目的是查询或更新变量或表达式的值。选择Evaluate功能后,系统弹出一个对话框。该对话框包含三个选项区域:Evaluate域可以输入一个含有目前代码中(程序暂停区的作用域)正在使用的变量名、或含变量的表达式、或常量表达式。按回车键后,在Result域中显示变量或表达式的值。还可以用New value域进行调试。如果调试程序时发现Result域显示的某变量或表达式的值不正确,并能估计出该变量或表达式的值,则可以将该值输入到New value域,继续执行程序,其目的是肯定错误发生处是否在当前位置之前。如果输入这个正确的值并将程序继续执行完毕而结果正确,说明在目前暂停处之前已经发生错误而之后

60、无错误。(5)Break/Watch用于设置断点和监视表达式。选择Add Watch功能选项,系统将弹出一个菜单,在Add Watch框中输入变量名或表达式,按回车键后,系统在屏幕底部开辟一个窗口并显示 该变量或表达式的值。【常见错误信息语句索引】Ambiguous operators need parentheses:不明确的运算需要用括号括起 Ambiguous symbol xxx :不明确的符号 Argument list syntax error:参数表语法错误 Array bounds missing in function main 缺少数组界限符 Array bounds mi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论