基于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 型实验开发系统上实现的 波形仿真。 实验表明采用该方法能。基于fpga的信号发生器的设计6波形(编辑修改稿)
相关推荐
、气压、电器、机械气液联合和电液联合等方式。 目前采用的主要是前三种。 据资料统计,液压占 55%,气压占 40%,电器占 1%。 液压驱动 液压驱动的特点有 : 1)驱动力和驱动力矩较大,臂力可达 100 公斤。 2)速度反应性较好。 因为被驱动件的速度快慢取决于油液的容积变化,所以当不考虑油液的温度变化时,被驱动系统的滞后也几乎没有,而且液压机构的适量轻、惯性小,因此它的速度反应性较好。
管,由于其响应频率很高,速度快又比较容易实现。 所以其对应的电路图是: 图 26 PIN 光电二极管的电路图及其放大电路 至此讲解了传感器的三个模块: DAC8571, LD, Ge 薄膜, PIN 光电二极管,以及一些用于电路信号放大的电路图。 通过这三个模块就能够得到我们想要的信号外界一些参量的电信号。 然而 FPGA 不能够 识别模拟信号所以需要把电信号转化成数字信号。
构体( Architecture) 结构体用于描述所设计芯片的逻辑功能。 它用于描述系统的数据流程、系统的行为,以及系统的数据构成形式。 在该部分, VHDL 语句的主要功能是指明所设计的芯片实现什么具体的功能,以及元件的 内部联系和连线。 通常情况,结构体对于输入输出的关系有三种方式进行描述:行为描述、寄存器传输描述、和结构描述,不同的描述方式仅仅是体现在所编写的语句上
人工智能及电子技术等有效地综合运用于交通运输管理体系统中,建立一种在大范围内、全方位发挥作用的准时、准确、高效的交道运输管理体系。 早期的智能交通研究工作,可以追溯到 1970 年,当时美国开发出了 ERGS电子道路诱导系统 (Electronic Route Guidance system)。 随后,日本在 1973 年,开发出了 eATes 汽车交通综合控制系统 (emprehensive
30 基于 FPGA 的 MCS51 单片机的定时模块设计 1 第一章 绪 论 课程设计背景知识 单片机的特点 单片机属于计算机的一个种类,是指一个集成在 一 块芯片上的完整计算机系统。 尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件: CPU、内存、内部和外部总线系统,目前大部分还会具有外存。 同时集成诸如通讯接口、定时器,实时时钟等外围设备。
出。 静态显示时,只要进行逐行扫描,第 i位出现‘ 0’时,则选通第 i行。 所以当按下停止键时,则直接输出 1639。 b1111_1111_1111_1110。 当有其他键按下时则触发移位。 移位时,首先启动计数器 ,当每计满 9, 999, 999(即)时,行数据移位一次。 如图 44所示,仿真 key_up键按下时, row_data每 循环右移一次。 列数据控制模块