基于fpga的多波形发生器的设计内容摘要:

个反馈电阻接在运算放大器的输出端和输入端之间。 (5) VREF :参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定 0 至 255 的数字量转化出来的模拟量电压值的幅度,V REF范围为(10~+10)V。 V REF端与 D/A 内部 T 形电阻网络相连。 (6) Vcc :芯片供电电压,范围为(+5~+15)V。 (7) AGND :模拟量地,即模拟电路接地端。 (8) DGND :数字量地。 图 为 FPGA 和 DAC0832 直通方式输出连接图,运放输出电路输出电压为 UOUT=(D/256)*VREF。 图 FPGA 和 DAC0832 直通方式输出连接图7 低通滤波、幅度调节和峰值保持电路 从图 中可见,此部分电路主要有集成运算放大器电路构成,可分三节电路分析:第一节是低通滤波电路,滤波效果可通过开关 S1 进行切换;第二节是电路幅度调节电路,输出幅度的大小可由电位器 PR1 进行调节,信号输出有直接输出和电容耦合输出两种;第三节是峰值保持电路(PKD) ,通过这个电路能有效地把输出信号的幅值保持下来,以便 A/D 转换。 A/D 转换器ADC0804 是一个早期的 A/D 转换器,因其价格低廉而在要求不高的场合得到广泛应用。 ADC0804 是一个 8 位、单通道、低价格 A/D 转换器,主要特点是:模数转换时间大约100us;方便的 TTL 或 CMOS 标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(0V~5V)输入信号电压范围是 0V~5V;不需要调零,等等。 ADC0804 是一个 20 引脚的芯片,引脚排列如图 示。 所有引脚定义如下::片选信号。 低电平有效,高电平时芯片不工作,CS:外部读数据控制信号。 此信号低电平时 ADC0804 把 RD已转换的数据加载到 DB 口。 :外部写数据控制信号。 此信号的上升沿可以启动 ADC0804 的 A/D 转换过程。 WCLK IN:时钟输入引脚。 ADC0804 使用 RC 振荡器作为 A/D 时钟,CLK IN 是振动器的输入端。 :转换结束输出信号。 ADC0804 完成一次 A/D 转换后,此引脚输出一个低脉冲。 对单片机INTR可以称为中断触发信号。 Vin(+):输入信号电压的正极。 Vin():输入信号电压的负极。 可以连接到电源地。 A GND:模拟电源的地线。 V /2:参考电源输入端。 参考电源取输入信号电压(最大值)的二分之一。 例如输入信号电REF图 低通滤波、幅度调节和峰值保持电路图 ADC0804 引脚排列8 主程序流程图压是 0V~5V 时,参考电源取 ;输入信号电压是 0V~4V 时,参考电源取。 D GND:数字电源的地线。 DB8~DB0:数字信号输出口,连接单片机的数据总线。 CLK R:时钟输入端。 Vcc:5V 电源引脚。 模数转换器 ADC0804 的工作分为三个过程:①复位中断触发信号信号表明 ADC0804 转换已经结束,它提示单片机随时可以读取转换结果,是 ADC0804 的一个输出信号。 一般情况下,启动 A/D 转换前应该复位这个信号,以等待新的转换完成后 ADC0804 发出新的信号,这样才可以读到新的转换结果。 复位信号的时序如图 中的图 A,在实现片选( =0)的前提下,使用一个读信号的下降沿就可以复位信号。 CS②启动 ADC0804 的 A/D 转换ADC0804 中的 A/D 转换器在满足一定条件时开始一个转换过程,这个条件就是:在实现片选为低电平的前提下,引脚上出现的一个上升沿。 启动 A/D 转换的时序如图 中的图 B,实现片选以后,使用一个写信号就可以启动一个转换过程。 ③读取转换结果在 A/D 转换结束以后,ADC0804 的引脚将给出一个低脉冲,如果检测到这个低脉冲,便可以读取 ADC0804 的转换结果。 3 软件设计本设计的软件部分是运用 NiosII IDE 开发软件和 C 语言来对 NiosII 核进行编程,用 Quartus II 软件来进行数字电路模块的设计,用 VHDL、VerilogHDL 语言来编写程序。 C 语言程序设计C 语言程序设计流程图如图 所示。 VHDL、VerilogHDL 语言程序设计用 VHDL 语言分别对输出波形控制、分频控制和三角波、正弦波、方波发生的各个模块进行子程序编程,并把每一个模图 ADC0804 的 A/D 转换时序9块转换成图形文件,然后在原理图编辑框中调用这些图形模块,并连接电路。 用按键 KEY1 控制delta,square,sin 波形选通,最后将 8 位输出接 AD0832 的数据输入口,再通过 D/A 转换。 即可从示波器看到输出波形光栅。 按下按键的次数不同,将输出不同频率的波形。 从 NiosII 输出 10 位频率控制字,转换为相对应的整数输出;由分频模块 对输入时钟 clk 分频,对分频计数a 逐次减 1,当 a 减到 0 时,输出后;即为三角波模块 (delta)、方波模块(square)、正弦波模块(sin)的输入时钟 clk。 三角波模块 用于设定一个变量 tmp,其定义范围为 0000011111111000,每到来一个脉冲,对其分别输出+8 或8,然后把改变后的 tmp 送到输出 q,以便生成三角波信号。 方波模块 用于设定一个变量 t,每到来一个脉冲,检测它是否小于 32。 若小于 32,则把高电平送到输出,并对 t +l,否则就输出低电平,并赋值 t 为 0,以便生成方波信号。 正弦波模块 用于定义正弦数据表,每到一个脉冲,逐次查找并输出相应的正弦数据,以便生成正弦波形。 波形选择模块 用于控制输出波形的选通。 4 系统测试及结果分析采用该信号发生器能产生正弦波、方波和三角波三种周期性波形,且输出波形无明显失真。 图 给出三种波形在逻辑分析仪中仿真的结果 [11],图 、 分别为方波、三角波、正弦波的实际输出波形图。 从图 中可以看出,三种波形的输出是相当完整的,频率的控制也相当准确。 通过实验测试,该信号发生器在 1 kΩ 负载条件下,其各种波形的输出电压峰-峰值在 0~5V 范围内连续可调;且最小的电压输出为 ,输出电压的变化是通过电位器进行调节,并且通过数码管可实时显示输出信号的类型、幅度和频率。 图 用逻辑分析仪仿真的结果图 三角波的实际输出图 方波的实际输出10图 正弦波的实际输出 5 结束语通过该次毕业设计发现自己所学知识很缺乏,特别是有关 VHDL 编程方面。 同时让我对以前所学过的理论知识回顾了一遍,并进一步巩固,自己的实践能力的到进一步的提高。 6 致谢在此,我要感谢我的导师林汉老师,谢谢他一直以来给我的帮助。 还感谢在毕业设计期间所有给予我帮助的老师和同学。 参考文献:[1] 潘松、黄继业.EDA 技术实用教程[M].北京:科技出版社,.[2] 王振红.数字电路设计与应用实践教程.北京:机械工业出版社,.[3] 萧家源,.北京:北京科学出版社,2020.[4] 褚振勇, 设计及应用[M].西安:西安电子科技大学出版社,2020.[5] 江国强.SOPC 技术应用.北京:机械工业出版社,.[6] 范秋华,张冬梅,基于 VHDL 的可编程分频器在波形发生器中的应用[J].青岛大学学报,2020,16(4):6871.[7] 侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2020.[8] 周立功.SOPC .北京:北京航空航天大学出版社,.[9] 王金明.数字系统设计与 Verilog HDL[M].北京:电子工业出版,.[10] 王昊、李昕.集成运放应用电路设计 360 例.北京:电子工业出版社,.[11] 周立功.SOPC .北京:北京航空航天大学出版社,.11附录:附录 1 外围电路图附录 2 分频器程序library ieee。 use。 entity fana is port(a:in integer range 0 to 1023。 clk:in std_logic。 q:out std_logic)。 end fana。 architecture chu_arc of fana isbegin process(clk) variable b,d:std_logic。 variable c:integer range 0 to 1023。 begin if clk39。 event and clk=39。 139。 then12 if b=39。 039。 then c:=a1。 b:=39。 139。 else if c=1 then b:=39。 039。 d:=not d。 else c:=c1。 end if。 end if。 end if。 q=d。 end process。 end chu_arc。 附录 3:波形产生程序方波library ieee。 use。 use。 entity square isport (clk,clr:in std_logic。 q: out integer rang。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。