ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:1.05MB ,
资源ID:15749362      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15749362.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数电综合实验简易函数发生器Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数电综合实验简易函数发生器Word文档格式.docx

1、4. 熟悉 D/A 变换电路的设计;二、任务要求基本任务:设计制作一个简易函数发生器。1. 输出波形为方波和三角波,频率范围为1kHZ2kHZ;2. 频率可进行调节并用数码管显示,加、减步进均为100HZ;3. 输出三角波的峰峰值为45V,方波幅度为TTL 电平的大小;提高要求:1. 产生频率范围为1kHZ2kHZ、峰峰值为45V 的正弦波信号;2. 产生占空比可调的矩形波或其它波形;3. 自拟其它功能。三、系统设计1.设计思路 用VHDL语言结合原理图编辑方式设计实现一个函数信号发生器,输出频率可调方波和三角波,正弦波三种波形。将波形选择、频率控制与分频、三角波、正弦波、方波发生各个模块分别

2、用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块。由于考虑到按键开关工作的不确定性,通过拨码开关模块的SW0到SW3控制频率调节f3.0,用SW4、SW5控制DELTA、SINE、SQUARE波形选通,最后把八位输出经过并串转换,接到开发板上的DA模块(TLV5638),通过D/A转换,从示波器上就能看到波形输出。2.总体设计框图(图一:系统设计框图)3.分块设计本设计共使用了六个模块,分别解释如下:a)分频模块: 本模块主要功能是输出两个分频时钟clk_m和clk_p,前者用于波形的每一点的并行值输出频率,后者是前者的32倍频,用于并串转换(1

3、6bit并行输入转串行输出,并且要输出一个二分频时钟)。经过多方考虑(受制于DA芯片的最高工作频率),选择波形分辨率为64点(即一个周期取样64次)。这里输出的1KHz到2KHz的频率(步进100Hz)都是近似的。 frq.vhd文件还包含了数码管输出的功能。采用高频时钟(50M)扫描cat,输出当前的频率值。这里不再分析。b)三角波产生模块:这个模块输出三角波波形。每次clk_m上升沿输出一个8bit的数据。周期分辨率为64点。c)方波产生模块:本模块输出占空比可调的方波。默认占空比为50。按键调节占空比,步进增/减幅度为12.5。d)选波模块:本模块根据用户操作拨码开关来选择输出的波形。默

4、认输出低电平。e)正弦波产生模块:本模块输出周期分辨率为64点的正弦波。用Excel或者Matlab算出二进制8bit的正弦波的取样值,然后采用在程序里查表的方式输出数据。这要比用程序直接计算正弦波的值快捷和简便得多,虽然损失一定精度,但换回的是程序执行的时间和空间资源。f)并串转换模块:本模块将上级输入的8bit并行数据信号转换为串行输出,以供TLV5638进行DA转换。每次系统重置后(reset按键被按下),系统经过两次状态转换。state 0是一个等待状态,系统等待4个并行周期之后进入state 1,这个状态主要用来写TLV5638的控制寄存器。这里我们将它的参考电平设为2.048V。接

5、着,系统将把TLV5638的触发信号置成有效电平。接着系统进入state 2,这个状态是系统真正进行并串转换的状态。在TLV5638自身允许输入的状态下,此进程将设置TLV5638,使其依次使用DAC_A和DAC_B输出数据。在它自身禁止输入的状态下,进程将TLV5638的触发信号置成无效电平,并不输出。本模块使用例化TLV5638这一器件,具体并串转换的过程将在TLV5638.vhd中实现。具体流程如下: 每次外部复位信号(reset_i)或者内部复位信号(reset_int)有效时,系统进行各信号清零复位的工作。cs_o信号作用是对TLV5638的片选,cs_o的下降沿触发TLV5638的

6、数据写入,cs_o上升沿时TLV5638停止数据写入(数据锁存)。系统默认状态为IDLE(空闲),不进行任何操作。当DA工作触发信号(start_i)有效时,系统被触发,进入BUSY(工作)状态。系统状态为BUSY时,进行一次16bit输入数据的并串转换,使用输入并行数据频率的32倍频,将其二分频后输出给TLV5638作为时钟信号。输出16bit数据后,系统将cs_o复位(停止数据写入芯片),并且将eoc置位(进行一次各信号清零复位的工作)。系统输出串行数据时首先输出并行输入数据的高位。四、程序框图(图二:系统操作流程图)五、总体电路图及管脚信息(图三:系统电路图)(图四:管脚连接信息)六、源

