基于脉冲C语言的脉冲信号设计1_第1页
基于脉冲C语言的脉冲信号设计1_第2页
基于脉冲C语言的脉冲信号设计1_第3页
基于脉冲C语言的脉冲信号设计1_第4页
基于脉冲C语言的脉冲信号设计1_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要简洁实用的信号源生成系统一直是电子系统仿真、测试等必备的设备,而现场可编程逻辑设计阵列FPGA的出现为数字技术应用于信号产生提供了一条便捷的设计方法,故目前使用硬件语言设计PLD/FPGA成为一种趋势,而用C/C+语言开发大规模FPGA一直是许多公司致力研究的对象,目前有两种相对成熟的硬件C语言:systemC和Handle-C,这两种语言都是在C/C的基础上根据硬件设计的需求加以改进和扩充,用户可以在其开发环境编辑代码,调用库文件,甚至可以引进HDL程序,并进行仿真,最终生成网表文件,放到FPGA中执行。目前基于FPGA 的SOPC设计技术是当前电子系统设计领域最前沿的技术之一,故采用目

2、前流行的FPGA芯片和DA芯片以及等其他芯片来完成对常用信号的生成和输出就是尤其必要的了。而用C/C+语言开发大规模FPGA的技术,随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,在510年后,使用单一的高级语言直接设计我们的整个系统将是一个的发展趋势。基于FPGA的高性能C语言开发系统 CoDeveloper软件的最终设计方案是软件和硬件源文件的组合。一些需要软件的编译/调试工具流程,其它需要硬件设计流程和专业知识。随着基于C语言的FPGA设计工具的出现,使大部分设计中可以采用熟悉的标准C语言,尤其在那些本身就是实现算法的硬件电路。后面的性能转换可能会引入手工的硬件描述语言(HDL)取

3、代自动生成的硬件(正如面向DSP处理器的源代码通常用汇编语言重新编写),但是因为设计直接从C代码编译成最初的FPGA实现,硬件工程师要参与性能转换的时间会进一步提早至设计阶段,系统可以用更高效率的软件设计模式来进行设计。关键词:可编程逻辑器件,FPGA,信号,CoDeveloperABSTRACTSimple and practical system has been the source generates electronic system simulation, testing and other necessary equipment, and field programmable g

4、ate array FPGA design of the emergence of digital technology in signal generator provides a convenient design method, it is the language currently used hardware Design PLD/ FPGA to become a trend, but with C/C + + language to develop large-scale FPGA has been the object of many companies to research

5、, the resulting network table file, run into the FPGA. Because FPGA-based SOPC design is the current electronic systems design one of the most cutting-edge technology, so it popular FPGA chip and DA chips and other chips to complete the formation of the common signal and the output is particularly n

6、ecessary in The use of C/C + + language development large-scale FPGA technology, with the EDA technology continues to mature, the concept of software and hardware will become increasingly blurred, in 5-10 years later, using a single high-level language direct design our entire system will be A trend

7、 of development. High-performance FPGA-based C language development system CoDeveloper software design is the ultimate source software and hardware combination. Some require software compilation / debugging tool flows, and other necessary hardware and expertise in the design process. However, with t

8、he C language based on the emergence of FPGA design tools, making the most of the design standards can use the familiar C language, especially in the algorithm that the hardware itself is a circuit. The performance of the back of the manual conversion may introduce the hardware description language

9、(HDL) to replace the hardware automatically (as the source code for the DSP processor is usually re-written in assembler language), but because of the design directly from C code compiled into the first FPGA implementation and hardware engineers to participate in the performance of the conversion ti

10、me will be further advanced to the design phase, the system can be more efficient to design the software design patterns.Keywords: programmable logic device, FPGA, signal,CoDeveloper目录摘要IABSTRACTII第一章 引言1第二章 FPGA技术介绍22.1 FPGA结构介绍22.2 PLD/FPGA 结构与原理32.3 FPGA设计软件介绍52.3.1 HDL开发流程52.3.2 用C/C+语言开发大规模FPGA

