基于cpld多波形信号发生器设计(编辑修改稿)内容摘要:

共提供 了 66 个可用 I/O 脚 , 这些引脚可以任意配置为输入、输出和双向方式, 芯片的工作电压为 +5V。 通常情况下在硬件调试的过程中一般使用下载电缆进行下载,而当调试完成以后要用配置芯片对 FPGA 进行配置。 配置芯片在每次系统上电以后自动将配置文件加载到 FPGA中形成电路。 硬件总体方案介绍 由于模拟 电路复杂 程度较高 ,而且在检查电路的时候会有很大的工作量,且可调性差。 并且 电路带来的高频干扰也会更大,影响波形效果。 而单片机电路确定方案后不易更改硬件电路,可变性不高,功能修改完善不方便,所以 本次设计 除了采 用 CPLD设计电路 ,由于其可编程特性,在设计调试时可以不断改变电路硬件的逻辑关系,而不必改变系统的硬件结构,缩短了设计周期,提南昌航空大学学士论文 14 高了设计效率。 在完成模块程序编译仿真后,通过 USBBlaster 编程器将系统配置文件下载入 CPLD芯片, 分别将数控分频输入、波形选择控制输入以及波形数据输出连接 CPLD主控芯片。 图 是本次设计的基本硬件框图: 图 系统基本硬件电路 外部输入通过四位拨码开关控制分频倍数,可对频率进行调节,在通过两位拨码开关控制波形选择,系统时钟信号由开发箱上提供, 八位波形数据输出接试验箱的 DAC 转换模块,由于示波器只有两路输入,所以需要再设计一个D/A转换电路将两种相位的波形进行比较。 CPLD 及 外围电路设计 CPLD 主控 电路设计 本次设计主控电路设计基于北京百科融创 EDA教学 开发平台 , CPLD芯片为 Altera 公司的 EP1K10TC1003,共 100 个 管脚,提供 66 个 可用 I/O 脚,系统包括控制输入及波形数据输出,共使用 23 个 I/O 脚,图 为 CPLD主控芯片管脚分配图。 CPL D 主控电路DAC数模转换数控分频电路波形选择输入时钟CLK示波器输出南昌航空大学学士论文 15 图 CPLD 主控芯片 I/O I/O7 脚为 波形控制开关, I/O9 引脚为外部时钟输入口, I/O7I/O70、 I/O6 I/O68 为数控分频外部控制端口, I/O20~I/O2 I/O26~I/O2I/O30 脚为初始相位八位波形数据输出端; I/O31~I/O3 I/O45~I/O48 为移向后的波形数据输出端,波形数据输出接 DAC 模块的八位数据输入,通过示波器观察输出波形信号。 DAC数模转换模块设计 由于 从波形 ROM 中读出的 波形 数据还只是一个数字信号,要得到最后的输出信号必须经过数模转换器。 因此在波形 ROM 输出 之后要设计 一个 D/A 转换电路。 本次设计采用 DAC0832 来实现 D/A 转换, DAC0832 是双列直插式 8 位南昌航空大学学士论文 16 D/A 转换器,能完成数字量输入到模拟量 (电流 )输出的转换。 由于 其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。 数模( D/A)转换电路的作用是把已经合成的波形幅值的数字量转换成模拟量,其速度和特性直接影响整个系统的性能。 D/A 转换器件的首要特性要求是高速, 其次是转换位数,本设计中选用 8 位的 D/A芯片 DAC0832。 波形幅度量化序列经 D/A转换后成为阶梯波。 D/A的输出用电压形式表示一般 应为: VV REFNoutD  2 (式 ) 式中 D为 D/A的输入数据值, N 为 D/AC 的位数,即通常所指的 D/AC 的分辨率, VREF 为输入 D/A的参考电压。 DAC0832 对信号进行数模转换后,将数字信号恢复为模拟信号,再由UA741 构成的放大电路进行放大处理,完善波形信号,使波形能够达到标准效果。 外围 DAC 电路 原理图 如图 所示: 图 DAC0832 外围电路设计 在 DAC 外围电路中, UA741 接 +12V、 12V电源, DAC0832 接 5V电源,在电源接口处接一电容,起滤除杂波作用,在信号输出加入了滤波电路, 接入示波器, 得到稳定的波形信号。 南昌航空大学学士论文 17 第四章 软件程序设计 程序部分基于 Quartus II 通过 VHDL 语言实现。 系统采用自顶向下设计原则,先完成各个子模块仿真设计,综合编译后,通过软件生成图元文件,再设计系统顶层原图,将各个模块连接,最后进行系统总体仿真。 系统流程设计 本次设计主要包括数控分频模块、寻址计数 模块、 360176。 移相模块、波形ROM 储存模块、波形选择模块等,系统总体设计流程图如下图 所示: 图 系统设计流程图 波形 ROM 模块针对不同的波形信号,通过不同的方式设计 ROM 模块,像三角波方波这样波形简单变化缓慢的波形,通过逻辑单元实现 ROM 设计,而对于正弦波这样的波形,查找表比较复杂,波形数据较大,所以利用了LPM_ROM 定制法设计正弦波的存储 ROM,最后再通过波形选择输出波形数据。 数控分频模块寻址计数模块360176。 移相模块波形 ROM储存模块波形选择模块结束开始南昌航空大学学士论文 18 子模块的设计 数控分频器 数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不 同的分频比,输出不同频率的时钟,以改变输出信号的频率。 本设计中利用并行预置数的减法计数器实现,他的工作原理是:减法计数器在并行预置数的基础上,在时钟的作用下进行减计数,当计数值为零时产生溢出信号,加载预置数据,并且将溢出信号作为分频器的输出信号,实现 N 分频信号输出。 其分频系数 N为 =1ND (式 ) D为预置数的值。 为了得到占空比为 50%的矩形时钟信号,将输出再进行二分频。 由此,该分频器的总分频系数为 2N。 本设计中一个波形周期由 64 个时钟信号组成,则输出信号频率为: 2 64clkout ff N  (式 ) 时钟频率为 24 MHz。 数控分频器模块如图 所示: 图 数控分频器模块 略去声明部分, 数控分频器的核心程序如下所示: architecture one of kongzhi is signal full:std_logic。 定义内部溢出标识 signal temp:std_logic_vector(1 downto 0)。 begin p1:process(clk) N+1 分频进程 南昌航空大学学士论文 19 variable t9:integer range 0 to 31。 begin if (clk39。 event and clk=39。 139。 )then 上升沿检测 if(t9=0)then t9:=d。 重新 加载预置数 D full=39。 139。 计数值为零时,产生溢出信号 else t9:=t91。 否则,进行减一计数操作 full=39。 039。 end if。 end if。 end process。 p2:process(full) 二分频进程 begin if(full39。 event and full=39。 139。 )then 上升沿检测 if(temp=11)then 二位二进制计数,最低位每个时钟 temp=00。 翻转一次,由此实现二分频 else temp=temp+1。 计数值加一 end if。 end if。 end process。 fout=not temp(0)。 选择二分频输出 end one。 南昌航空大学学士论文 20 通过 Quartus II 仿真结果如下图 所示: 图 数控分频器仿真结果 通过以上仿真结果,在分频数据输入端输入“ 0011”,实现 2(D+1)分频,在时钟信号输出端 fout,可以看到,该模块完成了输入时钟 8 分频,此模块设计符合理论值。 寻址计数器模块 寻址计数器主要用于产生对 R。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。