




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要信号源在电子电路实验和设备检测中有着广泛的应用。随着科技的进步,现代信号源的设计越来越复杂,但一般都有固定的设计流程,并由一些基本的单元组成。本设计利用Verilite板上的FPGA来生成正弦波数据信号,再用数模转换器把数字信号转换成模拟信号。首先利用ISE开发环境用verilog语言设计相关程序,并进行编译生成bit文件,用VeriCom进行调试,用示波器观察实际波形。但是由于vercom的特点,导致设计无法全速执行,需要自己编写控制软件以代替vericom,以实现PC对FPGA的控制。关键词:信号源、FPGA、VeriCom仿真、VeriliteABSTRACTThe design of signal source has many applications in the area of electric circuit experience and equipment examination. As the development of science, the design of signal source is more and more complex. But, all is designed following the fix steps, and all is composed by the base units. This time, we will use the FPGA on the Verilite board to produce a cosine wave. Then, we use the D/A converter to transform the digital signal to the analogy signal. Firstly, we design a program using the verilog language on the software ISE. It generate a file of *.bit. After downloading it into the Verilite board, the result of the design will be simulated by VeriCom. At last, we will see the wave in an oscilloscope. Because of the character of the Vericom, the design can not implement in real speed. So we should design a program to instead the Vericom to control the FPGA by PC. Key Words:signal source, FPGA, VeriCom simulation,Verilite目 录1 引 言1 1.1 研究背景1 1.2 研究对象、目的及意义11.3 本文主要内容安排22 信号源设计原理32.1相关概念及原理的概述32.1.1可编程器件FPGA简介3 2.1.2可编程逻辑器件Spartan-3E FPGA的结构及特点3 2.1.3 FPGA开发软件ISE的简介3 2.2信号源设计思路5 2.2.1主程序设计5 2.2.2子模块设计8 2.2.3约束文件的设计9 3 使用Vericom软件进行动态仿真分析10 3.1VeriCom仿真软件的简介103.2为仿真做的准备工作11 3.2.1在约束文件中设置引脚的链接11 3.2.2时钟信号CLK013 3.2.3 load信号loadcheck133.2.3片选信号 SU_CS0143.2.4数据信号SU_DINO144 用示波器进行实际硬件测试154.1 TCL1655 D/A转换器的简介154.2硬件连接后,用示波器输出波形16 4.2.1输出的结果164.2.2对输出结果的分析185 电路的改进计划19 5.1 VeriSDK的简单介绍19 5.1.1 VeriSDK的简介195.1.2 API的简介19 5.1.3 Sbrid的简介12 5.2用Sbrid实现FPGA和PC的通信245.2.1实现过程及结果246 结论与展望27 参考文献28 致 谢29 附录A:程序见光盘附录30 附录B:外文翻译资料32- 37 -中国民航大学本科生毕业设计(论文)1 引 言1.1 研究背景在日常消费品中,数字电子产品变得日益重要。例如汽车已安装了复杂的控制系统,大多数家庭都拥有个人计算机。过去被认为是模拟电路的日常用品,如收音机、电视和电话都已经数字化。小巧的数字硬盘和MP3已经取代了用模拟信号记录声音的乙烯基唱片。随着这些变化,产品的生命周期已经缩短。在现今的百货商店里可能不到一年的时间里,所有数字电子产品已经被新型号产品所替代。传统上,电子电路设计被划分为两个主要的领域,即模拟、数字两大领域。这两大领域通常分为两门课程讲授,因此电子工程师往往只擅长其中之一。在这两个设计领域中,还有更细的专业分类,例如射频模拟设计、电子集成电路设计等。当这两个领域发生交叉时,还有混合信号设计。本文涉及的范围即为数字领域中的电子集成电路设计。1.2 研究对象、目的及意义信号源又称信号发生器或振荡器,在生产实践和科技领域中有着广泛的应用。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。在遥测系统中,信号源作为一种校验设备,需要及时有效的想地面调制设备提供视频校验信号,从而模拟地面接收设备的视频输出信号来校验调制器的工作情况;同时信号源还应该能够根据调制发射机的高电平,用于模拟弹上发射信号校验地面接受解调设备。从这种意义上讲,信号源本身的工作应该更稳定、可靠;另一方面,高码率、小型化、智能化、通用化信号源的设计和实现是遥测系统发展的必然趋势。为此采用先进的方法和大规模可编程器件加一实现才能适用这种发展趋势,CPLD/FPGA等大规模可编程器件发展的成熟和EDA技术为此奠定了良好的软硬件基础。本文着重介绍了基于大规模可编程器件FPGA、采用verilog硬件描述语言设计的信号源核心数字电路的实现过程。用户现场可编程门阵列FPGA(Field Programmable Gate Arrays)将高密度、高速度、用户可编程、设计周期短等优点结合在一起,不仅填补了电路器件上的一项空白,VLSI和通用逻辑器件之间不断扩大的间隙,而且改变了硬件电路的传统设计方法,其影响几乎可与微处理器、半导体存储器的出现相提并论,因为配合现代先进的E DA工具已从根本上改变了电子产品的设计思想,设计人员只要在计算机前采用微处理器、半导体存储器、大规模可编程器件和一些模拟电路通过EDA工具就可以设计出最终的高度小型化的电子产品。说到FPGA,不得不提到与之密切相关的硬件描述语言、目前,数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上而下的逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,由此引入了这样一种层次化电路设计方法。本次试验的意义在于让设计者熟悉设计流程,学习严谨科学的验证方法,了解硬件描述语言的结构,为以后的理论学习打下实践基础。1.3 本文主要内容安排本文主要一个简单信号源设计的全部过程,全文共分为五章。第一章引言阐述了本课题的背景,信号源设计的应用、课题的目的和意义及本文的内容结构。第二章对对信号源的设计原理进行阐述。第三章主要介绍了VeriCom软件的功能,并介绍了在本文中该软件的应用。第四章主要介绍了用示波器显示设计结果。第五章主要介绍了对电路的改进计划。第六章对全文的所做的工作进行了总结,并对今后的工作做出了展望。最后还有结论、参考文献、致谢和附录部分。2 信号源设计原理2.1相关概念及原理的概述2.1.1可编程器件FPGA简介 FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA工作原理: FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。52.1.2可编程逻辑器件Spartan-3E FPGA的结构及特点 Spartan-3E是本实验用的硬件部分。Spartan-3系列FPGA是为那些需要大容量、低价格电子应用的用户而设计的。该系统的8种FPGA密度从5万到500万门。Spartan-3系列是在Spartan-IIE成功的基础上通过增加逻辑资源、增加内部RAM容量、增加I/O引脚数量、增加时钟管理功能以及增加总体性能来实现的,很多增强的功能都来自于Virtex-II技术。这些结合了先进处理技术的改进,使得Spartan-3的性价比超出以前所能达到的水平。也为可编程逻辑器件提供了新的标准。由于异常的低价,Spartan-3可广泛地应用于各种电子设计,包括军工航天、宽带接入、家庭网络、投影电视、数字电视。2.1.3 FPGA开发软件ISE的简介ISE是Xilinx公司在FPGA的集成开发环境。全名为Integrated Software Environment。Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IP(Intellectual Property)核,长期以来一直推动着FPGA技术的发展。Xilinx的开发工具也在不断地升级,由早期的Foundation系列逐步发展到目前的ISE14系列。ISE具有界面良好、操作简单的特点,再加上xilinx的FPGA芯片占有很大的市场,使得ISE成为了非常通用的FPGA工具软件。ISE提供了包括代码编写、库管理以及hdl综合、仿真、下载等几乎所有FPGA开发所需的功能。它的主要功能包括设计输入、综合、仿真、实现和下载。(1)设计输入 ISE软件提供的设计输入工具包括用于hdl代码输入和报告查看的ISE文本编辑器(texteditor),用于原理图编辑的工具ECS(engineering capture system),用于Ip core的coregenerator,用于状态机设计的statecad,以及用于约束文件编辑的constraint editor等。(2)综合ISE的综合工具不但包括了xilinx自身提供的综合工具,同时还可以集成mentorgraphics公司的leonardospectrum和synplicity公司的synplify。(3)仿真ISE本身自带了图形化波形编辑功能的仿真工具hdl bencher,同时又提供了使用modeltechnology公司的modelsim进行仿真的接口。(4)实现ISE的实现功能包括了翻译(translate)、映射(map)、布局布线(place and route)等。(5)下载下载功能包括了bitgen,用于将布局布线后的设计文件转换为比特流(bitstream)文件。还包括了impact功能,用于进行设备配置和通信,控制将程序烧写到FPGA芯片中去。从功能上讲,其工作流程无需借助任何第三方EDA软件。82.1.4硬件描述语言Verilog简介Verilog HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASIC和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。Verilog 是由Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被 Cadence Design Systems于1990年所购并。现在 Cadence 对于 Gateway 公司的 Verilog 和 Verilog-XL 模拟器拥有全部的财产权。9Verilog HDL是一种以文本形式来描述数字系统硬件的结构和行为,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言。两种HDL均为IEEE标准。2.2信号源设计思路2.2.1主程序设计 图2-2-1 主模块框图输入:rst_n,是复位信号 bt1,是用 button按钮控制Verilite板上的一个LED灯 clk,是系统时钟输出:clk4,是6分频后得到的4MHz的时钟 count20,是模20计数器 checkload,是load信号的输出 bt1_check_led0是对button信号的检查clktest, 是对系统时钟的检查SU_CLK,是输出到FPGA的4MHz时钟信号SU_DIN, 是输出到FPGA的数据信号SU_CS, 是输出到FPGA的片选信号SU_CLK0,是输出到Vericom的4MHz时钟信号SU_DIN0, 是输出到Vericom的数据信号SU_CS0, 是输出到Vericom的片选信号整个模块的功能是先产生4MHz的时钟,再生成200kHz的时钟,调用IP核里的DDS生成正弦波,再调用D/A子模块输出数据。具体设计情况如下:1.我们想先得到一个4MHz的时钟,然后以它为整个信号源的总时钟。a.设计一个模6计数器。计数器的一个重要功能是分频,这个计数器是为了给下面那个时钟做准备。b.设计一个时钟,我们把它叫做clk6_r。让这个时钟在模6计数器为2时为低电平,知道计数器大于等于5时,被拉为高电平,于是,在计数器为5,0,1时,clk6_r为高电平,计数器为2,3,4时,clk6_r为低电平。于是系统时钟被六分频,clk6_r就变成了一个4MHz的新时钟。波形参照第三章仿真结果的时序图p18。2.调用ISE中的IP核里的math operation里的DDS数字信号合成器生成一个1K的正弦波。用DDS来生成波形,需要输入一个时钟,输入想要信号的位宽,和相应的频率字 。所有的输入输出及参数如图2-2-2所示。图2-2-2 IP核符号输入的位宽为19位,输出数据的位宽为16位。表2-2-1D/A转换器的最小时间表t3时钟高电平时间VCC=5V40nst4时钟低电平时间VCC=5V40nst5片选信号停止位宽VCC=5V50nsa.我们给DDS一个200K的时钟,所以用与1一样的方法,200K=4M/20。我们需要以4MHz的新时钟clk6_r来设计一个模20的计数器。我们把它叫做count20_r1。b.定义一个时钟clk200k。它是每当来一个clk6_r的上升沿时,计数器记到9,时钟为低电平,直到计数器大于等于19,被拉为高电平。所以,在计数器为19,0,1,2,3,4,5,6,7,8时clk200k都是高电平,计数器为9,10,11,12,13,14,15,16,17,18时clk200k都为低电平。于是就设计出一个频率为200k的时钟clk200k。 这里我们需要说明一下,为什么要生成一个200k的时钟呢?是因为我们选的LTC1655是一款低速D/A转换器,它有三个输入,时钟,片选,和数据。完成一个周期的转换时间就是一个片选信号的时间。所以通过计算片选信号的最少时间,就可以算出D/A转换的最高频率。从表2-2-1可以看见t3=t4=40ns,t5=50ns。t 3和t4分别是时钟信号高电平和低电平时的最小时间。t5是片选信号高电平时的最小时间。先看我们送到D/A中的时钟是否符合D/A的时序要求。我们送进去的时钟是4MHZ,转换成时间为250ns,250ns80ns,所以我们送进去的时钟是符合要求的。片选信号是16个时钟上升沿的低电平,4个时钟上升沿的高电平。参照子模块设计部分的片选信号小节。p13,2.2.2.3。所以:片选信号低电平的最小时间为:16*(t3+t4)=16*(40+40)=1280ns高电平最少时间为:4*t5=4*50ns=200ns总时间为:200ns+1280ns=1480ns我们的片选信号的最大频率应该为:1/1480ns=675675.675675Hz而我们设计的片选信号的频率为200kHz675675Hz,满足要求。片选信号低电平的时钟上升沿的个数就是数据的个数,因为D/A是16位的。这样数据传输的频率为200k,我们在DDS中输入的时钟频率就是生成的正弦波的采样率,为了能得到200k采样率的数据,我们就要给DDS一个200k的时钟。c.输出的位宽需要考虑到输出到D/A板的实际情况,我们选择的D/A板是LTC1655的数模转换器。它要求16位串行输入。于是我们选择FPGA输出信号是16位。相应的频率字公式为:频率字=(输出频率/输入时钟频率)*219=(1/200)*219=2621输出是一个16位的寄存器cosine,它的数值对应到十进制,就是正弦波的形状。d.现在的值有正有负,而LTC1655这款D/A的输入要求必须是正值,所以我们把输出加上32768(=216/2),使最小值为正。这样一个正弦波的发生器就设计出来了。3.设计load_1655信号。当计数器为0时,load信号是高电平,否则都是低电平。Load信号的目的是为子模块中生成片选信号做准备。参照第三章图3-2-6load信号的波形。2.2.2子模块设计2.2.2.1.子模块的框图子模块的输入由顶层模块的某些输出传进去。需要对子模块进行例化。子模块的名字叫ltc1655da。把FPGA输出的4MHz的时钟,IP核输出的正弦波数据, load信号,复位信号作为子模块的输入。分三部分并行程序:模20计数器部分,片选信号部分,装载信号,再串行输出部分。2.2.2.2.模16计数器部分当SCLK每来一个上升沿,若load=1,scount清零;若scount小于16,则自增计数。这样在scount在一个load周期里的数值为0,1,2,3,4,5,6,7,8,9,10,11, 12, 13, 14, 15, 16, 16, 16,16。图2-2-3 子模块框图2. 2.2.3片选信号部分因为片选信号是为了控制数据的传递和截止。所以需要有16个时钟上升沿的低电平,其他时间为高电平。其中16个时钟由模16计数器控制。当load信号出现高电平,来一个时钟上升沿,模16计数器跳到1。从这时开始片选信号一直为低电平。直到计数器=15,再来一个时钟上升沿,片选信号被拉到高电平,直到下一个load为高电平出现。所以就使得片选信号在计数器从116时都是低电平,计数器为17,18.19,0的那四个时钟处都为高电平。参照第三章图3-2-7片选信号的波形。2.2.2.4数据加载,并移位输出的部分这部分的设计是根据LTC1655D/A转换要求,16位串行输入。我们需要把数据从并行转换成串行。先定义一个16位的寄存器sdata,当load为高电平时,片选信号一定也为高电平,把输入的数据装载到sdata中(数据加载完成),接着当片选信号为低电平时,把sdata的后15位往前移一位,放到sdata的第16位到第2位,然后把末位补零。那么大家会有个疑问,最高位哪里去了?这些当然也在设计者的掌握之中,最后一行代码assign SDINOUT = sdata15会把最高位输出。这个操作不受时钟控制,只要最高位有数据就立刻传出去。参见第三章图3-2-8数据信号的波形。2.2.3约束文件的设计表2-2-1 约束文件用到的引脚用到的通用I/O引脚ClkP184INPUT0P148CN6.38P69CN6.35P77CN6.36P76约束文件的代码如下:NET clk LOC = P184 | IOSTANDARD = PCIX ;NET rst_n LOC = P148 | IOSTANDARD = PCIX ;NET clk4 LOC = P69 | IOSTANDARD = PCIX ;NET clktest LOC = P77 | IOSTANDARD = PCIX ;#ltc1655NET SU_CLK LOC = P76 | IOSTANDARD = PCIX ;NET SU_DIN LOC = P74 | IOSTANDARD = PCIX ;NET SU_CS LOC = P75 | IOSTANDARD = PCIX ;3 使用Vericom软件进行动态仿真分析3.1VeriCom仿真软件的简介北瀚科技的平台硬件部分采用当今世界最大的FPGA厂商Xilinx /Altera 的产品作为电路功能验证实现的核心,数据通过公司的专利技术-SMIMS Engine控制板载的USB2.0/ PCI与PC实现互连通信。本平台的软件部分则集成了四个高级开发验证工具,在PC端属于OS和C/C+开发环境的中间层次。她们可以支持Xilinx /Altera的硬件开发平台也可以独立设计电路,同时还支持用户自定义的C/C+实现的算法模块,通过软件的专利技术-SMIMS SDK/ VeriCom引擎向上可随时调用高级仿真软件(Simulink、Matlab)和ISE/Quartus等相关资源,向下可实现对PC的硬件资源的控制共享,用户不用特意去搭建外围接口硬件电路模块(例如音频、视频输入/ 输出等模块),就能将相关结果与本平台的硬件部分数据互通信,实现了资源的真正实时共享。借助这个平台设计者能更加简单、有效地实现相关软件资源的无缝衔接,在样机研发的初期就能准确的把握自己的设计方案,从而将出错率降低到最低。10本文主要应用Vericom其与veirlite硬件部分数据互通信,实现资源的实时共享功能,对设计的信号发生器进行了模拟与仿真,得到了直观的波形,有助于我们对设计正确性的掌握。使用的FPGA引脚表clkP184OUTPUT0P205OUTPUT1P203OUTPUT2P202OUTPUT3P200OUTPUT4P199OUTPUT5P197OUTPUT6P196OUTPUT7P193表3-2-2用到的FPGA的引脚3.2为仿真做的准备工作3.2.1在约束文件中设置引脚的链接子程序中的定义:assign SU_CLK0 = SU_CLK;assign SU_DIN0 = SU_DIN;assign SU_CS0 = SU_CS;在引脚约束中:NET SU_CLK0 LOC = P205 | IOSTANDARD = PCIX ;NET SU_DIN0 LOC = P203 | IOSTANDARD = PCIX ;NET SU_CS0 LOC = P202 | IOSTANDARD = PCIX ;#NET clk TNM_NET = clk;NET count20_w(0) LOC = P200 | IOSTANDARD = PCIX ;NET count20_w(1) LOC = P199 | IOSTANDARD = PCIX ;NET count20_w(2) LOC = P197 | IOSTANDARD = PCIX ;NET count20_w(3) LOC = P196 | IOSTANDARD = PCIX ;NET count20_w(4) LOC = P193 | IOSTANDARD = PCIX ;NET checkload LOC = P192 | IOSTANDARD = PCIX ;于是,vericom软件可以接收这些引脚的信息。设置好这些,我们就可以在vericom中看到这些引脚,如图3-2-1所示。图3-2-1Vericom能看见的输出引脚我们进入VeriCom的界面:如图3-2-2所示将比特流文件下载到板子里。点击I/O按钮。先将复位信号设成低电平,然后再将复位信号设成高电平,高电平部分要尽量长一些,这样,电路运行时才可以看到完整的时序图。退出复位设定,点击GO按钮,系统开始运行这个生成正弦波的程序,于是我们可以清楚的看到它的时序图。如图3-2-3所示:图3-2-3总的时序图Rst_n,是复位信号SU_CLK0是4MHz时钟信号SU_CS0是片选信号SU_DIN0是数据信号Count20_w4:0是模20的计数器Checkload是装载信号图3-2-3为vericom显示的时序图,依次是系统时钟,复位信号,时钟信号,片选信号,模20计数器,装载信号,和数据信号。图3-2-2Vericom中的下载界面3.2.2时钟信号CLK0 我们设计的输入的时钟信号是经过6分频后的4MHz的时钟,从图上我们不太能清楚的看见两个时钟上升沿之间系统时钟来了多少上升沿,但是可以用cursor确定位置后计算两个的差。 图3-2-4时钟的初始游标位置 图3-2-5一个时钟周期后的位置Cursor: 2576-2570=6,可以知道设置时钟正确。3.2.3 load信号loadcheckload信号是由顶层模块中load_1655传到子模块中的变量,赋予变量名load。在顶层模块中,load_1655信号是当模20计数器count20_r1记到0时,load_1655被拉到高电平,否则为低电平。它的目的是用作设计片选信号做准备。如图4-4中的模20计数器,参照load信号的设计部分,可以看出load信号满足设计要求。图3-2-6 load信号的波形3.2.3片选信号 SU_CS0片选信号SU_CS0由load信号和模16计数器控制,当load信号为1时,SU_CS0为低电平,当计数器Scount=15时,SU_CS0被拉为高电平。这样的设计是根据D/A板的时序图要求得出的,该款D/A芯片是LTC1655,16位数模转换。它要求在片选信号SU_CS0低电平时,在时钟上升沿来时输入数据,片选信号SU_CS0高电平禁止数据传输。于是我们留出16个时钟的时间的低电平,其余4个时钟时间为高电平。如图4-4所示,我们可以清楚的看出来。参照片选信号的设计部分可以看出来我们设计的片选信号SU_CS0满足设计要求。图3-2-7片选信号的波形这个图,上面是4MHz时钟信号,下面是片选信号。可以参见上面总的时序图。3.2.4数据信号SU_DINO数据是串行输入D/A板中,一位一位的输入,而且数据只在片选信号为低电平时输入,根据图4-6所示,在片选信号为低电平时数据全为0。其中数据在传入D/A之前输入的16位并行数据会先放在一个16位并行的输入的寄存器里,我们再用移位寄存器使数据每来一个时钟上升沿就把最高位的数据输出,最后一位补零。于是在图上应该是每一个时钟上升沿对应一位数据,一共是16位。通过下面的图,再参照第二章数据信号的设计部分,可以验证,数据的确如我说述的方式传递。图3-2-8数据信号的波形本图上面是片选信号,下面是数据信号,可以参见上面总的时序图。4 用示波器进行实际硬件测试4.1 TCL1655 D/A转换器的简介图4-1-1D/A的封装图4-1-1是TCL1655 D/A转换器的封装,TCL1655是一款16位串行输入,轨到轨的低速数模转换器我们只用其中的引脚1,2,3,时钟,片选,数据即可。引脚8,6,5,都接在另一个集成的板子上,给它提供电源,参考电压,和接地。我们用一根导线接触引脚7,另一端接到示波器上,就可以看到我们设计的正弦波波形。图4-1-2是TCL1655 D/A的原理图,这些并不是我们关注的部分,我们只是使用它实现信号源的设计。但是所有的电压型D/A转换器的原理都类似。前面是一个16位的移位寄存器,数据通过它传到一个电阻网络中,实现分压功能,再用一个反相放大器输出即可。图4-1-2 D/A板的原理图t3,时钟信号高电平的时间图4-1-3是TCL1655 D/A的时序图,是本次设计的最重要的部分。当cs_ld1为低电平时,FPGA中的数据(16位)可通过IO口一位一位的送入1655的DIN引脚。当cs_ld1为高电平时,1655芯片中的16位数据从芯片内部的移位寄存器装载到DAC寄存器。用时钟来控制数据的传输速度。每来一个时钟上升沿,就向前传一位数据。一共是16位数据。输出则不受时钟的直接控制,而是看D15的数据的传输速度。我们设计的时序就是按这个时序图设计的。图4-1-3 D/A板的时序图4.2硬件连接后,用示波器输出波形4.2.1输出的结果用线连接后如图4-2-1,调示波器,选择normal模式,我们就可以看见一个正弦波出现。如图4-2-3。图4-2-1硬件连接的实物图按D/A和Virilite的引脚设定来连接硬件设备。当打开电源开关时,所有流水灯都是亮的,当程序下载成功后,流水灯全部熄灭,且error灯灭掉。说明没有错误。然后连接上示波器后,我们先观察时钟的波形,发现时钟是断续传输的,不是完全连续的。如图图4-2-2示波器输出时钟的波形(整体)。拉开来看,时钟的频率是4MHz,但是由于不是实时电路,研究时钟的频率变得没有意义。这些是挤在一起的时钟信号程序停止的地方图4-2-2示波器输出时钟的波形(整体)然后观察数据的波形,出现了正弦波,如图4-2-3示波器输出的波形。我们虽然我们看见了一个正弦波,但是结果并是我们想要的频率。我们要产生一个1kHz的正弦波,但是示波器输出的却是一个8.95Hz的正弦波。与我们想要的波形的频率相差了100倍。小点点是采样点图4-2-3示波器输出的波形4.2.2对输出结果的分析程序是由PC下载到FPGA中,但是若直接连到D/A中输出是没有任何波形的。原因是没有一个控制信号告诉FPGA开始输出数据。于是我们用VeriCom软件进行控制,VeriCom发出一个控制信号给FPGA,然后FPGA把数据输出到D/A中并通过我们上节定义的引脚传回VeriCom,我们可以观察到输出的数据。但是问题也随之而来。数据从PC机上传过来和从FPGA传回去要通过Verilite板上的FIFO,PC从FPGA中读数据和写数据是通过不同的FIFO,但是USB线传输数据时串行的。若PC读数据,则不能同时写数据,写数据也不能同时读数据。PC读取FPGA发回的数据时,VeriCom给FPGA发的控制信号将会暂时被停止,于是整个电路将不再实时。如图4-2-2示波器输出时钟的波形(整体)。所以才没有得到我们想要的频率,而是得到了一个较小频率的波形。从图中我们可以清楚的看出波形输出的不连续,而且程序停止的时间相当长,这个没办法测量到底有多少完整波形后程序停止,只能根据目测估计大概, 100倍这个数据是在估计的范围内。这就需要我们对电路进行改进,使电路变得实时。我们先确定了程序代码是没有错误的,因为把程序下载到Xilinx公司生产的另一款FPGA板Virtex里,出来了非常完美的1kHz的正弦波。以此确定程序的正确性。 接下来,我们发现,要想实现实时,就要通过MIMS公司提供的一款软件VeriSDK来实现接口的控制。用上位机控制下位机的模式来改进电路,由于时间有限,这个任务希望以后有机会能够实现,下一章我们介绍一下它的主要设计流程。FPGA的接口程序5 电路的改进计划Verilite板上的另一个芯片5.1 VeriSDK的简单介绍5.1.1 VeriSDK的简介FPGAUser program调用SDK API 图5-1-1 VeriSDK的结构SMIMS公司提供的以C/C+/SystemC development APIs(SDK)为操作平台的VeriSDK是为了以FPGA为基础的硬件应用的接口和控制。通过VeriSDK API,把SMIMS硬件板和其他软件工具连接在一起,这样就使得我们可以快速,简单的设计和验证。图5-1-1就是VeriSDK的结构,有两个FIFO缓冲在SMIM体中作为硬件和软件的连接。11SMIM VeriSDK以动态链接库的形式提供了SDK API。通过这些API,用户的C/C+程序可以对FPGA中的数据进行辅助验证。而且,VeriSDK在单一系统下能够支持两个相同类型的SMIM FPGA,这些API的第一个参数指出了被选择的芯片。第一个被插上的板的ID设置为0。表5-1-1是VeriSDK API的函数表。5.1.2 API的简介API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。Windows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。 这在某种程度上很像Windows的天然代码。其他的语言只是提供一种能自动而且更容易的访问API的方法。VB在这方面做了很多工作。它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法, 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows,同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。12API函数包含在Windows系统目录下的动态连接库文件中。 更易理解地说:Windows 这个多操作系统除了协调应用程序的执行、分配内存、管理系统资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序, 所以便称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。 凡是在 Windows 工作环境底下执行的应用程序,都可以调用Windows API。135.1.3 VeriSDK的原理VeriCom软件作用就相当于图5-1-1中虚线的左面部分,包括用户程序和SDK两部分。区别在于VeriCom它只能编译有限的波形,因为我们只能给它有限长的控制信号。如果我们自己编译一个程序,这个程序发出一个指令让FPGA不停的发数据出去。这样就可以是实时的。图5-1-2 应用模式示意图当Verilite USB运作于应用模式时,FPGA直接和USB装置相互连接。这时用户可以自行设计电路来处理“应用模式”通过USB送过来的数据,或是准备好数据等待“应用程式”来抓取。资料的传输使用FIFO界面。主要构成的讯号群组有:Write,Read,Data Input,Data Output等。这也意味着FPGA把自己本身看作是FIFO让PC来存取资料。如图5-1-2是应用模式示意图。5.1.3 Sbrid的简介为帮助初次使用SMIM SDK API 界面的使用者,利用程式构建出流程和控制信号,程式就可以产生出对应的软体和硬体程式码,使用者只需要利用简单的控制信号就可以取得来自PC传来的数据,也可以方便的把数据传回PC端。SMIM自带了一个软件Sbrid,它可以自动生成产生PC端的main.cpp文件,和FPGA端的top.v,SMIM_IF.v,mem_x_dp.v文件.使用者需要将自己的电路写在UserDesign.v中,其他.v文件不需要修改,可以直接使用。产生的程式码包含软体和硬体端,软硬体需搭配使用,如果有修改程式流程必须重新更换程式码。12图5-1-2表示的是应用模式是如何使用的,应用函数被应用模式的使用者从SDK提供的动态链接库中调用,传入SMIM engine中,即Verilite板中的收发模块中,再由这个收发模块向目标FPGA发送命令。并且整个传输是双向的。这个文件用Sbrid可以自己生成。我们自己设计下面这些红色的都可以用sbrid生成图5-1-3 文件的逻辑图图5-1-3展现出所有软体和硬体文件的作用位置,main.cpp文件是应用模式的使用者,它来调用SDK的API命令,传入Verilite板中的FPGA电路中,其中,实现相互通信功能的是SMIM_IF.v文件。表5-1-1 VeriSDK API的函数表bool SMIMS_VLX2_AppOpen(int iBoard, char *Serial)初始VeriLite USB。操作成功,則会传回true,反之则为false。参数iBoard 为欲使用的FPGA板编号,从0开始,第一片编号为0,最多支支持2块。参数Serial 为序号,请在产品所附的产品保证卡中取得此产品序号。bool SMIMS_ VLX2_AppClose(int iBoard)关闭FPGA 板,参数iBoard为欲关闭的FPGA 板编号。操作成功,則会传回true,反之则为false。bool SMIMS_ VLX2_AppFIFOReadData(int iBoard,WORD *Buffer, unsigned size)读取FIFO区块资料。参数iBoard 为欲使用的FPGA板编号。参数Buffer为要取回的资料存放处。参数size 為读取笔数。操作成功,则会传回true,反之则为false。bool SMIMS_ VLX2_AppFIFOWriteData(int iBoard,WORD *Buffer, unsigned size )写入FIFO区块资料。参数iBoard 为欲使用的FPGA板编号。参数Buffer为要取回的资料存放处。参数size 為读取笔数。操作成功,则会传回true,反之则为false。bool SMIMS_VLX2_AppChannelSelector(int iBoard,BYTE channel)设定8 Bits 的Channel 值。参数iBoard 为欲使用的FPGA 板编号。参数channel 为Channel 值。注意:使用此API 时,请确定在FIFO 中的資已读取完。如果FIFO 中尚有资,呼叫此API 时会发生Block 的状况。bool SMIMS_VLX2_ProgramFPGA (int iBoard,char * BitFile)将电路Program 到FPGA。参数iBoard 为欲使用的FPGA 板编号。参数BitFile 为.bit 文件路径。操作成功, 则会传回true,反之则为false。char * SMIMS_VLX2_GetLastErrorMsg(int iBoard)如果存取发生错误,可以印出系统错误信息。参数iBoard 为欲使用的FPGA板编号。Sbrid界面共有5个模组:start,end,read,write,syncRW。Start功能:选择电路文档所在的位置目录。并填入产品的序号,程式会自动抓取安装时填入的序号,可以手动更改。再选择要使用的FPGA板,这个FPGA板型号会出现在start block左下角。End:程式流程的最终点,无相关设定。Read:read block 分为两种类型,功能是将资料从FPGA传回PC端,可以分为从data bus读取,或是从memory读取资料。Write:writeblock分为3种类型,功能为将资料从PC端传至FPGA,可以分为写入data bus,写入memory,和传送command,write block也可以设定channel。流程控制项:flow流程路径,和loop回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色环保低碳建材产业园建设项目技术方案
- 腰痛考试题多选题及答案
- 堤防地质勘察与风险评估
- 水库扩建工程施工方案
- 企业离职补偿及员工培训协议范本
- 双方财产清算及分期偿还债务协议书
- 商业设施租赁合同范本:购物中心租赁合同
- 离婚协议子女抚养权及财产分割详细范本指南
- 研究型大学全职教师聘任与科研成果转化合同
- 采购文员考试试题及答案
- 浅谈国内外深基坑支护技术的现状及进展
- 网络舆情应对及处置
- 工业数据采集技术及应用 -配置能源采集仪表参数
- 《应急救援知识》课件
- 【一例重症肺炎的个案护理案例报告6000字(论文)】
- 电梯使用维护说明书
- 专业方向证明
- 范里安-微观经济学:现代观点
- 传热学全套PPT完整教学课件
- 部编版六年级道德与法治上册第5课《国家机构有哪些》优秀课件
- 民族区域自治制度课件 【核心知识精讲精思】 高中政治统编版必修三政治与法治
评论
0/150
提交评论