11、背景概要62.3.3基于FPGA的高性能C语言开发系统 CoDeveloper软件7第三章 信号生成系统原理与结构103.1 系统原理与结构图103.2 软件设计流程图133.2.1软件功能块结构图133.2.2信号生成数据输出流图143.2.3 FPGA处理流图143.2.4键盘输入信号模块流图153.2.5硬件层代码部分框架部分153.2.6软件层模块部分框架部分18第四章 软件运行结果及结论21参考文献22致谢23第一章 引言信号源是雷达、通信及其他电子系统不可缺少的重要组成部分。低相位噪声、高稳定度、高可靠性和多功能信号源的研究受到普遍重视。信号源是测量系统不可缺少的重要设备,他的主要

12、用途主要有三方面:(1)作为电子设备的激励信号;(2)作为信号仿真,模拟电子设备所需的与实际环境特性相同的信号,测试设备的性能;(3)作为标准源来对一般信号源进行校准或对比。目前实现信号源的主要技术有: 直接频率合成、锁相式频率合成和直接数字频率合成DDS。DDS 具有极高的频率分辨率、极快的频率切换速度、频率切换时相位 连续、易于功能扩展和全数字化易于集成等优点。特别适合应用于信道间隔小、信道频率数多和相位噪声低的场合。而简洁实用的信号源生成系统一直是电子系统仿真、测试等必备的设备。 而现场可编程逻辑设计阵列FPGA的出现为数字技术应用于信号产生提供了一条便捷的设计方法。由于目前基于FPGA

13、的电子系统设计技术是21世纪电子应用工程师必备的基本技能之一,而基于FPGA的SOPC设计技术是当前电子系统设计领域最前沿的技术之一。本文就是采用目前流行的FPGA芯片和DA芯片以及等其他芯片,完成对几种常用信号的生成和输出。第二章 FPGA技术介绍2.1 FPGA结构介绍FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,现场可编程门阵列FPGA作为集成度和复杂程度最高的可编程ASIC,是ASIC的一种新型门类,它建立在创新的发明构思和先进的EDA技术之上。FPGA,CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:

14、(1)一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心;(2)输入输出块;(3)连接逻辑块的互连资源,由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入输出块之间的连接。图2.1.1 PLD的结构对用户而言,虽然CPLD与FPGA的内部结构稍有不同,但其用法都一样,所以多数情况下,不加以区分。FPGACPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:(1)随着VLSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管, FPGACPLD芯片的规模也越来越大,

15、其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成,即片上系统SOC。(2)FPGACPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以, FPGACPLD的资金投入小,节省了许多潜在的花费。(3)用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGACPLD 试制样片,能以最快的速度占领市场。 FPGACPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可

16、完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGACPLD的优势。电路设计人员使用FPGACPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识, FPGACPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。(4)在线可编程技术(ISP)使得使用CPLD/FPGA的产品可以做到远程升级。2.2 PLD/FPGA 结构与原理一、 基于乘积项(Product-Term)的PLD结构采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Fl

17、ash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)。我们先看一下这种PLD的总体结构(以MAX7000为例,其他型号的结构与此都非常相似):图2.2.1 基于乘积项的PLD内部结构这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。 宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图2.2.1阴影部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。图2.2.1左上的INPUT/GCLK1,IN

18、PUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。宏单元的具体结构见下图:图2.2.2 宏单元结构左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。图右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I

19、/O脚。查找表结构的FPGA逻辑实现原理我们还是以这个电路的为例:图2.2.3 宏单元结构A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图2.2.3所示电路的功能。由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺

20、的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。2.3 FPGA设计软件介绍目前可用于可编程器件开发软件大致分为这样两类: 一、硬件语言类软件,随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法

21、较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。 二、由C等高级语言演化而来用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不太成熟,但它有可能会成为继VHDL和Verilog之后,设计大规模CPLD/FPGA的又一种手段。下面简要对比两类语言的开发流程和特点。2.3.1 HDL开发流程用VHDL/Verilog HD语言开发PLD/FPGA的完整流程为:1.