7、程序adjust.vhd:choose_wave.vhd:dlt_gen.vhd:frq:sin_gen.vhd:sqr_gen.vhd:tlv5638.vhd:七、功能说明及操作步骤1.功能该工程实现一个简易函数信号发生器的功能。系统上电后,默认输出低电平(无波形),默认初始频率为1KHz。波形输出频率可由开发板上的拨码开关SW0SW3调节,可调范围为1KHz到2KHz,步进量为100Hz。波形由开发板上的DAC_A口输出。共有方波和三角波,正弦波三种波形可供选择,用户只需将开发板上的拨码开关SW6SW7置成不同取值组合,就可以输出不同波形。其中方波的占空比可以用开发板上的按键开关BTN0B

8、TN1调节。系统重置按键为开发板上的按键开关BT7。另外,实验验收后我继续加入了锯齿波输出的功能。用户可以在示波器上看到波形输出。2.操作步骤 上电后用户首先选择波形,使用SW6SW7选择,具体对应关系如下:SW7SW6输出波形00无波形(低电平)01占空比可调的方波10三角波11正弦波波形选择好后,将示波器探头接入开发板的DAC_A与GND之间,即可在示波器上看到相应的波形。用户可以通过改变SW0SW3来改变输出波形的频率,具体对应关系如下:SW3.SW0输出频率00001.0KHz00011.1KHz00101.2KHz依次递增10102.0KHz10111100不变1111 其中,特别的

9、,在输出方波波形时,用户可以按下BT0/BT1来增/减方波的占空比。 系统重置按键为BTN7。(图五:实际波形图以及系统连接示意图)八、资源利用率(图六:宏单元占用情况)(图七:系统资源利用情况)九、仿真波形1. 三角波输出仿真情况(状态不全)2. 方波输出仿真情况3. 正弦波输出仿真情况(状态不全)4. 选波模块输出仿真情况5. 并串转换输出仿真情况6. 分频输出仿真情况(以输出方波为例)十、元件清单1 计算机;2 示波器;3 直流稳压电源;4 万用表;5 EDA 开发板及相应元器件。十一、关键技术、遇到的问题及解决方案的详述1. 正弦波输出问题解决方案:采用查数据表的模式,既保证了一定数据

10、的精度,同时也替系统节约了大量资源。这样输出时不必花费时间计算每点不同的sinx值,只需读取ROM里的数据,节省时间,可以达到实时输出。2. DA转换问题 加入并串转换模块,该模块使用产生并行数据的时钟频率的32倍频,将每一clk_m周期输入的8bit并行数据经32个clk_p时钟周期输出,一共串行输出16bit数据(包括控制位),同时产生16个clko的脉冲供DA芯片使用。十二、实验结论及总结今天写这个结题报告的时候回想起来,自己在最开始学习这门课程时,对VHDL语言的理解就完全错误了。仅仅认为这是一门计算机语言,而忽视了VHDL的定义:硬件描述语言。它讲求的是描述某个硬件功能的准确性和规范

11、性,而我却认为只要程序写出来以后逻辑正确就OK了。譬如,若是纯粹从逻辑上理解,一个触发器完全可以由一个取值有限的信号循环自加来实现。但是触发器是一个时序逻辑电路,这样描述的器件只是一个累加器。要在其外部加入触发条件(clkevent and clk=1),累加器才能够行使触发器的功能。终于认识到这一点,我对VHDL的许多其他误解也消除了。在仅仅考虑逻辑的前提下,我很迷惑为什么编程过程中有时会出现这样的情况:一句语句放在进程前面或者进程后面会有完全不同的效果;两个进程合并成一个也会使功能改变等等。这些错误都是由于对硬件电路不敏感、不理解状态机概念造成的。我也更加赞同那句话:“不学好模拟电路,无法

12、在数字电路领域有深的理解”。今后的VHDL编程过程中,我将更加注重描述准确这一要点,要时时留意语句实现的硬件电路的性质,编程时多多结合RTL电路,分析排错。另外一个很深的感触就是VHDL语言编写实时控制程序很有用。简易函数发生器这个工程触及到时序控制的地方就是并串转换模块。比较遗憾的是,自己并没有独立的完成这部分的编程工作。不过,老实说,学习、借鉴其他人写的并串转换程序,是完成这次实验过程中个人感觉收获最大的一个阶段。自己在VHDL编程的一些“素养”方面确实不足,通过学习网上的一些资料和论文,我反倒学到了很多时序逻辑电路编程方面的知识。总之,这次综合实验加深了我对VHDL的理解。我明白仅仅一学期的数电理论学习是远远不够的,甚至连数字电路设计的门槛都不能踏入,所以日后我还要多学习,多了解,多实践,加深对这一领域的认识。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1