如何使用my,DAQ内置的任意波形发生器厂家,求助

君,已阅读到文档的结尾了呢~~
所谓虚拟仪器就是基于计算机平台,利用其强大的软件和硬件资源,实现传统仪器的
全部功能。从表现形式上看,虚拟仪器没有传统仪器那样具体的物理结构,取而代之 ...
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于LABVIEW的任意波形发生器 摘要 该系统硬件包括PC机、DAQ ...
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口介绍2通道任意波形发生器卡,20MHz、16Bit模拟输出模块
概 述  Tw206高精度高速任意波形发生器,采用大容量&CPLD、全表贴工艺,具有精度高、可靠性好、软件支持丰富等优点。Tw206提供完全独立的2通道模拟输出以及16路数字IO。
  用户运行ArbLab2.0配套软件,便拥有了一台价格便宜、界面友好、性能优良的任意波形发生器。用户可选择正弦波、方波、三角波、锯齿、&TLL、白噪声、高斯噪声、直流等常规波形,亦可用鼠标画任意波形、或调用函数生成特殊波形。Tw206支持二次开发,用户可嵌入到自己的系统
中,构成自动测试系统,可广泛用于各种场合的自动测试。
  另外,Tw206具有数据实时DA转化功能,能将海量的任意数据按一定的速率转化为模拟信号输出。特别适用于需要长时间非周期性模拟型号输出的领域。
  还可提供多种触发方式、时钟方式供用户灵活使用。