22、文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真

23、软件验证电路的时序。(也叫后仿真)。6.编程下载:确认仿真无误后,将文件下载到芯片中。2.3.2 用C/C+语言开发大规模FPGA背景概要可编程逻辑器件的设计方法经历了布尔等式,原理图输入,硬件描述语言这样一个发展过程。随着设计的日益复杂和可编程逻辑器件规模的不断扩大,人们不停地寻求更加抽象的行为级设计方法,以便在尽可能短时间内完成自己的设计构思。今天,在电子设计领域形成了这样一种分工:软件和硬件,相应工程师也被分成软件工程师和硬件工程师。对于复杂算法的实现,人们通常先建立系统模型,根据经验分析任务,然后将一部分工作划给软件工程师,将另一部分工作交给硬件工程师。 硬件工程师为了实现复杂的功能,

24、使用硬件描述语言设计高速执行的芯片,而这种设计是富有挑战性和花费时间的,需要一定的硬件工程技巧。对于软件工程师,这些同样的功能只要简单地使用C语言整合到整个系统的程序代码中就可以了。但是传统的处理器是顺序执行的,并且他们执行的高速计算必须依赖于高速时钟,这样就限制了处理器的能力。同时,软件实现算法存在一个指令执行周期的问题软件永远也不能达到硬件执行的速度。当然,很少有嵌入式应用是完全使用可编程逻辑器件来实现的。串行化的步进式算法最好是由CPU或DSP用软件来实现。最佳的硬件加速性能大多是由并行执行的功能来完成,其物理形式通常是将硬件协处理器(FPGA) 与CPU紧密的结合在一起,CPU与FPG

25、A的紧密结合可以提供软硬件的最佳连接方式。 在这种结构中,CPU通常运行系统应用方面的程序,实时很强的任务放到FPGA硬件上,这样可以减轻处理器的负荷,从而获得更大的带宽。这样我们可以通过把算法移植到硬件上来克服设计瓶颈。 但是这时我们又将面临一个问题:设计者必须使用复杂的硬件描述语言编写FPGA代码,而这些功能原本是用简单C语言在处理器或DSP中实现的。人们希望能够找到一种方法,在更高的层次下设计更复杂,更高速的系统,并希望将软件设计和硬件设计统一到一个平台下。 C/C+语言是软件工程师在开发商业软件时的标准语言,也是使用最为广泛的高级语言,人们很早就开始尝试在C语言的基础上设计下一代硬件描

26、述语言。许多公司已经提出了不少方案,目前有两种相对成熟的硬件C语言:systemC和Handle-C,它们相应的开发系统为:CoCentric System Stadio和Celoxica DK1。 这两种语言都是在C/C的基础上根据硬件设计的需求加以改进和扩充,用户可以在它们的开发环境编辑代码,调用库文件,甚至可以引进HDL程序,并进行仿真,最终生成网表文件,放到FPGA中执行。 软件算法工程师不需要特别的培训,利用他们熟悉的C语言就可以直接进行硬件开发,减轻了硬件开发的瓶颈和压力。随着算法描述抽象层次的提高,使用这种C语言设计系统的优势将更加明显。现在有很多硬件描述语言的人才,也有更多的资

27、深的C语言编程者,他们能够利用这种工具,可以轻松地转到FPGA设计上。 过去因为太复杂而不能用硬件描述语言表示的算法以及由于处理器运行速度太慢而不能处理的算法,现在都可以利用C语言在大规模FPGA硬件上得以实现。 设计者可以利用C语言快速而简洁的构建功能函数,通过标准库和函数调用技术,设计者还能在很短的时间里创建更庞大,更复杂和更高速的系统。正如同硬件描述语言与原理图输入的关系,或是高级语言和汇编语言的关系,抽象的设计方法会减少我们的设计时间,但也会增加对硬件资源的需求,C语言也不例外。 目前直接使用C语言设计硬件系统的准确性和可靠性还在进一步的研究和发展中,可以说,目前各种硬件C语言的编译软

