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

为输入复位端口, q 为八位二进制输出端口。 图 441 阶梯波框图 图 442 阶梯波模块仿真图 阶梯波设计的是数据的递增是以一定的 阶梯常数 向上增加 ,所以输出的波形呈现是成阶梯状的,而不是 完全呈 现是直线增长。 VHDL 描述如下: ARCHITECTURE behave OF ladder IS BEGIN PROCESS(clk,reset) VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0))。 VARIABLE a: STD_LOGIC。 BEGIN IF reset=39。 039。 THEN tmp:=00000000。 复位信号为 0,置最小值 ELSIF clk39。 EVENT AND clk=39。 139。 THEN检测时钟上升沿 IF a=39。 039。 THEN判断 a 数值,计数。 IF tmp=11111111 THEN tmp:=00000000。 计数到最大清零 a:=39。 139。 ELSE tmp:=tmp+16。 阶梯常数为 16,可修改 基于 FPGA 的函数发生器设计 10 a:=39。 139。 END IF。 ELSE a:=39。 039。 循环计数 标志 END IF。 END IF。 q=tmp。 END PROCESS。 END behave。 正弦波模块 正弦波模块由三个部分组成: 6 位地址发生器、正弦信号数据 ROM 和原理图顶层设计 文件。 图 451 结构图 上图所示的信号发生结构中图中,顶层文件 在 FPGA 中实现,包含两个部分: ROM的地址信号发生器,由 6位计数器担任;一个正弦数据 ROM,由 LPM_ROM模块构成, 6 位地址线, 8 位数据线,一个周期含有 64 个 8 位数据。 LPM_ROM 底层是 FPGA 中的 EAB、 ESB 或 M4K 等模块。 地址发生器的时钟 CLK 的输入频率 F0与每周期的波形数据点数以及 D/A 输出 频率 F 的关系是: F=F0/64。 正弦波产生原理: 通过循环不断地从波形数 据 ROM 文件中依次读取正弦波一个周期在时域上 64 个采样点的波形数据送入波形 DAC,从而产生正弦波。 正弦波的频 6 位地址 发生器 ( 6 位计数器 ) 正弦波 形数据存储 R O M 原理图顶层设计 s in . b d f 8 位波形数据输出 基于 FPGA 的函数发生器设计 11 率取决于读取数据的速度。 图 452 正弦波模块仿真图 图 453 顶层文件原理图 方波模块 方波模块的 square 的 VHDL 程序描述如下:其中 clk 为输入时钟端口, clr 为输入复位端口, q 为整数输出端口。 图 46 方波模块仿真图 方波模块 的设计 是当内部计数 t 达到 64 时 ,根据输出标志 a 的数值输出对应的数值,当 a=0 输出 0,也即是方波周期中的低电平 ,当 a=1,输 出 255,也即是方波周期中的高电平。 连续的输出便成了观测到的方波波形。 其 VHDL 描述如下 : ARCHITECTURE behave OF square IS SIGNAL a:BIT。 BEGIN PROCESS(clk,clr) 基于 FPGA 的函数发生器设计 12 VARIABLE t:INTEGER。 BEGIN IF clr=39。 039。 THEN a=39。 039。 ELSIF clk39。 EVENT AND clk=39。 139。 THEN 检测时钟上升沿 IF t63 THEN 计数 64 个点 t:=t+1。 计数 ELSE t:=0。 当计数的值大于 64 时,清零。 a=NOT a。 对内部 a 变量取反 , a 变化启动进程 END PROCESS。 END IF。 END IF。 END PROCESS。 PROCESS(clk,a) BEGIN IF clk39。 EVENT AND clk=39。 139。 THEN IF a=39。 139。 THEN q=255。 a=1,输出一个波形周期内的高电平 ELSE q=0。 a=0,输出一个波形周期的低电平。 END IF。 END IF。 END PROCESS。 END behave。 输出波形选择模块 波形选择模块是一个设计位 6 选 1 的数据选择器,其中 sel 为波形数据选择端口,d0~ d5 为 8 位二进制输入端口, q 为 8 位二进制输出端口。 该模块可以根据外部开关的状态选择相应的波形输出。 其 选择 VHDL 程序如下: 基于 FPGA 的函数发生器设计 13 图 47 输出波形仿真 CASE sel IS WHEN000=q=d0。 递增波形输出 , 十进制 0 WHEN001=q=d1。 递减波形输出 , 十进制 1 WHEN010=q=d2。 三角波形输出 , 十进制 2 WHEN011=q=d3。 阶梯波形输出 , 十进制 3 WHEN100=q=d4。 正弦波形输出 , 十进制 4 WHEN101=q=d5。 方波输出 , 十进制 5 WHEN OTHERS=NULL。 基于 FPGA 的函数发生器设计 14 5 系统联调 测试分析 通过以上各个模块的细化和分析,最终在 Quartus ‖ 中完成了整个系统的联合调试, 并通过嵌入式逻辑分析的方法回读输出信号的波形符 合设计的要求。 调试的结果分析 : (复位信号 reset 高电平,低电平为不输出) (1)第一次 sel 选择值设为 0,输出为 递增 波,从图中可以看出,输出的波形成线性递增,结果正确。 ( 2) 第二次 sel 选择值设为 1,输出为递减波,从图中可以看出,输出的波形成线性递减,结果正确。 ( 3) 第三次 sel 的值设为 2,输出为三角波,其仿真波形如下图所示,输出波形线性增大到最大后,再线性减小。 ( 4) 第四次 sel 的值设为 3,其输出的波形是阶梯波,其仿真波形见下图,波形递增基于 FPGA 的函数发生器设计 15 常数为 16,结果正确。 ( 5) 第 五次 sel 的值设为 4,其输出的波形是正弦波 ,从图中可以看出,输出的数据的变化规律是正弦规律。 ( 6) 第六次 sel 的值设为 5,其输出的波形是方波,从图中仿真的结果可以看出,输出的波形变化规律是按方波规律周期性变化的。 ( 7) 当设置为其他值时无波形输出 基于 FPGA 的函数发生器设计 16 6 设计 总结 本设计 以函数信号发生器的功能为设计对象,运用 EDA 技术的设计方法,进行各种波形的输入设计、设计处理和器件编程。 在 VHDL 语言的编写中按照 语言描述规范 ,实现了几种波形的软件设计和具体逻辑元件结构的硬件映射。 结合 FPGA 的开发集成环 境 Quartus2 软件 ,产生了函 数信号发生器的各种信号,同时完成了 时序和功能仿真, 并 在 GW48CK 型实验开发系统上实现的 波形仿真。 实验表明采用该方法能。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。