点●&16位分辨率&
●&2通道模拟信号独立输出
●&D/A转换频率:20MHz&
●&模拟输出通道按4个量程档实现自校准
●&支持单次转换、循环转换、实时转换等多种工作模式
●&支持多卡同步扩展
●&16路数字I/O通道
●&支持二次开发的驱动软件
软件支持●&ArbLab2.0:控制台软件,仿真操作面板,支持Windows
2000/XP操作系统。
●&DAQView:图形化编程二次开发包,用于LabView平台。
●&TwaveDLL:提供二次开发DLL及VC、CVI、VB下的调用例程。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。33250A 函数发生器、任意波形发生器, 80 MHz [已停产] | Keysight (安捷伦)
& 33250A 函数发生器、任意波形发生器, 80 MHz [已停产]
支持使用 JavaScript 查看产品图片
33250A 函数发生器、任意波形发生器, 80 MHz
此产品已经停产
该产品的可替代产品:
主要特性与技术指标
GPIB和RS-232接口
图形模式用于信号设置的视觉验证
支持同步信道的内置多元链路
80 MHz正弦波和方波
斜波、三角波、噪声、直流和其他波形
12位、200 MSa/s、64 K点的任意波形
具有可变沿的脉冲能力
33250A 函数/任意波形发生器将于 2016 年 12 月 1 日停产,替代产品是新一代 33600 系列 Trueform 波形发生器。下单截止日期为 2016 年 11 月 30 日。是德科技始终致力于打造业界一流的客户支持服务,将继续对这些产品提供标准 5 年保修。
您的波形发生器还可以做得更多...
了解过渡到下一代 的更多信息。
请了解新一代是德产品。
培训与活动电子科技大学 硕士学位论文 DDS任意波形发生器波形数据生成及传输接口设计 姓名:许开华 申请学位级别:硕士 专业:电路与系统 指导教师:唐广
摘要摘要任意波形发生器是现代测试领域应用最为广泛的通用仪器之一,代表了信号 源的发展方向。直接数字频率合成(DDS)是十九世纪七十年代初提出的一种全数 字的频率合成技术,其查表合成波形的方法可以满足产生任意波形的要求。现场 可编程门阵列(FPGA)具有高集成度、高速度、能实现大容量存储器功能的特性, 能有效地实现DDS技术。 本设计是“基于DDS技术和FPGA的任意波形发生器设计”工作的一部分,主 要任务是产生任意波形数据和实现波形数据的传输接口。按照DDS的基本原理, 以QuartusⅡ软件平台作为开发工具,对FPGA芯片EPIC3T144C8实现的DDS结构 中的数字部分及该部分与单片机的接口进行了设计,其中的波形RAM是任意波形 数据的接收端。在此基础上,使用当前流行的虚拟仪器设计语言Lab Windows/CVI 作为开发工具,利用计算机强大的计算显示功能,设计实现任意波形发生器的操 作面板。通过在操作面板上选择正弦波、方波、三角波、锯齿波等常规波形或手 动绘制测试需求的任意波形,并设置波形参数,产生符合接收要求的波形数据, 进而控制硬件模块产生相应的波形信号。产生手动绘制任意波形数据是设计过程 中的重点和难点,集中体现了任意波形发生器的“任意性”。在众多的计算机接口 中,USB接口具有更快的数据传送速度、更灵活的使用特性,因此选用USB接口来 实现计算机与任意波形数据接收端之间的数据传输,设计中选用了USB接口芯片 PDIUSBDl2和单片机AT89c52。通过设计硬件连接电路、编写单片机固件程序和设 备驱动相关程序,实现了上位机与任意波形发生器硬件模块之间的数据通信接口。 关键词;任意波形发生器,直接数字频率合成,现场可编程门阵列,Lab Windows/cVI,通用串行总线 ABSTRACTABSTRACTArbitraryWaveform Generator(AWG)isoneof the most popular instnnnents insOlll"eesomodern testing domains,which represents the developing direction of signalDirectDigital frequency Synthesis(DDS)advanced early in 1970s isafiln digltat adaptstechnology for frequency synthesis,its LUT method forto generate arbitrary waveform.Field Programmable Gate of large scale integration,high working FPGACallsynthesizing waveformArray(FPGA)has the featurescanfrequency andrealize large memory,SOeffectively realize DDS.athis design ispartial work of‘'design of AWGbasedonDDSand FPGA",themain aim ofthis task is generating arbitrary waveform data and realizing the interface oftransporting thedata.Based011the theory of DDS,on FPGA chip EPlC3T144C8 thedigital part in DDS structure and its interface witll MCU aredesigned研th QuartusonⅡ.the waveforn'l RAM of DDS is the sink of arbitrary wavefoNil data.Based this,taking advantage of PC’s powerful calculate andoperatedisplaycapability,lUserdesigncanthepanel of AWG with Lab Windows/CVI.On the panelaschooseconventional waves suchsinewave,square wave,triangle wave,sawtooth waveset waveetc.,draw wave required by testing by hand,andparameterstobring waveforrndata and control instrument generate corresponding waveform.Drawing wave and bringing corresponding data is the the‘‘arbitrary'’character ofemphasisand difficulty in the design,whichembodieshas moreAWl2USB is more fast intransporting data andtoflexible operation than PC’S other interfaces.SO I choose USB totransportdata from PCdesigningAWGPDIUSBDl2andAT89C52areadoptedinrealization.afterconnection between hardwares and programming fhllnware of MCU and relative program of device driver,the communicationrealized. interfacebetweenPCand AWG isKey words:AⅣG DDS,FPGA,Lab Windows/CVI,USBⅡ 独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。签名:详日修,7年而刃日关于论文使用授权的说明本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 (保密的学位论文在解密后应遵守此规定)签名:粒导师签名:日期沙矿 , 第一章绪论第一章绪论1.1波形发生器概述波形发生器即通常所说的信号发生器是一种常用的信号源,广泛应用于电子 电路、自动控制和科学试验领域,是一种为电子测量工作提供符合严格技术要求 的电信号设备,和示波器、电压表、频率计等仪器一样是最普通、最基本也是应 用最广泛的电子仪器之一,几乎所有电参量的测量都要用到波形发生器。 随着现代电子技术的飞速发展,现代电子测量工作对波形发生器的性能提出 了更高的要求,不仅要求能产生正弦波、方波等标准波形,还能根据需要产生任 意波形,且操作方便,输出波形质量好,输出频率范围宽,输出频率稳定度、准 确度及分辨率高,频率转换速度快且频率转换时输出波形相位连续等。可见,为 适应现代电子技术的不断发展和市场需求,研究制作高性能的任意波形发生器(Arbitrary WaveformGenerator,简称AWG)十分有必要,而且意义重大。‘一般传统的信号发生器都采用谐振法,即用具有频率选择性的回路来产生正 弦振荡,获得所需频率。这种信号发生器虽然具有输出信号频率范围宽,结构简 单等优点,但输出波形单一,不能产生任意波形,且频率稳定度和准确度较差, 频率稳定度一般劣于10‘/分,频率准确度一般在0.5%以下,对于作为精密测量用 的信号发生器,其频率稳定度一般要求达到104―101。因此传统的信号发生器已 经越来越不能满足现代电子测量的需要,正逐步退出历史舞台。而基于频率合成 技术制成的信号发生器,由于可以获得很高的频率稳定度和精确度,因此发展非 常迅速,尤其是最近随着现代电子技术的不断发展,其应用更是有了质的飞跃。1.2任意波形发生器的研究现状任意波形发生器是随着众多领域对于复杂的、可由用户定义的测试信号波形 日益增长的需要,以及不断进步的计算机技术和微电子技术在测量仪器中的应用 而形成和发展起来的一类新的测试仪器。作为当代最新的一类信号源,引起了世 界各国的广泛重视,纷纷投入人力物力进行研究制作。主要现状如下: 第一,研究制作的任意波形发生器主要有独立的台式仪器和适用于个人计算 电子科技大学硕士学位论文机的插卡以及v)(I模块。 第二,主要采用了直接数字频率合成技术(DirectDigitalfrequencySynthesis,简称DDS),研究制作基本上均采用了软件结合硬件的方式。虚拟仪器 开发编程序语言LabWindows/CVI、汇编语言、VisualBasic、Visual C、EDA开发软件及硬件描述语言等软件和FPGA、CPLD、DSP芯片及高速存储器、高速D/A 转换器、单片机等硬件被广泛应用。 第三,大量使用各种高速器件提高时钟频率,使任意波形发生器输出波形频 率不断提高,能应用于越来越广泛的领域。 第四,使用各种计算机语言开发任意波形发生器波形编辑软件和操作软面板, 使任意波形发生器的操作控制或任意波形数据生成变得更加方便和容易,允许徒 手从计算机显示屏上输入任意波形。上位机与任意波形发生器硬件模块广泛使用 RS一232/485、GPIB等总线进行数据通信,近年,USB接口也逐渐被广泛研究和应用。第五,与VXI资源结合。由于VXI总线的逐渐成熟和对测量仪器的高要求, 在很多领域需要使用VXI系统测量和产生复杂的波形,VXl的系统资源提供了明显 的优越性。但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用, 使得VXI任意波形发生器模块仅限于航空、军事及国防等大型领域,在民用方面, VXl模块远远不如台式仪器更为方便。 第六,对台式仪器的研究发展不断繁荣,台式仪器形态、功能都较以往大大 改善,外形尺寸和价格,都比过去的类似产品减少了一半。 目前我国已开始研制任意波形发生器,并取得了可喜的成果。但总的来说, 我国任意波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为 一些Pc仪器插卡,独立仪器和VXI系统的模块很少,并且我国目前任意波形发生 器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制 显得迫在眉睫。 任意波形发生器作为信号发生器家族的一个新成员,技术发展十分迅速,市 场份额也日渐扩大,其状况和地位有如示波器家族中的数字存储示波器,以美国 TEK公司为代表的国际各大电子测量仪器公司,其任意波形发生器产品已经纷纷形 成系列,开始逐步取代传统的函数发生器,可以说任意波形发生器已经成为信号 源的发展方向。2 第一章绪论1.3本论文研究的主要内容本论文所做工作是“基于DDS技术和FPGA的任意波形发生器设计”研究项目 中的一部分,研究的主要内容如下: 1.研究设计任意波形发生器的上位机操作界面,完成操作界面运行程序和正 弦波、方波、三角波、锯齿波及手绘任意波形数据生成处理程序的设计。 2.基于DDS频率合成器的基本原理,用FPGA实现DDS结构的数字部分(即 相位累加器与波形RAM)及该部分与单片机的接口电路。 3.设计实现上位机与任意波形发生器硬件模块的数据传输IJSB接口,包括接 口硬件电路及配合硬件电路实现USB数据通信的相关软件程序的设计。 “基于DDS技术和FPGA的任意波形发生器设计”研究项目中关于数模转换、 低通滤波、电源模块等其它硬件电路的设计工作由本专业另一位硕士研究生完成。 电子科技大学硕士学位论文第二章DDS频率合成器的基本原理2.1频率合成技术所谓频率合成技术是指由一个或多个具有高稳定度和高精度的频率参考源, 通过在频率域中的线性运算得到同样稳定度和精度的大量离散频率的技术,完成 这一功能的装置被称为频率合成器Ⅲ。频率合成器的应用范围非常广泛,特别是在 通信系统、雷达系统中,频率合成器起了极其重要的作用。随着电子技术的不断 发展,频率合成器的应用范围也越来越广泛,对其性能要求也越来越高。频率合 成器的主要技术指标01如下。 I、输出频率范围 指的是输出频率的最小值和最大值之间的变化范围。 2、频率稳定度 指的是输出频率在一定时间间隔内和标准频率之间的偏差,分为长期、短期 和瞬间稳定度三种。 3、频率分辨率 指的是输出频率的最小间隔。 4、频率转换时间 指的是输出由一种频率转换为另一种频率的时间。 5、频谱纯度 频谱纯度以杂散分量和相位噪声来衡量,杂散分为谐波分量和非谐波分量两 种,主要由频率合成过程中的非线性失真产生;相位噪声是衡量输出信号相位抖 动大小的参数。6、调制性能指的是频率合成器是否具有调幅(AM)、调频(FM)、调相(PM)等功能。 频率合成技术在20世纪30年代开始提出,其发展已经有70多年的历史。在 这70多年中,大致可以分成三个发展阶段:直接式频率合成技术,锁相环频率合 成技术和直接数字频率合成技术(DDS)。 直接式频率合成技术就是用倍频、分频和混频电路对一个或几个基准频率进 行加、减、乘、除运算产生所需要的频率信号,并通过窄带滤波器选出,这是最4 第二章DDS频率合成器的基本原理先出现的一种频率合成类型的信号源。其原理简单,易于实现,频率范围宽,频 率转换速度快,可以达到微秒级,频率分辨率较高(可达10~Hz),工作稳定可靠, 但是是寄生输出大,需要大量的模拟元件,结构复杂、体积大、成本高,不能产生任意波形。锁相环(简称PLL)频率合成技术也叫间接式频率合成,所使用的电路较直接 式频率合成简单,它主要是将含有噪声的振荡器放在锁相环路内使它的相位锁定 在希望的信号上,从而使振荡器本身的噪声被抑制,使它的输出频谱大大提纯。 锁相环频率合成技术提供了一种从单个参考频率获得大量稳定而准确的输出频率 的方法,并且频率输出范围宽,电路结构简单,成本低。但是,锁相环频率合成 技术也有其固有缺点。由于它采取闭环控制,系统的输出频率改变后,重新达到 稳定的时间也就比较长,一般为毫秒级,所以锁相环频率合成器要想同时得到较 高的频率分辨率和转换率非常困难,同样也不能产生任意波形。 直接数字频率合成技术的基本原理就是利用采样定理嘲,按一定的相位间隔, 将待产生的波形幅度的二进制数据存储于高速存储器作为查找表,用参考频率源 (一般为晶体振荡器)作为时钟,用频率控制字决定每次从查找表中取出波形数 据的相位间隔,以产生不同的输出频率,对取出的波形数据通过高速D/A转换器 来合成出存储在存储器内的波形。与其它频率合成方法相比较,直接数字频率合 成技术的主要优点是易于程控,输出信号频率转换时相位连续,输出频率范围宽、 稳定及准确度高,其频率准确度一般可达到10。或更好水平。分辨率高,其分辨率 可以达到10。Hz,甚至更低,而且频率转换速度快,可小于lOOns。除此之外,由 于DDS技术是利用查表法来产生波形,只要改变查找表中的数据,就可以产生任 意波形。所以它不仅能产生正弦、余弦、方波、三角波和锯齿波等常见波形,而 且还可以根据需要利用各种编辑手段,产生传统函数发生器所不能产生的真正意义上的任意波形。DDS技术理论早在上世纪70年代就被提出,由于硬件技术的限制,当时没能 得到广泛应用,但是随着计算机软硬件技术和大规模集成电路技术的飞速发展, 可编程逻辑器件得到了广泛应用,DDS技术的优越性已逐步显现出来”。FPGA就是 一种新型的高速高密度大规模可编程逻辑器件,由于DDS是一种全数字化的频率 合成方法,所以DDS系统的大部分数字部件都可以方便地集成到一块FPGA芯片上, 且其开发有强大的EDA软件技术支持,开发方便,开发周期短,主要设计过程均 在计算机上通过软件编程实现,调试方便,修改程序文件即相当于修改电路结构, 而且系统主要功能可以通过软件进行仿真,降低了系统设计的风险,所用部件少,5 电子科技大学硕士学位论文大幅度地减少了印刷电路板的面积和接插件,降低了装配和调试费用,部件少、 连线少,提高了系统的稳定性和可靠性,降低了功耗,提高了工作速度,大幅度 地减小了产品的体积和重量。即FPGA芯片十分适宜于构成DDS系统。2.2DDS的基本原理DDS是一种全数字的频率合成方法,其基本结构主要由相位累加器、波形ROM、D/A转换器和低通滤波器四个部分构成,如图2-I所示。图2-1 DDS的基本结构图2-1中相位累加器结构如图2-2所示。图2-2相位累加器结构示意图相位累加器由一个N位的加法器和一个N位的寄存器构成,通过把上一个时 钟的累加结果反馈回加法器的输入端而实现累加功能。从而使输出结果每一个时 钟周期递增K。这里N为相位累加器的字长,K称为频率控制字。 波形ROM示意图如图2-3所示。图2.3波形ROH示意图当ROM地址线上的地址(相位)改变时,数据线上输出相应的量化值(波形 幅度量化序列)。需要指出的是因为波形ROM的存储容量有限,相位累加器的字长 一般不等于波形ROM地址线的位数,因此在这个过程中会引入相位截断误差。 D/A转换器将波形ROM输出的幅度量化序列转换成对应的电平输出,将数字6 第二章DDS频率合成器的基本原理信号转换成模拟阶梯信号。低通滤波器对D/A转换器输出的模拟阶梯信号进行平 滑处理,形成平滑的波形输出。 根据DDS的结构,可以推出以下一些结论。频率控制字K唯一地确定一个单频模拟余弦信号s(O=cos(260的频率二,Jo21石,c置,(2-1)当K=I时,DDS输出最低频率.疋/2”,这也是DDS的频率分辨率,所以可以看 出,当N不断增加的时候,DDS的频率分辨率可以不断提高,当然在实际设计中N 的增加受到种种因素的制约。但是就目前的技术水平来说,已经可以产生很高的频率分辨率了。那么,K的最大值是多少昵,能不能取到2“?实际上D/A转换器件的输出波 形相当于一个连续平滑波形的采样,采样率就是.‘,这样根据奈奎斯特采样定理, 采样率必须大于信号频率的2倍。也就是说,D/A转换器的结果要完全恢复的话, 输出波形的频率必须小于正/2。一般来说,由于低通滤波器的设计不可能达到理 想情况,即低通滤波器总是有~定的过渡带的,所以输出频率还要有一定的余量, 一般来说,在实际应用当中,DDS的输出频率不能超过0.4f。7 电子科技大学硕士学位论文第三章FPGA实现的波形数据接收模块设计3.1FPGA及其集成开发环境FPGA是英文FieldProgrammable GateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、PLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。ALTERA公司是世界上 最大的可编程器件供应商。下面对ALTERA公司的FPGA芯片及其提供的集成开发环境作一介绍。 3.1.1,FPGA芯片ALTERA公司的FPGA经过多年的发展,已经形成了从低端到高端的一系列产品, 从过去单一的FLEXIOK系列,发展到现在的多个系列。包括从FLEXIOK系列基础 上发展起来的ACEXlK系列,以及更大规模和更强功能的APEX系列,规模较大, 性价比又较高的Cyclone系列,以及高端的Stratix系列,规模从最初的几千门 发展到百万门以上。这些系列的FPGA中,普遍采用了许多新技术,如低电压供电, IO电压与核电压分开。从FL既lOK系列比较新的型号开始,核电压一再降低,出 现了核电压是3.3v、2.5V、1.8v、1.5V的一系列产品。10电压可根据用户的需要 自己设置,可以满足和不同接口之间的电平要求。片内集成了大容量的存储器, 大大方便了电路的设计。此外,为了进一步提高FPGA的性能,在一些高端的FPGA 芯片中集成了DSP处理单元,甚至可以内嵌微处理器软核,在FPGA中构建出微处 理器,使很复杂的电路都能在一块FPGA中实现。为了提高FPGA的工作速度,从 ACEXlK系列开始,ALTERA的FPGA芯片普遍采用了锁相环技术。时钟可以通过FPGA 内建的锁相环进行倍频,使得较慢的外部时钟在FPGA内部驱动高速电路工作。为 了改善输入输出性能,ALTERA公司比较新的FPGA都提供了差分输入管脚,i/o脚 能输入的最高频率的信号可以高达600Mltz。随着FPGA技术的不断发展,基于FPGA 的电路设计将会变得越来越简单可靠。 本设计选用了ALTERA公司Cyclone系列的FPGA芯片EPlC3T144C8,TQFP封 装,144个引脚。Cyclone系列FPGA器件的一些典型参数“”如表3-I所示。8 第三章YPGA实现的波形数据接收模块设计 表3-1 特征 逻辑单元数 M4KRAM块数(128×36bits/块) 总RAM位数锁相环数Cyclone系列芯片性能参数EPlC3 2910 13 59904lEPlC4 4000 17 78336 2 301EPIC6 5980 20 92160 2185EPlCl2 12060 52 239616 2 249EPIC20 20060 64 2949122最大用户i/o引脚数104301每个Cyclone系列FPGA器件包含一个逻辑阵列(Logic Array),用以实现通 用的逻辑。逻辑阵列由逻辑阵列块(LAB)组成,每一个LAB包含10个逻辑单元 (LE)和一个局部互连资源。一个LE包含一个4输入LUT,一个可编程触发器和 一个给进位和层叠功能专用的信号通道。10个LEs可以用来实现中等规模的块状 逻辑,也可以交叉组合多个LABs来实现更大的逻辑块;另外,每一个Cyclone系 列FPGA器件包含一个嵌入式存储器(Embedded memory),用以实现存储器和专用 的逻辑功能,嵌入式存储器由多块M4K存储器块组成,可以用来实现RAM、ROM、 双口RAM及FIFo的功能,当用来实现RAM时,可以根据需要将每个M4K存储器块配制成4096×1、2048×2、1024×4、512×8(或512X9 bits)、256×16(或256×18bits)128×32(或128×36 bits)等多种结构,满足不同的存储结构需要,可以使用多个M4K存储器块产生更大容量的RAM;在Cyclone内部,信号通过 快速通道(FastTrack)互连,快速通道是一系列的快速连续的行和列通道(RowInterconnect和Column Interconnect),并且这些通道在行和列方向上贯穿了整个器件;每一个I/o端口由一个分布在快速通道互连的行和列的末端的I/o元 件(IOE)馈送。每一个IOE包含一个双向的I/0缓冲器和一个触发器。这个触发 器可以配置为输入或者输出寄存器,并且可以馈送输入信号、输出信号和双向信号。要使FPGA芯片实现用户定义的逻辑特性,需将设计好的逻辑电路配置到FPGA 器件中。FPGA器件的配置方法如表3―2所示。表3-2 FPGA器件的配置方法 配置方法配置芯片EPCI、EPC2、EI,c1441数据来源 BitBlaster、ByteBlaster、ByteBlasterMV下载电缆 并行数据源并行数据源被动串行方式 被动异步并行方式 被动异步并行方式 JTAG方式BitBlaster或者ByteBlasterMV下载电缆或者是微处理器用Jam或JBC 文件进行配置9 电子科技大学硕士学位论文由于ALTERA公司的FPGA器件为SRAM的编程方式,FPGA掉电后,用户在其上 设计的逻辑特性将不能保存。所以通常情况下,在硬件调试的过程中,一般使用 下载电缆进行下载,而当调试完成后,要用配置芯片对FPGA进行配置,配置芯片 在每次系统上电以后自动将配置文件加载到FPGA芯片中形成电路。图3一l所示为 用配置芯片配置FPGA的典型电路m1。图3-1 3.1.2FPGA芯片配置电路FPGA的集成开发环境ALTER&公司在推出各个系列的FPGA芯片的同时,也提供了相应的开发软件。 在这些软件平台上,我们可以按照我们的需要进行电路设计。ALTERA提供的软件 平台常用的主要有两种,一种是Max+PlusII,另一种是QuartusII。Max+PlusII 出现的时间比较早,主要支持FLEXIOK及ACEXlK系列的FPGA。Quartusll支持的 FPGA的种类要多得多,QuartusII3.0以上的版本几乎支持ALTERA现有的所有FPGA,和Max+PlusⅡ相比,增添了许多新的功能,操作界面也更加友好。象Max+Plus II和Quartus II这样的软件开发环境称为集成开发环境。所谓集成开发环境就是把多种开发工具集成到一个系统中,Max+Plus II和Quartus II集成了从设计 输入、编译、综合、适配最后形成下载文件以及在线配置FPGA这些电路设计实现 过程中所需的所有工具,并且还可以对设计的电路进行仿真。也就是说,只要有 了这个集成开发环境,就可以完成FPGA开发过程中的所有工作。此外为了方便设计,Max+Plus II和Quartus II还提供了一些常用电路如计数器、存储器、加法器、乘法器等LPM模块,用户在开发过程中,只需要直接调用这些模块即可。除了这 些免费的LPM模块,ALTERA公司还开发了许多IP核有偿地提供给用户使用,这些 IP核有的功能是非常复杂和强大的,包括了很多象通信系统这样复杂的模块。利 用这些IP核进行设计将大大简化设计开发过程,缩短开发周期。10 第三章FPGA实现的波形数据接收模块设计本设计中使用的软件平台是QuartusIl4.1。QuartusII是ALTERA公司第四代 可编程逻辑器件开发软件,提供了一个完整高效的设计环境,非常容易适应具体 的设计需求,同时QuartusII开发软件提供了多操作系统版本,可以提供易用的设 计输入、快速的编译和直接易懂的器件编程。通过PowerFit技术和LogicLock增 强技术提高了设计的效率,支持百万门级设计。OuartusII软件支持ALTERA公司 现有的几乎所有的CPLD和FPGA芯片的开发。设计输入方式有原理图输入,设计 框图输入,AHDL、VHDL和VerilogttDL语言输入。支持管脚分配编辑功能,具有强 大的逻辑综合功能,支持功能仿真和定时仿真,具有定时分析功能,进行自动错 误定位,器件编程和校验。QuartusII还提供和其它EDA工具的无缝接口,可以在 QuartusII集成环境中自动运行其它EDA工具。quartusII可以识别EDIF网表文件、 VHDL网表文件和VerilogHDL网表文件,并且可以产生这些网表文件,为其它EDA 工具提供了方便的接口。QuartusII软件提供了图形化的用户接口,并且提供了包 含图解的在线帮助系统。QUartus II系统包含有一个集成设计环境,包括从设计输 入开始到器件编程的每一步。设计者可以在层次化的项目管理中组合各种不同类 型的设计文件,可以为每一个模块选择最佳的设计输入方式。可以首先使用Block Editor来产生框图,而产生的这些框图可以在设计的顶层来描述系统结构,然后使用其它框图、原理图、AHDL设计文件(.‘tdf)、E1)IF输入文件(.edf)、VHDL设计文件(.vhd)和VerilogHDL设计文件(.v)来产生底层的设计元件。架构独立 的设计输入在设计逻辑结构的时候不需要担心目标器件的实现问题。3.2接收波形数据各功能模块的实现上一章介绍了DDS的基本原理和结构,用FPGA实现的任意波形发生器还是基 于DDS的基本原理。只是为了实现任意波形发生器的任意性,DDS基本结构中的 ROM要换为数据可以改写的RAM,这样,通过与RAM的接口电路将波形RAM中的数 据进行更新,就可以实现波形发生器的任意性。下面分控制部分、相位累加器、 波形RAM等几个部分来叙述任意波形发生器数据接收模块的实现。3.2.1控制模块设计这个部分主要解决DDS与单片机的接口问题。在FPGA的实现中,主要设计了 三个模块,一个是输入寄存器模块,用于接收单片机写入的频率控制字;另一个 为地址选择模块,单片机根据不同的地址来选择FPGA中各模块进行工作;第三个11 电子科技大学硕士学位论文是地址锁存模块,用于解决单片机P0口地址和数据线复用的问题。 输入寄存器模块主要是为了接收单片机写入的频率控制字,在设计中,DDS采 用了32位的相位累加器,选用的是8位单片机,这样,对于一个频率控制字,单 片机要分4次分别写入4个字节。基于这样的要求,设计了输入寄存器模块如图3―2所示。图3―2输入寄存器模块图Din[7..0]是该模块与单片机数据线的接口,clr是低电平异步清零,eN是高 电平使能,clk为数据写入时钟,dout[31..0]是寄存器输出的32位频率控制字。 该模块工作过程为:当en为高电平,clr也为高电平时,clk的上升沿将输 入的8位数据锁存进该模块中,当锁存完4个字节的数据后,自动将该四个字节 的数据按照先写入的在高位的顺序组合成一个32bit的数据输出到dour[31..0]E。图3―3为该模块的时序仿真波形。十lremem {yalu。.. 68.曩。.B l4舻++,,40.on%,80.o M120.p n,~160.1∞.525一n5clk广1厂1广1: :;;: ;,nr]nr1门n广1广1广1几n r]r]_i l:ldrB OB l:;;;:;;:}l;{}}:::}:。一;}l(il}}l}}囝din 团40utH∞M咖...哑ⅪⅨ霉匝耀Ⅸ雹匝i 000130000::X01020304:孽趣啦塑窭堙嚷西童嘲{;;} j;i i il}l ll};{:}:i(30000000{图3-3输入寄存器模块工作时序仿真波形该模块设计的WlDL语言描述如下:library ieec:useieee,std_logic_1164,alh ieee.std_logie_unsigned.all:useentity frere932 is12 第三章FPOA实现的波形数据接收模块设计port(din:in std_logic._vector(7 downto∞:dout:out std_logic__vector(31 downto o); clr:in std_logic; en:in std logic; clk:in sta logic);end frere932:architecturebehav offrere932 issi舭albegintemp:std logic vectoK23 downto 01;proccss(dr,dk,∞)variable count:integer range 0to3:=0:be#n itlclr='0')thendout<=?’00000000000000000000000000000000”:elsif(clk'ev葫t and clk=-'1.)then if(en='lgthencm countiswhen O=>temp(23 downto 16、《=din;count:=count+l; when1-->temp(15downtoS)<--din:count:=e,ount+l; when 2=>temp(7 downto O)<--dim count:=count+l; when 3=>dout<--temp&dim count:=0, end else count:=O; endif; endif: endprocess 13ca8e: 电子科技大学硕士学位论文end behav;地址选择模块比较简单,直接用一个3―8译码器实现地址选通的功能,如图3―4所示。图3-4地址选择模块各模块地址分配如表3-3所示。表3-3各模块地址分配表C0OCl X 0 0lC2X 0 1选通模块 频率寄存器及相位累加器件清零 频率寄存器使能 波形RAM写使能 波形RAM读使能1 l1O 11l波形RAM读时钟使能从图3-4可以看出,74138的使能端接到CS信号上,这个信号就是整个任意 波形发生模块的使能信号,只有当CS信号为低时,才能对各个模块进行操作。 地址锁存模块主要解决单片机PO口的分时复用问题。本设计选用的单片机为 5l系列单片机,其P0口既作为数据口,又作为地址总线的低8位,因此在使用时,需要将地址信号从分时复用的地址擞据总线中分离出来。本设计选用8D锁存器74LS373来作地址锁存器,如图3-5所示。14 第三章FPGA实现的波形数据接收模块设计■“图3-5 74LS373作地址锁存器对于74LS373,当三态门使能信号OEN为低电平时,三态门导通,允许Q1―Q8 输出,OEN为高电平时,输出悬空。当74LS373用作地址锁存器时,应使OEN 为低电平导通输出,此时,锁存使能端G为高电平时,输出Q1―Q8状态与输入 D1-D8状态相同;当G发生负跳变时,输入端数据DI~D8锁入Ql,q28。因此在 使用74LS373时,51单片机的ALE信号可以直接与74LS373的G相连。3.2.2相位累加器的设计按照设计要求,任意波形发生器的频率分辨率要达到lOmHz,输出最大频率要 达到15MHz,同时考虑到FPGA本身的特性(对于多位的累加器,FPGA的工作速度 是受到限制的),该任意波形发生器采用的系统时钟是40MHz,相位累加器为32bit,这样由吮m=正/2”可得兮二=9.31x10-3Hz一10mHz。本设计选用的FPGA器件是EPIC3T144C8,通过仿真,当直接采用32bit累加器的时候,系统时钟最大只 能达到约25姗z。显然是达不到设计要求的,所以必须改进相位累加器的结构,使 之达到更高的工作速度。在时序电路设计中为了提高工作速度,流水线结构是一 种常用的设计方法。累加器采用流水线结构来实现,简单而言,就是把一个位数 很长的加法,拆成N个位数较短的加法,在N个时钟周期内做完,然后输出结果, N就是流水线的级数。采用流水线结构以后,由于加法器的字长变短了,对于FPGA 来讲,加法器字长变短,对于提高工作频率是十分有帮助的。当然,流水线结构 的使用,并不能无限制地提高电路的工作速度,这是因为,流水线结构是一种用 电路规模换取工作速度的设计方法,提高工作速度的代价是电路设计的复杂化。 流水线结构累加器要比普通的累加器结构复杂得多,由于累加不在一个时钟周期 内完成,内部需要大量的寄存器保存中间变量。随着流水级数的提高,电路复杂15 电子科技大学硕士学位论文程度将大大增加,当电路的复杂程度达到一定量级的时候,流水线所带来的性能 改进,和电路本身由于结构复杂所带来的性能下降相抵消的时候,流水线结构就 不再具有提高电路工作频率的作用了。 对于不同的器件来说,采用多少级流水对性能的提升比较大要通过仿真试验 才能碍到一个比较肯定的值。 下面详细介绍一下,累加器的流水结构是如何实现的。一个字长为N的累加 器可以分成m个n位的累加器来做,则累加器字长为N=mXn,结构如图3-6所示 (以N=32,m=8,n=4为例)。由于m个n位的累加器之间存在进位关系。所以显 然不能在一个周期内全部作为。这样就采用流水的思想,将高位的累加器相比低 位的累加器延时一个时钟周期做累加,这样等高位累加器进行累加的时候,低位 累加器已经计算出了进位值,当然为了保证输出的正确性,低位累加器的输出结 果必须做相应的延时后再输出,这样可以保证和高位累加器结果在同一时刻输出。 这样做的结果是,一个值进入累加器后,要经过m级的延时,最高位累加器的结 果才能计算出来,而最后的结果必须等最高位累加器计算出结果后才能输出。这 也就是说,输入加入后要经过nl级的延时才能得到输出结果。但是这并不影响DDS 相位累加器的工作。DDS累加器输出的相位序列,除了有m个时钟周期的延时之外, 结果不会发生任何变化,而工作速度却大大提高了。运用流水线结构对相位累加 器进行设计,当m=8、n=4的情况下,相位累加器的工作频率是最高的,达到了约 70MHz“1,已经达到了设计要求。“】~I:r鍪IlIIaI,,o】图3-6流水线累加结构示意图图3-6中D4为4位D触发器,其设计模块如图3-7所示,FA为4位加法器,16 第三章YPGA实现的波形数据接收模块设计设计模块如图3-8所示。通过从QuartusII的可调参数元件库中直接调用元件并修 改相关参数生成这两个模块。图3-74位D触发器模块图a-84位加法器模块图3-95位D触发器模块D4与c结合模块为5位D触发器,分成成了4位和1位共两组,设计模块如 图3-9所示。该模块设计的VHDL语言描述如下:library ieee;useieee.std_logic一1164.all; ieee.std_logic_unsigned.all;useentitydff5 isdowntoport(din:in std_logic_vector(30);dout:out std_logic_vector(3 downto 0); x:in std―logic;y:out std logic;clr:in std-logic; clk:in std_logic);end dff5;architecture behav of dff5 isbeginprocess(clr,clk)beginif(clr-,1’)theny<=’0’; dour<=”0000”:17 电子科技大学硕士学位论文 elsif(clk’eventy<=x; and clk=’1’)thendout<=din; end if; end process;end behav;图3―10是利用上述4位D触发器模块、4位加法器模块、5位D触发器模块 作为基本元件,采用原理图输入的方法设计的FPGA实现8级流水结构相位累加器 模块。剜图3一10流水累加器模块图下图3―11是该模块的内部结构示意图。图3-11流水线结构累加器内部结构示意图该模块的设计参照图3-6的结构进行,不同之处是:由于相位累加器只用高 12位去寻址,所以低位上为了和高位结果同时输出而做延时作用的D触发器件均18 第三章FPGA实现的波形数据接收模块设计被去掉了。这样做的结果是,相位累加器输出的低20位会因为提前输出而混乱, 但是由于高12位的输出一定是正确的,这样做既节省了资源,对结果又没有任何 影响。仿真结果证明假如不用流水线结构,32bit相位累加器工作频率最高达到约 25MHz,消耗的资源是82个LEs,而用了8级流水线结构后,工作频率最高达到了 约70MHz,资源消耗为186个LEs。可见在资源上的消耗换来了在性能上的极大提高。。流水线结构累加器时序仿真结果如图3―12所示。Vd饥..0Pj―4Qo.Qns,“+480.o一’…。:一560.p7n≤。一,7瓮640.P一,j…,j。7礁嚣玎锄eelk暑0 B 0dr 园&in}ll{l|{l{i{l!}l}i i}l l{l}l{}{|{l l|xl:l{lH∞1...:oolpoocoil{!‘l;;{;;{00200000l;ll}囝do砒H咖图3―12流水线结构累加器时序仿真图由图3一12可以看出当输入数据确定后,输出结果要经过8个时钟周期的延时 后输出,这是因为采用了8级流水结构。采用多少级流水结构,输出就会延时多 少个周期。同时也说明,对于输入数据切换来说,该系统会有8个时钟周期的延 时,这是累加器采用流水线结构所不可避免的后果。事实上目前许多DDS专用芯 片由于也采用流水线结构,所以本身也存在这样的问题。由于系统时钟为40MHz, 8个时钟周期的延时实际上还是很小的,在一般的应用场合下也是可以接受的。由 于输出的低20位未用,被省略了,只用了输出的高12位,所以仿真波形中只有 高12位的输出结果。从输出结果来看,高12位的输出值是没有错误的,与设计思想吻合。3.2.3波形RAM的设计这是一个相对简单的模块。首先要确定波形RAM的深度和字长,由于任意波 形发生器设计中选择的DAC的字长是8位,很明显波形RAM的字长也应该是8位; 由于选择的地址线位数为12位(即相位累加器输出的高12位),寻址空间为4K (4096)个单元,则设计的RAM存储空间应为4096X8bit=32768bits,由于本设 计所选择的FPGA内部RAM最大可配置为59904bits,完全可以满足32768bits的 RAM空间设计。所以波形RAM设计为字长8位,地址线12位。 针对任意波形发生器与普通DDS的不同,波形RAm的设计主要要求,RAM具有19 电子科技大学硕士学位论文读写两个端口,这样可以通过两套地址系统,方便地进行RAM内容更新,即对RAM 的写操作;波形幅度量化数据的输出,即对RAM的读操作。结合ALTERA公司FPGA 的特点,选择了EPIC3T144C8这个芯片内部的双口RAM来实现这个功能,如图3-13 所示。图3―13双口R删示意图芯片内部的双口RAM具有读地址和写地址两组地址线,数据线也分成了读数 据线和写数据线两组。这样波形RAM的设计就非常简单了,将写数据线、写地址 线和单片机的数据线、地址线相连,用单片机更新RAM中的数据;将读地址线和 读数据线分别与相位累加器的输出和DAC的数据输入相连,读数据线上即输出了 波形幅度量化数据。3.2.4FPGA实现的总体电路至此,为实现波形数据的接收,FPGA芯片中所要实现的主要电路模块设计已 经介绍完毕,FPGA中所实现的各电路模块连接关系如图3-14所示(图中各主要 模块均已在上述内容中描述)。输地址选择槿块 图3―14 FPGA实现的电路示意图20 第四章上位机操作界面及波形数据生成第四章上位机操作界面及波形数据生成本设计利用L曲windows/cvl7.0在上位机开发了一个仪器虚拟操作界面,实 际上也就是生成任意波形数据的操作界面,通过在操作界面上选定要输出的波形 种类和参数,或者根据需要手动绘制一个任意波形,产生波形数据,同时实现了 对任意波形发生器的上位机操作。4.1开发平台LabWi ndows/CVLabWindows;/cVI(CForVirtualInstrument)是美国NI公司开发的Measurement Studio软件组件中的一员,是32位的面向计算机测控领域的虚拟仪器软件开发平台,可以在多操作系统下运行,以ANSIC为核心。它将功能强大、 使用灵活的c语言与用于数据采集控制、分析处理和显示输出的测控专业工具有 机的结合起来,它的集成化开发环境、交互式编程方法、函数面板和丰富的库函 数大大增强了c语言的功能,为熟悉C语言的开发设计人员编写检测系统、自 动测试系统、数据采集系统等应用软件提供了一个理想的开发环境。已经成为测 控领域最受欢迎的开发平台之~,并且已经得到广泛地应用。4.1.1LabWindows/CVl的特点LabWindows/CVI作为一个优秀的软件开发平台,和其它虚拟仪器开发工具相 比,具有如下特点:l-交互式的程序开发Labwindows纪Ⅵ将源代码编辑、32位ANSI C编译、连接、调试以及标准 ANSI C库集成在一个交互式开发环境中,采用简单直观的图形用户界面设计,支持“所见即所得”的可视化交互技术,便于设计图形用户界面(GUI),利用函数面 板输入函数的参数,采用事件驱动方式和回调函数方式的编程技术,有效地提高 了工程设计的效率和可靠性,且编程方法简单易学。 2.功能强大的函数库LabWindows/CVI提供了丰富的函数库,如接口函数库、信号分析处理函数库、Windows SDK函数库等,利用这些函数库可以轻松地实现复杂的数据采集和2l 电子科技大学硕士学位论文仪器控制系统的开发。同时,LabWindows/cVI附加了各种功能的软件开发包,如 数据库软件包、Internet软件包、小波分析软件包等,大大增强了LabWindows/CVI 的性能。 3.灵活的程序调试手段LabWindows/CVI提供了单步执行、断点执行、过程跟踪、参数检查、运行时内存检查等多种调试手段。 4.高效的编程环境LabWindows/CVI以其面向虚拟仪器的交互式开发环境,满足了用户对软件不断变化的需要,在设计中,可以快速创建、配置并显示测量。可以自动生成源代 码框架,用户只需在自动生成的源代码框架中添加所需实现的功能语句即可。 5.开放式的框架结构在Lab Windows/CVt环境中,提供大量与外部代码或软件进行连接的机制,可以结合使用标准的ANSI C源文件、obj文件和动态连接库(DLL)、动态数据 交换(DDE)、ActiveX等。还可以将软件中的仪器驱动库与其它标准c编译器结合 使用,无需更改开发工具。同时可以在不同的工作小组之间共享函数模块和虚拟 仪器程序。 6.集成式的开发环境LabW'mdows/CVI是集成的开发环境,可用于创建基于DAQ、GPIB、PXI、VXI、RS.232/485和以太网的虚拟仪器系统,使得不懂总线标准的开发者也能编制 驱动不同的总线标准接口设备与仪器的驱动程序。支持常用TCP/IP网络协议,方 便网络、远程测控仪器的开发。这一开发方式结合了交互式、简单易用的开发方 式与ANSIC的强大编写功能和灵活性。LabWindows/CVI中的交互式开发工具和 函数库可以轻松实现自动化测试系统、实验室开发、数据采集监视项目、验证测 试和控制系统的设计。4.1.2LabWindows/CVl的文件类型在Lab Windows/CVI软件平台中设计完成的虚拟仪器软件由4个类型文件组成,如图4―1所示。 第四章上位机操作界面及波形数据生成图4-I Lab Windows/CVI的文件类型宰.prj文件为所设计的工程项目文件,包括乖.uir文件、}.c文件和丰.h文件。 木.c为标准c语言源程序文件,文件由三部分构成,即头文件、主程序(Main) 和控件的回调函数(CallBack),其结构和C语言程序结构一致。木.uir为用户界 面文件,是虚拟仪器的面板文件,类似vB或VC中的窗体文件,包含仪器面板和 面板中的所有控件及每个控件的属性设置(如控件名称、对应的回调函数名等), 每个控件都有相应的触发事件,当触发事件(如用鼠标左键单击控件)发生时, 将调用相应的回调函数,完成相应的功能(如完成数据处理、显示等)。书.h为头 文件,与C语言中的宰.h结构完全一致,在LabWindows/CVI中,拳.h文件是自动 生成的,当设计完%.uir文件后,会自动生成木.h。4.1.3 LabWindows/OVI的事件驱动机制在LabWindows/CVI中设计一个用户接口,实际上是在用户计算机屏幕上定义 一个相当于物理仪器面板的软面板文件,它由各种控件(如命令按钮、开关、指示 灯等)构成。用户选中这些控件就可以产生一系列用户接口事件。例如,当一个用 户单击一个按钮,就会触发一个用户接口事件,并传递给开发者编写的C语言驱 动程序中对应的函数。这是运用了Windows编程的事件驱动机制。Windows下的事 件很多,但大多数都很少用。在Lab Windows/CVl中,也只有几种事件需要识别 处理。事实上,在Lab Windows/CVl的图形用户界面上一次操作就会产生多种接 口事件,如用鼠标单击命令按钮将触发下列事件,驱动应用程序去做相应的处理:EVENT GOTFocUS事件:如果命令按钮处于非激活状态,单击后将激活该控件;如果按钮本身处于激活状态,则获取输入并产生一GOT FocUS事件。EVENT LEFTCLICK事件:在命令按钮或其它控件上单击鼠标左键就会产生LE盯CLIcK事件,LabWindows/cvI用户接口控制项能识别鼠标的左击、右击、左双击、右双击事件。EVENTCOMMIT事件:当用户松开鼠标键,就会产生一个COMMIT事件,表明用23 电子科技大学硕士学位论文户对某控件完成一个确定的事件。 还有其它许多事件类型,这里就不再一一介绍。 LabWindows/CVl中可用的各种类型的控制项,在软面板编辑器中将显示不同 类型的信息,并产生不同的接口事件,程序开发人员编写c程序来处理这些事件,在Lab Windows/CVI中提供了两种基本的事件驱动编辑方法:回调函数法和事件循环处理法。本设计使用的是回调函数法。 所谓回调函数法是指开发者为软面板上的控件编写一个独立的函数,当触发 某个事件,就调用该函数进行相应的事件处理。如图4―2所示。用户界面(.uir)源程序文件(.c)l控件l l事件驱动-旧调函数lI 争旧调函数2I,l处理事件l l ,l处理事件2lI控件2 l事件驱动图4.2 Lab Windows/CVI的回调函数法4.2任意波形发生器的操作界面任意波形发生器操作面板软件设计是基于一个名为“波形发生器.prj”的工 程实现的,此工程主要包括以下文件。 1.用户界面文件(波形发生器.uir) 该文件的任务是对任意波形发生器的人机交互界面进行设计。 2.源文件(波形发生器.C) “波形发生器.C”由两部分组成:一部分为主函数main(),另一部分是以 消息驱动机制运行的控件回调功能函数。main()主函数完成对程序主体的控制。 控件的回调函数框架由CVI自动生成,其内部操作代码由开发者添加。当用户界 面上的控件有事件发生时,控件对应的回调函数将响应该事件,执行回调函数内 部的操作。在控件的回调中实现了全部目标设备的功能。 3.头文件(波形发生器.h) 在“对波形发生器.uir”文件存盘后自动生成“波形发生器.h”。它列出了“波 形发生器.uir”中所有面板和控件的名称以及回调函数的声明。 第四章上位机操作界面及波形数据生成4.2.1操作界面构成元素及功能设计的任意波形发生器的操作界面如图4―3所示。构成元素说明如下: L选择波形:选择要产生的波形,可以选择正弦波、方波、三角波、锯齿波和手动绘制波形。2.开始绘制、重新绘制、绘制结束:该三个命令按钮用于对手动绘制任意波形过程的控制。3,设置波形参数:选择要产生的波形后,要进行相关波形参数设置,用于控 制产生相应的波形各点的幅度数据。 4.应用:鼠标左击该按钮,则根据所选择的波形类型、设置的相关参数生成 波形各点的幅度数据。 5.波形窗口:用于显示波形和作为手动绘制任意波形的区域。当选择的波形 种类为正弦波、方波、三角波或锯齿波时,当“应用”按钮按下,波形窗口中则 按所生成的波形各点的幅度数据显示生成的波形,起到监视波形数据生成是否正 确的作用;当选择的波形为手动绘制任意时,当“开始绘制”或“重新绘制”按 钮按下,波形窗口中出现光标,此时通过按住鼠标左键拖动可以在其中绘制任意波形。6.确定:鼠标左击该按钮,则生成的波形各点的幅度量化数据通过计算机USB 接口传送到任意波形发生器下位硬件系统的波形RAM中。 7.退出:鼠标左击,结束软件运行。图4-3任意波形发生器操作界面 电子科技大学硕士学位论文4.2.2操作界面的使用特性控制任意波形发生器生成波形数据或对下位硬件系统的控制工作集成在一个 界面上进行,不用链接多级界面,操作方便。为避免操作时错误点击按钮或出现 错误设置情况,同时为了使进行每一项操作工作时相对独立,以等效于进行不同 的操作时在不同的操作界面上进行,并在一定程度上体现操作的步骤性,在进行操作界面使用特性的设计中,充分使用了“禁止一使能”机制。譬如软件运行进入操作界面后,要么需要生成波形数据,则首先需要选择波形种类,或者不需要 进行任何操作时,则需要结束软件运行,因此界面上只有“选择波形”控件和“退 出”按钮被使能,可以响应触发事件和调用控件的回调函数以完成相应的功能。 又如选择要产生正弦波后,需要进行设置幅度和设置频率参数操作,则操作界面 上只有“选择波形”、“设置频率”、“设置初相位(度)”、“应用”及“退出”按钮 可以使用,如图4-4所示。要对某个控件禁止或使能,只需要调用LabWindows/CVl 的设置控件属性函数SetCtrlAttribute()函数设置控件的DI删ED属性为“0” 或“1”即可。§日:.SetCtrlAttribute(panelHandle,PANEL―DRAWEND,^TTI{―DIMMED,0); SetCtrlAttribute(panelHandle,PANEL OK,ATTR DIMMED,1);图4-4生成正弦波的操作界面4.3波形数据的生成由于波形点的幅度数据最终要存入下位硬件系统的波形RAM中,由第三章波26 第四章上位机操作界面及波形数据生成形RAM的存储深度设计为4096个单元,每个单元的字长是8bits,因此波形一周 期采样点数为4096,波形点的幅度数据最终要量化成0~255之间的整数。生成波 形数据总体流程如图4-5所示。图4.5生成波形数据总体流程图4.3.1常规波形数据的生成这里所说的常规波形是指正弦波、方波、三角波和锯齿波,这些常规波形均 是通过调用LabWindows/CVI的信号产生函数来生成,具体如下:1.正弦波SineWave(int n,double amp,double f,double*phase,double x口)2.方波SquareWave(intdutycycle,double n,doubleamp,doublef,double*phase,doublex[])3.三角波 电子科技大学硕士学位论文TriangleWave(int n,double amp。double f。double*phase,double x[])4.锯齿波SawtoothWave(int n,double amp,double f,double*phase,double x口)在上述波形数据产生的函数形式中,对各参数的含义及调用函数生成波形数 据时所取的值描述如下: 1.n为数组的长度,表示生成多少个波形点的幅度数据,由于波形RAM的存储 深度为4096个单元,所以调用函数时,直接将其设为了4096,即产生4096个点 的波形幅度数据。 2.amp为正弦信号的幅度值,由于最终存储到波形RAM中的数据只是一个波形 幅度值的相对参数,不是任意波形发生器硬件系统输出波形的真正幅度值,而只 是为硬件电路生成波形幅度值提供依据,所以这里设定的幅度值的大小没有实在 意义,所以在调用函数时,直接将amp设定为了“1”,也相当于直接对生成的波 形幅度数据进行了归一化处理,所以在波形生成操作界面上没有“设置幅值”选项。3.phase为double型的指针变量,表示正弦信号的初始相位,单位为度,调 用函数时其值为在操作面板上设定的初始相位值。 4.f为信号频率,用“周期数/点数”的形式给出,因为对一个周期的波形采 样4096个点的数据,所以调用函数时,其值设为f/(f.4096)。 5.x为存放正弦信号的数组,调用函数时,数组长度设为4096。 6.dutycycle为方波的占空比,调用函数时其值为在操作面板上设定的占空比 的值。 截取生成正弦波、方波、三角波、锯齿波的程序段如下:GetCtrlVal(panelHandle,PANEL_FREQUENCY,&frequency);//获取频率值GetCtrlVal(panelHandle,PANEL_INIPHASE,&iniphase);//获取初相位值SineWave(n,l,frequency/(frequency*4096),&iniphase,datapoints);GetCtrlVal(panelHandle,PANEL_DUTYCYCLE,&dutycyele);//获取占空比值SquareWave(n,1,frequency/(frequency术4096),&iniphase,dutyeyele,dat― apoints);Trianglewave(n,1,frequency/(frequency*4096),&iniphase,datapoints);●…●●28 第四章上位机操作界面及波形数据生成 SawtoothWave(n,l,frequency/(frequency*4096),&iniphase,datapoints);图4-6即是产生的一个周期的正弦波。图4-6产生的一个周期的正弦波4.3.2手动绘制任意波形数据的生成手动绘制产生波形直观方便,它同时也充分体现了任意波形发生器的“任意 性”。具体操作时,当选择了波形种类为手动绘制波形后,选中“开始绘制”菜单 项,将鼠标移动到图形窗口中需要的起始位置,然后按下鼠标左键,不放,拖动 鼠标在波形显示区移动,当到了合适的位置时,放开左键,则一次绘制过程完成。 鼠标可以沿任意方向移动,可以多次绘制,直到满意为止,这时按下界面上的“绘 制结束”按钮,则一个新波形产生,此时图形窗口上对鼠标左键按下并移动不再 响应,如要重新绘制,则按下操作界面上的“重新绘制”按钮,重新开始绘制波形。图4-7是手动绘制的一个任意波形。 电子科技大学硕士学位论文图4-7手动绘制的一个任意波彤用鼠标绘制波形时,将波形窗口的坐标区作为绘图区,实现此功能最重要的是使用了mwindows/CVI中的定时控件Timer,此控件在编辑面板时可见,当程序运行时不可见。编程时先设定调用定时控件的回调函数的具体时间间隔,本软件 将其设定为了IreS。手动绘制过程中,按下鼠标左键不放,在坐标区沿任意方 向拖动鼠标,与此同时,定时控件的回调函数每lmS被触发一次,每执行一次该 函数采集一个离散点,即获取了当前光标处点的横纵坐标,这样就得到一系列的 离散点,相临离散点之间的间隔是不等的,这与用户拖动鼠标的速度有关。于是 还有许多波形点没有赋值,这样就要在相I瞻的离散点之闻插值计算出那些空缺点 的幅值。考虑到每两个相临点间的距离比较小(因为设定的调用Timer回调函数的 时间间隔较短),于是可以采用线形插值,插信计笪出来的波形是比较光滑的。图 4-8即是手动绘制波形的程序流程图。 第四章上位机操作界面及波形数据生成图4"-8手动绘制波形程序流程图从流程图可以看出,采用Timer控件和线性插值是实现手动绘制波形的两个关 键技术。即通过按一定时间间隔循环执行定时控件的回调函数以获取许多离散点 的坐标值,再通过线性插值计算每两个离散点中间的各点的坐标值。 下面截取的程序段Timer控件的回调函数T'maer (wam.左标鼠取获过通,)键按下过程中得到的各个离散点的横纵坐标值,然后在每两个点之间进行线性插 值,最终得到整个波形所有点的坐标值。在每次进入函数Timer(warD_先,时1得到当前点的坐标值nowX,nowY,然后根据前一次进入函数获取的oldX,oldY, 先调用库函数PlotRectangle()将两点之间的波形清除,然后在此两点之间连线, 需要说明的是此时的连线只是给用户一个视觉上的现象,即每两个相邻离散点之 间是线性插值,而实际的值需要在随后的程序中通过计算来获得。最后将最新的 纵坐标值nowY放入数组hand ][Yevaw_。据数形波的来原新更中if(MouseIsInCtrl(panelHandle,PANEL GRAPH,mouseX,mousey))31 电子科技大学硕士学位论文GetGraphCursor(panelHandle,PANEL_GRAPH,1,&nowX,&nowY):PlotRectangle(paneIHandle,PANELJRAPH,oldX,yMax,nowX+l,yMin,interface.ground_color,interface.ground_color); PlotLine(panelHandle,PANEL GRAPH,oldX,oldY,nowX,nowY,val_green);handjaveY[i]=nowY;if(nowX>=oldX){intervalnum=DowX--oldX-1;for(k=O;k<interval num;k++) {handjaveY[oldX+k+1]=(handjaveY[i]一handjaveY[J])/(nowX-oldX)}(k+1)+handjaveY[j];} )elset for(k=O:k<interval num;k++}{ handjaveY[abs(oldX―k―1)]=(handwaveY[j]--handwaveY[i])/(otdX-nowX)半(interval_num-k―1)+hand_waveY[i]; } }4.3.3波形数据的扩充与压缩在前面讲到波形RAM提供固定的4096*8bits的存储空间用于存放波形数据, 因此在将波形数据在发送到波形RAM之前必须将波形数据处理为4096个数据。这32 第四章上位机操作界面及波形数据生成样波形RA^I中存放的才是一个完整周期的波形数据。 波形拉伸或压缩的设计思想是一样的,关键是使用了CVI的Advance Analysis库中的Spline()、SpInterp()两个函数,以及使用了求最小公倍数的 思想,即将原始波形先插值拉伸到最小公倍数大小的长度,然后再等间隔抽取所 需要的最终点数。下面说明波形拉伸或压缩的设计思路。 设通过按下鼠标左键在波形窗口中移动,已获得了波形数据,且己存放在一 个数组中,设已获得i00个点的波形数据,郎始点为0,终止点为99的任意波 形,现将波形拉伸至终止点为4096,即将一个原来长度为N1=100个点的波形扩 充到长度为N2=4096。设数组Yl[100]保存原始波形各点的纵坐标值,Y2[1024] 保存拉伸后的波形各点纵坐标值,数组X[100]保存将原始波形展开后的各点新 的横坐标值,Y”Cloo]保存原始波形幅值的二次导数。数据扩充按以下步骤执行。 1.对于还没有进行处理的波形,每个点的横坐标依次是x[0]=O,x[1]爿, X[2]=2,…,X[99]=99,每个点的纵坐标存放在Y1[ioo]中。 2.求原始点数N1和最终点数N2的积N3=Nl*N2=409600。先将原始波形的 各点按等间隔409600拉伸。这时可以比喻为在409600整个范围内,每隔4096个 点有一个已知点,根据这些已知点的坐标值可以插值求其它点的坐标值。拉伸后 各点的横坐标值为x[O]=O,x[1]-4096,X[2]=8192,…,X[99]=405504。 3.将以上各数组代入库函数Spline(x,Y1,N1,0.0,0.0,Y”),其中x、Y1、N1 是输入参数,Y”是输出。 4.插值算法本来是用己知的100个点的横纵坐标值插值计算,每两个点之间 要插值计算4095个点,最后一个点后面还要插值计算4095个点。但这样将会浪 费许多不必要的计算,因为整个波形插值计算出来将有409600个点,而实际只需 要409600个点中的4096个点,其它的405504个点的计算就是白费的。因此,在 插值计算时,就只调需要的点进行计算,不需要的点则略过。于是调用函数 SpInterp(),每隔99个点,插值计算一个点的Y值,这样,循环4096次,即 求出了4096个点的Y值。 图4―9是进行波形数据扩充的示意图。33 电子科技大学硕士学位论文4l0.I1I2::::::199bI0 4096I8192l12288::::::::::::图4-9波形数据扩充示意图f4.05504cIIlII下面是进行波形数据扩充的程序段。old_len和new_fen分别是原始波形A 和即将扩展的波形B的长度值,分别为i00和4096。确定好原始波形和目标波形 之后,现在来构造一个虚拟波形C,该虚拟波形的长度为old_lenmnew_len,即 原始波形A的长度old_len拉伸到了它本身的new_len倍。(之所以称c为虚 拟波形,是因为在后面程序并不计算此波形每一个点的坐标值,而只是以它为基 础,计算它中间符合要求的一部分点的坐标值即可。)old』口、old―Y口分别保 存原始波形A变到长度为虚拟波形C时原波形各点现在的坐标值。dao_Y[]保 存的是波形各点的二阶导数值,通过函数Spline()获得,即该函数的最后一个 参数dao Y为函数的输出。然后,循环new_len次,每次先计算目标波形B的 各点现在在虚拟波形C中的各点的横坐标值,然后将横坐标值代入函数 SpInterp(),即可计算目标波形各点的纵坐标值new_Y[]。最后一条语句是将波 形A的终止点的纵坐标值复制为波形B的终止点的坐标值,因为终止点和起始 点一样,是不需要插值获取的,原始波形和目标波形起始终止点的纵坐标值是相 同的。至此,整个插值过程结束,数组new_Y[]中保存的即是所需要的拉伸后的 波形B的各个点的纵坐标值。old_len=wave[nowWaveNum].samples; old_X=malloc(old一1en堆sizeof(double));oldY=malloc(oid―len*sizeof(double));dao_Y=malloc(old一1en术sizeof(double)); new_Y=malloc(new len*sizeof(double)); for(i=0:i<old_len;i++){j=i术(new_len一1); 第四章上位机操作界面及波形数据生成01d-x[i]=j;01dJ[i]--wave[nowWaveNum].Y[i];) spline(old-X,old.Y,old len,0.0,0.0,dao_Y); for(i=0;i<new_len―I;i++) (xinterval=i*(old_fen―I);SpInterp(oldHx,01d-Y,dao_Y,old_len,x_interval,&new_Y[i]); } new_Y[new_len―I]=oid Y[old_len-I];4.4波形幅度数据及频率参数的处理通过上述过程,波形的4096个点的幅度数据已经生成,并存储在数组中,但 这4096个点的波形数据为双精度类型,由于波形RAM的字长是8bits,所以必须 将这4096个波形数据量化处理为0~255之间的整数,以满足数据传输和存储的 需要。波形幅度数据处理程序语句如下:for(i=O;i<4096;i++) x[i]=(unsigned int)((datapoints[i]+1)/2*255):其中datapoints[i]为处理前的数组,x[i]为处理后的数组。 另外在操作界面上设置的信号输出频率值也是双精度类型数据,第三章提到 频率控制字寄存器设计为32bits,32bim的频率控制字作为32bits相位累加器的累 加步进值,所以必须将所设定的信号输出频率值对应转化成32bits的频率控制字。 相位累加器的时钟频率为40M,根据提二章中讨论的输出信号频率值与相位累加 器时钟频率的关系(见公式(2―1)),频率参数的处理语句如下:k=(unsigned long)((frequency/40000000)木1024}1024}1024¥4):其中,k为频率控制字,frequency是在操作面板上设置的频率值。35 电子科技大学硕士学位论文第五章USB数据传输接口硬件设计计算机通过USB接口与任意波形发生器硬件模块进行数据通信,负责波形数 据及频率参数的传递。USB接口芯片选用Philips公司的USB控制器PDIUSBDl2 (以下简称D12),同时选用Atmel公司的5l系列微控制器AT89C52配合D12实现 USB数据通信功能。5.1OSB简介用USB接口实现计算机与外围设备的数据通信,需涉及到很多USB的基本概念和USB协议的内容,下面先对USB作一简单介绍。5.1.1USB的特点SerialUSB是英文UniversalBus的首字母缩写,中文含义是“通用串行总线”。其规范由微软、康柏、Intel、NEC、惠普、朗讯、菲利普等7家公司多 次修订和更新版本,1996年1月正式发布了USBI.0版本,1998年lO月正式发 布了USBI.i版本,现在最新的版本是于2000年4月发布的USB2.0。USB问世 后,已经被广泛地用在PC机及嵌入式系统上,表现出极强的生命力和广阔的应 用前景。现在USB的应用越来越广泛,一些业界人士甚至预测,在不久的将来, 在所有高、中、低速外设中,USB接口将成为极其重要的标准接口。 USB之所以能得到广泛支持和快速普及,是因为它具备下列的很多优点““: 1.低成本:USB接口电路简单,易于实现,特别是中/低速设备。 2.热插拔:可带电插拔,支持即插即用,由系统自动检测并配置插入设备。 3.易于扩展:理论上,一台主机最多可级连127个USB设备。 4.速度快:USB 1.1支持低速1.5Mb/s、全速12Mb/s两种传输速率。而 USB2.0除支持低速,全速传输以外,还支持高速480Mb/s的传输速率。 5.总线供电:USB总线可以为设备提供最大500mA的电流 6.不占用系统资源:不像ISA、EISA、PCI设备,USB设备不需要内存和I/O 地址空间,而且也不需要中断请求线路。 7.数据传输可靠:USB传输有完善的错误检测和恢复机制。36 第五章USB数据传输接口硬件设计8.支持四种类型传输方式:USB有四种传输模式:控制传输、中断传输、批 量传输、等时传输,因而可以满足不同设备的数据传输要求。5.1.2USB通信系统架构一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主 机发起的,USB设备是不能主动向主机传输任何数据的,除非获得主机的允许。 主机系统和USB设备又可以分为以下几个层次结构,如图5-l所示:点.…道。典<高==》 物理信息{jii 逻辑信息漉客户软件IiiI功能单元●―――’图5-1 USB系统主机与设备通信模型层次关系USB总线接口:USB总线接口包括USB主控制器和根集线器,其中USB主控 制器负责处理主机与设备之间电气和协议层的互连,根集线器则提供USB设备的 连接点。 USB系统:USB系统使用USB主控制器来管理主机和USB设备之间的数据 传输,另外它也负责管理USB资源,如带宽等。USB系统包括主控制器驱动、USB 驱动和系统软件。 客户软件;客户软件即应用软件,它不能直接访问USB设备硬件,而是通过 USB系统和USB总线接口与USB设备进行交互。 USB设备包含许多描述符,它们指出了一个给定设备的属性和特征。这些描 述符向主机提供了一系列关于USB设备的特征和能力的信息,用以使主机配置设 备和定位USB设备驱动程序。这些信息确保了主机以正确的方式对设备进行访 问。通常,一个设备有一个或多个配置(Configuration)来控制其行为,每个配置 包含一个或多个接口(Interface),接口指出软件应该如何访问硬件。每个接口有37 电子科技大学硕士学位论文一个或多个端点(endpoint),端点是通信管道的一个终点。图5―1显示了一个多 层次结构的通信模型,它表明了端点和管道所扮演的角色。在最低一级,USB电 缆把主机控制器与设备的总线接口连接起来。在第二级,一个控制管道把系统软 件和逻辑设备连接起来。在第三级,一捆数据管道把客户软件与一组接口连接起 来,这些接口组成了设备的功能(Function)。5.1.3USB的四种数据传输模式USB规范定义了四种传输模式“”,以满足不同的USB设备传输特性。USB数 据传输是在主机软件和USB设备的一个特定端点之间进行的。任何一个USB设 备连接上主机后,都要通过描述符向主机报告需要哪一种或几种传输模式。 控制传输(Contr01):控制传输是由USB规范定义功能的唯一一种传输类型, 它主要用来在主机和USB设备之间传输控制信息。所有的USB设备都必须支持控 制传输。 批量传输(Bulk):批量传输适用于传输数据量较大但对传输数率不是很关键 的情况,例如,扫描仪、打印机等设备。这种方式下,主控制器会保证数据正确 无误的传输,但是并不会保证一定的总线带宽,因此,如果总线传输事务繁重, 批量传输会有一定的延迟。 中断传输(Interrupt):中断传输适用于传输数据量小,但需及时得到处理的 USB设备,以达到实时的效果,例如,鼠标、键盘、游戏杆等。需要注意的是中 断传输并非真正的使用中断机制,而是主机对设备的定时查询。 等时传输(Isochronous):等时传输有保证的传输速率,但是没有错误校验, 系统会为等时传输预留一定的总线带宽,以保证连续的数据传输和相同的传输速 率,它适用于视频和音频类USB设备。 本设计采用的是USB批量传输(Bulk)方式。5.1.4总线列举(Enumerati OR)当一个USB设备插入或者拔出USB总线时,主机将会通过一个称为总线列掣161的过程来鉴别和管理设备状态可能的变化。USB设备在列举过程中响应主机的标准设备请求,通过各种描述符向主机报告设备的属性和功能,主机分析描述 符数据,并以此来配置USB设备。USB设备总线列举过程的具体步骤如下: 1.根集线器根据设备所接入端口的状态改变,向主机报告设备的插入事件。 第五章USB数据传输接口硬件设计2.主机通过询问集线器来确定状态改变的本质,当确认有设备接入总线。主 机就向该端口发送使能和复位指令。 3.在USB设备收到一个唯一的地址前,它的缺省管道仍然可以通过缺省地 址被访问。主机读取设备描述符来确定USB设备缺省管道实际可以使用的最大有 效数据载荷。 4.主机给USB设备分配一个唯一的地址。 5.主机从设备读取所有的配置描述符。 6.基于配置信息以及USB设备如何被使用,主机给USB设备指派一个配置 值。这时USB设备处于已配置状态,该配置中所有的端点都呈献出它们在端点描 述符中所描述的特征,设备配置完成。5.2USB接口模块硬件设计在USB接口设计过程中,硬件设计的工作量比起软件来说要小很多,这是由USB控制器芯片自身的功能和USB协议的复杂性所决定的。选取不同类型的USB 控制器芯片,硬件电路设计也不尽相同。在本设计中,USB接口硬件设计主要包 括USB控制芯片和微控制器接口电路设计,以及USB控制器芯片与USB电缆的连接设计。5.2.1USB接口控制芯片及微控制器选型USB接口控制芯片的选择对USB接口设计的整体方案和设计工作量有很大的影 响,因此要综合考虑各个方面的因素。目前市面上有三类USB接口控制芯片,每 一类都有各自的优缺点,选取不同类型的USB接口控制器芯片就需要有不同的设计方案。1.专门为USB设计的芯片: 这类芯片是专门为USB应用设计的,而不是在旧的芯片结构上加入USB通信 功能,因此整个芯片可以达到最优化设计,其指令集也是专门为USB操作所优化 的最佳指令集,对完成USB通信工作非常有效,但是这些专用指令集数量不多, 不能像通用微控制器的指令集一样丰富,所以它们所作的工作非常有限。这类USB 控制器芯片的典型代表是美国Cypress半导体公司的CY7c637xx(encoReT锄系列芯片和cY7C641 13(M8),以及ScanLogic公司的SLI IR。CY7C637XX和SLI lR内部分别含有专用的8位和16位RISC微控制器,哈佛结构。CY7C64113则是专39 电子科技大学硕士学位论文为全速USB应用设计的8位一次可编程微控制器。因此选取此类USB控制器芯 片必须购买其相应的开发工具,而且要重新学习其指令集,整体性价比不高,通用性不强。2.内嵌通用微控制器的USB控制芯片 内嵌通用微控制器的USB控制芯片,也可以说是在通用的微控制器的基础上 扩展了USB通信功能。这些控制器芯片的优点是开发者已经熟悉了这些通用微控 制器的结构和指令集,所以开发起来就相对比较容易。即使用户不熟悉这些芯片 的结构,但是介绍这些微控制器的书籍,以及关于它们的范例程序、开发工具等 都可以作为设计时的参考。

我要回帖

更多关于 任意波形发生器软件 的文章

 

随机推荐