28、件都还不够成熟,很少能直接投入到实际产品的开发中。 C语言输入方式的广泛使用还有赖于更多EDA软件厂家和FPGA公司的支持。 但是可以预见,随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,在510年以后,使用单一的高级语言直接设计我们的整个系统将是一个的发展趋势。 2.3.3基于FPGA的高性能C语言开发系统 CoDeveloper软件对于系统中的每个处理单元(即标准处理器、DSP、FPGA或ASIC),需要不同水平的专用技能。在另一方面,FPGA在设计和工具经验上需要相对高的投入,在硬件设计语言作为主要的设计输入方式时尤其如此。 然而FPGA和专用ASIC设计所需的经验和工具投入相比,

29、显然FPGA在开发专用硬件上具有更低的风险。的确,相对于专用ASIC方案的简单性和低风险的设计过程是选择FPGA的关键因素。最近基于软件的FPGA设计工具使这种设计过程获得更大的效率。这反过来让系统设计者和软件应用开发者在实际的硬件上能够更快地尝试新的算法方式,使用迭代方式进行设计。 这种迭代方式重要好处是能够一次改变一个单元(例如将关键的算法移至FPGA)。应用最初是完全用软件进行原型设计,并验证其正确性,然后由FPGA完成特定的功能,这是在每个步骤都要对系统重新进行验证的硬件实现过程。这种方式被证实能大大地缩短调试时间,降低引入难以调试的系统错误的风险。 随着应用模型和部件算法的发展,设计

30、者确定并发挥设计中的并行性(或重新设计算法),利用可编程硬件在建立并行结构方面的独有能力。在上述的方式中,最终的设计是软件和硬件源文件的组合。 一些需要软件的编译/调试工具流程,其它需要硬件设计流程和专业知识。 然而,随着基于C的FPGA设计工具的出现,使得在大部分的设计中可以采用熟悉的标准C语言,尤其在那些本身就是实现算法的硬件电路。 后面的性能转换可能会引入手工的硬件描述语言(HDL)取代自动生成的硬件(正如面向DSP处理器的源代码通常用汇编重新编写),但是因为设计直接从C代码编译成最初的FPGA实现,硬件工程师要参与性能转换的时间会进一步提早至设计阶段,系统可以用更高效率的软件设计模式来

31、进行设计。 CoDeveloper工具(Impluse Accelerated Technologies提供)允许C语言的应用编译后以FPGA网表形式建立硬件,包括允许描述高度并行和多过程应用描述所必须的C语言扩展。对于包括嵌入式处理器(如Altera的Nios软核处理器)的目标平台,CoDeveloper可以用来生成必要的硬件/软件接口,及生成特定过程的低级硬件描述。采用这种工具和硬件/软件方式获得成功的关键是软件和硬件处理资源之间合理的划分。好的划分方案不仅要考虑给定算法部件对计算量的需求,而且要考虑数据带宽需求。这是因为硬件/软件接口可能是主要的性能瓶颈。合理地利用高并行应用的编程模型也

32、很重要。虽然它试图用传统编程方式如远程过程调用(RPC)将特定功能交由FPGA处理,但是研究表明面向数据流的通信方式更有效率,它不可能引入阻塞或造成应用死锁。在一些情况下,这意味着重新从整体上考虑设计,寻找新的方式对数据进行搬移和处理。这么做的结果是非常显著的:通过增加应用级的并行性,充分利用可编程逻辑资源,这可能将使一般算法比纯软件实现提升几个数量级。在这种应用的开发过程中(或重新工程化),设计工具是可视化的,能调试多个并行过程的互连。工具有助于量化地给出划分方式的结果,识别可能表示应用瓶颈的高数据吞吐量的区域。用户可以在工具的帮助下,进行更详细的分析和性能调整。 图2.3.1在应用调试和监

33、视过程中连接硬件和软件过程第三章 信号生成系统原理与结构3.1 系统原理与结构图小键盘输入输出缓冲DA芯片FPGA芯片图3.1.1系统原理结构图信号生成系统包括人工接口小键盘输入模块,FPGA逻辑控制信号数据生成模块,DA输出模块和信号平滑、放大模块等组成。各部分的功能如下:1、人工接口小键盘输入模块: 主要是实现信号种类的人工选择,输出的幅度大小等, 键盘采用2 × 3键盘。共6个键。3.1.2键盘电路结构图ID1-ID6是键盘数据线的输出,同他复位和置位控制线组成Mykeyctrl数据线。采用无按键数据线电平为高,按下数据线电平为低的方式。送给FPGA的I/O口,在FPGA内部完

34、成编码。2、FPGA芯片-信号数据生成和输出控制模块为了实现上面的算法控制,选用Virtex-4 系列FPGA 芯片作为编译的目标平台。Virtex-4 FPGA产品基于我们新的高级硅片组合模块(ASMBL)架构,通过提供一个多平台方式,使客户可以为他们特定的应用挑选能以最低的成本实现最佳性能的正确资源组合。我们的90nm Virtex-4 FPGA产品中包含了100多项技术创新,为设计人员提供了基于三个针对特定领域而优化的FPGA平台的17款器件。这三个平台分别是:针对大量使用逻辑进行设计的Virtex-4 LX、针对超高性能数字信号处理的Virtex-4 SX以及针对高速串行连接和高性能呢

35、个嵌入式处理的Virtex-4 FX。 与竞争的FPGA产品相比,Virtex-4在七个方面具有突破性的创新和优势: a)ASMBL 架构:赛灵思创建了高级硅片组合模块(ASMBL) 架构,可快速地和成本高效地开发采用不同特性组合的FPGA平台,以适应不同应用领域的需求。ASMBL 架构通过消除如 I/O 数量与结构阵列尺寸之间的依赖关系等几何布局约束,突破了传统设计障碍;通过允许在芯片上随意放置电源和接地,增强了片上电源和接地分布;并允许异类硬 IP 块独立于其他块和周围资源进行缩放。 b)高级逻辑:Virtex-4 提供了多达 200,000 个逻辑单元,这些逻辑单元具有 500 MHz

36、DCM 数字时钟管理器、PMCD 相位匹配时钟分频器、片上差分时钟网络、采用集成 FIFO 控制逻辑的 500 MHz SmartRAM 技术、每个I/O都集成了ChipSync源同步技术的 1 Gbps I/O。Virtex-4 比竞争 FPGA 具有平均 15% 的逻辑性能优势。 C)高性能 DSP:Virtex-4 提供多达 512 个 XtremeDSP 切片 (slice),每个切片可以 500MHz 吞吐率总共 256 GigaMAC/秒 (18x18) 的性能工作,消耗功率仅为 23 毫瓦/MHz。XtremeDSP 切片可配置创建 40 多种不同功能,设计人员可通过将这些切片全

37、速级联来构建高性能滤波器。 D)高性能嵌入式处理:Virtex-4 内置多达两个 32 位 RISC PowerPC 处理器,可提供总共 1400+ DMIPS。另外它还包含一个辅助处理器单元 (APU) 接口控制器,以便通过扩展 PowerPC 指令集、卸载 CPU 操作、直接与硬件加速器连接和优化硬件/软件功能划分来加快处理性能。 E)高速串行连接性:Virtex-4 含有多达 24 个 RocketIO 多千兆位串行收发器,支持从 622 Mbps 到 10.3125 Gbps 的业界最宽工作范围和多速率应用,同时符合最广泛的芯片到芯片、板到板及机箱到机箱连接性标准规范。 F)低功耗:V

38、irtex-4 每个 FPGA 可比目前市场上销售的任何竞争 90nm FPGA 节省一到五瓦功耗。得益于最高可达 73% 的低静态功耗和最高可达 86% 的低动态功耗,设计人员可在其功耗预算内进一步提升性能。静态功耗的降低是通过我们独有的 90nm 三极栅氧化层技术获得的,该技术可在不降低性能的情况下减少泄漏电流。动态功耗的降低是通过缩小在 90nm 工艺上的晶体管尺寸加上利用高性能、低功耗硬嵌入式 IP以提高门容量而获得的。G)信号完整性:Virtex-4 采用高级封装技术,串扰最小可至竞争 90nm FPGA 的七分之一。设计人员可以利用这种增强的信号完整性提高每个高速应用的系统性能,包

39、括通常使用的存储器接口。串扰减小是通过采用新的 SparseChervon 引脚分配模式获得的,该技术将接地和电源引脚放置在每个信号引脚的邻近位置以尽最大程度减少电感。同时,Virtex-4 还提供了最佳封装去耦电容解决方案和连续电源/地平面。使用Virtex-4平台可以完成高级算法等一系列的工作,这里只完成如下的算法流程,下面仅以伪代码的形式表述如下:开始循环:读控制码(mykeyctrl)数据; 分析数据并映射到信号函数类; 准备信号生成初始条件值; 生成要显示的信号数据(一个显示时间段); 输出到固定 FIFO中,并返回给出标记。 由于该平台可以配置双通道, 另外一个通道配置为:开始循环

40、: 检测信号FIFO标记; 按照标记和映射初值设定输出的时钟(分频); 读取信号数据;输出信号时钟和信号数据; ,程序部分模块代码见后面的软件代码框架。3DA输出模块和平滑滤波放大电路 为了实现本部分功能,采用了较为常见的8位DAC0830系列芯片模块作为信号的输出。FPGA和DAC0830芯片连接的电路见下图。3.1.3 FPGA和DAC0830芯片连接的电路DAC0830是8位分辩率的DA转换集成芯片,与微处理器完全兼容。这个系列的芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用 ,这类DA转换器由8位输入锁存器、8位DAC寄存器、八位DA转换电路及转换控

41、制电路构成 。DAC0830系列芯片是一种具有两个输入数据寄存器的8位DAC,它能直接与MCS一51单片机接口,其主要特性参数如下: 分辨率为8位; 电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度; 单一电源供电(十5V15V); 低功耗,200mW。3.2 软件设计流程图3.2.1软件功能块结构图3.2.1软件功能结构图 上图是Impulse软件中系统编译生成的一个系统仿真的功能流程图, 其中Producer是用来仿真输入的键盘数据,MyGenerator 是FPGA芯片的算法功能模块。 负责上面完成上面的两个伪代码循环。Consumer包含两部分,一部分是时

42、钟分频,一部分是DA部分。下面是相关的介绍和结果。3.2.2信号生成数据输出流图信号生成数据输出流图 其中consumer是DA芯片:3.2.2信号生成数据图3.2.3 FPGA处理流图3.2.3 FPGA处理流图3.2.4键盘输入信号模块流图3.2.4键盘输入信号模块流图3.2.5硬件层代码部分框架部分/ Generated by Impulse CoDeveloper/ Impulse C is Copyright(c) 2003-2007 Impulse Accelerated Technologies, Inc./ / MySignalGenerator_hw.c: includes

43、the hardware process and configuration/ function./ See additional comments in MySignalGenerator.h./#include "co.h"#include "cosim_log.h"#include "MySignalGenerator.h"/ Software process declarations (see MySignalGenerator_sw.c)extern void Producer(co_stream MykeyCtrl);ex

44、tern void Consumer(co_stream MySignaldata, co_stream MySignalclockCtl);/ This is the hardware process./ void MYGenerator(co_stream MykeyCtrl, co_stream MySignaldata, co_stream MySignalclockCtl)co_int8 nSample;IF_SIM(int samplesread; int sampleswritten;)IF_SIM(cosim_logwindow log;)IF_SIM(log = cosim_

45、logwindow_create("MYGenerator");)do / Hardware processes run foreverIF_SIM(samplesread=0; sampleswritten=0;)co_stream_open(MykeyCtrl, O_RDONLY, INT_TYPE(STREAMWIDTH);co_stream_open(MySignaldata, O_WRONLY, INT_TYPE(STREAMWIDTH);co_stream_open(MySignalclockCtl, O_WRONLY, INT_TYPE(STREAMWIDTH

46、);/ Read values from the streamwhile ( co_stream_read(MykeyCtrl, &nSample, sizeof(co_int8) = co_err_none ) #pragma CO PIPELINEIF_SIM(samplesread+;)/ Sample is now in variable nSample./ Add your processing code here.co_stream_write(MySignaldata, &nSample, sizeof(co_int8);co_stream_write(MySig

47、nalclockCtl, &nSample, sizeof(co_int8);IF_SIM(sampleswritten+;)co_stream_close(MykeyCtrl);co_stream_close(MySignaldata);co_stream_close(MySignalclockCtl);IF_SIM(cosim_logwindow_fwrite(log, "Closing filter process, samples read: %d, samples written: %dn",samplesread, sampleswritten);)IF

48、_SIM(break;)/ Only run once for desktop simulation while(1);/ Impulse C configuration function/void config_MySignalGenerator(void *arg)co_stream MykeyCtrl;co_stream MySignaldata;co_stream MySignalclockCtl;co_process MYGenerator_process;co_process producer_process;co_process consumer_process;IF_SIM(c

49、osim_logwindow_init();)MykeyCtrl = co_stream_create("MykeyCtrl", INT_TYPE(STREAMWIDTH), STREAMDEPTH);MySignaldata = co_stream_create("MySignaldata", INT_TYPE(STREAMWIDTH), STREAMDEPTH);MySignalclockCtl = co_stream_create("MySignalclockCtl", INT_TYPE(STREAMWIDTH), STREAM

50、DEPTH);producer_process = co_process_create("Producer", (co_function)Producer, 1, MykeyCtrl);MYGenerator_process = co_process_create("MYGenerator", (co_function)MYGenerator,3,MykeyCtrl,MySignaldata,MySignalclockCtl);consumer_process = co_process_create("Consumer",(co_fu

51、nction)Consumer, 2, MySignaldata, MySignalclockCtl);co_process_config(MYGenerator_process, co_loc, "pe0"); co_architecture co_initialize(int param)return(co_architecture_create("MySignalGenerator_arch","Generic",config_MySignalGenerator,(void *)param);3.2.6软件层模块部分框架部分#i

52、nclude <stdio.h>#include "co.h"#include "cosim_log.h"#include "MySignalGenerator.h"extern co_architecture co_initialize(void *);void Producer(co_stream MykeyCtrl)int c;IF_SIM(cosim_logwindow log = cosim_logwindow_create("Producer");)/ Read sample data fr

53、om a fileconst char * FileName = INPUT_FILE;FILE * inFile;int32 fileValue;co_int8 testValue;inFile = fopen(FileName, "r");if ( inFile = NULL ) fprintf(stderr, "Error opening input file %sn", FileName);c = getc(stdin);exit(-1);/ Now read and write the data.co_stream_open(MykeyCtrl

54、, O_WRONLY, INT_TYPE(STREAMWIDTH);IF_SIM(cosim_logwindow_write(log, "Sending test data.n");)while (1) if (fscanf(inFile,"%d",&fileValue) < 1)break;testValue = fileValue;co_stream_write(MykeyCtrl, &testValue, sizeof(co_int8);IF_SIM(cosim_logwindow_fwrite(log, "Valu

55、e: 0x%xn", testValue);)IF_SIM(cosim_logwindow_write(log, "Finished writing test data.n");)co_stream_close(MykeyCtrl);fclose(inFile);void Consumer(co_stream MySignaldata, co_stream MySignalclockCtl)co_int8 testValue1;co_int8 testValue2;unsigned int count = 0; const char * FileName = OUTPUT_FILE;FILE * outFile;IF_SIM(cosim_logwindow log = cosim_logwindow_create("Consumer");)

温馨提示

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

评论

0/150

提交评论