版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于基于 fpgafpga 的实用多功能信号发生器的实用多功能信号发生器 的设计与制作的设计与制作 基于基于 fpgafpga 的实用多功能信号发生器的设计与制作的实用多功能信号发生器的设计与制作 摘摘 要要 多功能信号发生器已成为现代测试领域应用最为广泛的通用仪器之一,代 表了信号源的发展方向。直接数字频率合成(dds)是二十世纪七十年代初提出 的一种全数字的频率合成技术,其查表合成波形的方法可以满足产生任意波形 的要求。由于现场可编程门阵列(fpga)具有高集成度、高速度、可实现大容量 存储器功能的特性,能有效地实现 dds 技术,极大的提高函数发生器的性能, 降低生产成本。 本文首先介绍
2、了函数信号发生器的研究背景和 dds 的理论。然后详尽地叙 述了利用 verilog hdl 描述 dds 模块的设计过程,以及设计过程中应注意的问 题。文中详细地介绍了多种信号的发生理论、实现方法、实现过程、部分 verilog hdl 代码以及利用 modelsim 仿真的结果。 文中还介绍了 altera 公司的 de2 多媒体开发平台的部分功能及使用,并最 终利用 de2 平台完成了多功能信号发生器的大部分功能。包括由 lcd 显示和 按键输入构成的人机界面和多种信号的发生。数字模拟转换器是 burr- brown 公司生产的 dac902。 该信号发生器能输出 8 种不同的信号,并且
3、能对输出信号的频率、相位以 及调制信号的频率进行修改设定。 关键词关键词:信号发生器;dds;fpga;de2 practical fpga-based multi function signal generator design and production abstract multi function signal generator has become the most widely used in modern testing field of general instrument, and has represented one of the development direct
4、ion of the source. direct digital frequency synthesis (dds) is a totaly digital frequency synthesis technology, which been put forward in the early 1970s. using a look-up table method to synthetic waveform, it can satisfy any requirement of waveform produce. due to the field programmable gates array
5、 (fpga) with high integrity, high speed, and large storage properties, it can realize the dds technology effectively, increase signal generators performance and reduce production costs. firstly, this article introduced the function signal generator of the research background and dds theory. then, it
6、 described how to design a dds module by verilog hdl, and introduced various signal occurs theory, method and the implementation process, verilog hdl code and simulation results. this paper also introduces the function of de2 multimedia development platform, and completed most of the functions of mu
7、lti-function signal generator on de2 platform finally. including the occurrence of multiple signal and the man- machine interface which composed by lcd display and key input. digital-to-analog converters is dac902, which produced by company burr-brown. this signal generator can output eight differen
8、t kinds of signals, and the frequency of the output signal, phase and modulation frequency signal also can be modifyed. key words: signal generator; dds; fpga; de2 目目 录录 论文总页数:34 页 1 引言.1 1.1 课题背景 .1 1.2 国内外波形发生器的发展现状 .1 1.3 本文研究的主要内容 .2 2 信号发生器原理.2 2.1 直接数字频率合成技术的基本原理 .2 2.2 相位偏移控制.3 2.3 多种信号的发生 .3
9、 2.3.1 方波的发生 .3 2.3.2 三角波发生 .4 2.2.3 锯齿波发生 .4 2.3.4 pwm 信号发生 .4 2.3.5 spwm 信号发生 .5 2.3.6 am 信号发生 .5 2.3.7 fm 信号发生 .6 2.4 dds 的特点.7 2.4.1 dds 的优点.7 2.4.2 dds 系统的缺点.7 3 系统整体设计.8 3.1 硬件部分 .8 3.1.1 de2 实验板 .8 3.1.2 lcd 模块 .9 3.1.2 dac902.11 3.2 基于 verilog 的 fpga 设计 .12 3.3 软件工具 .12 3.3.1 modelsim.12 3.3
10、.2 quartus.12 3.4 系统设计 .13 3.4.1 系统初始化模块.13 3.4.2 按键模块和 lcd 模块 .13 3.4.3 ram 模块 .14 3.4.4 数据转换模块 .15 3.4.5 dac 驱动模块 .15 3.4.6 系统的运行 .15 4 verilog hdl 代码实现与仿真 .15 4.1 信号发生器模块 .15 4.1.1 频率控制字和相位累加器 .15 4.1.2 相位偏移控制.16 4.1.3 正弦波发生模块 .17 4.1.4 方波发生模块.17 4.1.5 三角波发生模块.18 4.1.6 锯齿波发生模块.18 4.1.7 pwm 信号发生模块
11、 .19 4.1.8 spwm 信号发生模块 .19 4.1.9 am 信号发生模块 .20 4.1.10 fm 信号发生模块 .21 4.2 按键输入模块.22 4.3 lcd 显示模块 .23 4.4 ram 模块 .24 4.5 数据转换模块.25 5 系统测试.26 5.1 控制及显示部分测试.27 5.2 输出频率测试.27 5.3 信号发生测试 .28 5.3.1 正弦波、方波、三角波、锯齿波测试.28 5.3.2 pwm 信号测试 .29 5.3.3 spwm 信号测试 .29 5.3.4 am 信号测试 .29 5.3.5 fm 信号测试 .30 结 论.31 参考文献.32
12、致 谢.33 声 明.34 1 引言引言 1.1 课题背景课题背景 传统的信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类 之间。它能够提供正弦波、余弦波、方波、三角波等几种常用标准波形,产生 其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生 器多采用模拟电子技术,但是模拟器件构成的电路存在着尺寸大、价格贵、功 耗大等缺点。而且要产生的信号波形越复杂,则电路结构也会越复杂。同时还 有两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将 频率调到某一固定值;二是脉冲的占空比不可调节。 现代科学技术的飞速发展对信号源提出了越来越高的要求。这些要求主要 表
13、现在高分辨率、高输出频率、任意波形等方面。此时传统的信号发生器已经 无法满足要求。 直接数字频率合成1(direct digital synthesizer 简称 dds)技术是一种新 的全数字的频率合成原理,它从相位的角度出发直接合成所需波形。这种技术 由美国学者 jtiercy,mrader 和 bgold 于 1971 年首次提出,但限于当时 的技术和工艺水平,dds 技术仅仅在理论上进行了一些探讨,而没有应用到实 际中去。但是随着电子技术的飞速发展,微处理器性能大幅提高,高速的 da 以及随机存储器大量涌现,dds 技术已经变得很容易实现。它已广泛应用于通 讯、雷达、遥控测试、电子对抗
14、以及现代化的仪器仪表工业2等许多领域。将 其与简单电路相结合就可以精确模拟仿真各种信号。 不论是在生产、实验还是在科研与教学上,多功能信号发生器都是用于仿 真实验的最佳工具。随着我国经济和科技的发展,对相应的测试仪器和测试手 段也提出了更高的要求,多功能信号生器己成为测试仪器中至关重要的一类, 因此开发多功能信号发生器具有重大意义。 1.2 国内外波形发生器的发展现状国内外波形发生器的发展现状 早在 1978 年,由美国 wavetek 公司和日本东亚电波工业公司公布了最高取 样频率为 5mhz,可以形成 256 点波形数据,垂直分辨率为 8bit,主要用于振 动、医疗、材料等领域的第一代高性
15、能信号源。经过将近 30 年的发展,伴随着 电子元器件、电路、及生产设备的高速化、高集成化,信号发生器的性能有了 飞速的提高。信号发生器变得操作越来越简单而输出波形的能力越来越强。 90 年代末,出现几种真正高性能、高价格的函数发生器,如 hp 公司推出 了型号为 hp770s 的信号模拟装置系统。它由 hp9770a 任意波形数字化和 hpl776a 波形发生软件组成。hp8770a 实际上也只能产生 8 种波形,而且价格 昂贵。不久以后,analogie 公司推出了型号为 data-2020 的多波形合成器, lecroy 公司生产的型号为 9100 的任意波形发生器等。 到了二十一世纪,
16、随着集成电路技术的高速发展,出现了多种工作频率可 达到 ghz 水平的 dds 芯片,同时也推动了函数波形发生器的发展。2003 年, agilent 公司的产品 33220a 能够产生 17 种波形,最高频率可达到 20m,2005 年的产品 n6030a 能够产生高达 500mhz 的频率,采样的频率可达 1.25ghz。 1.3 本文研究的主要内容本文研究的主要内容 (1) 熟悉 fpga 技术,学习 verilog 语言及仿真工具 modelsim 和综合工具 quartus ii 的使用; (2) 熟悉 de2 平台的使用,并学会利用 de2 平台进行系统设计和开发; (3) 对 d
17、ds 理论进行研究和分析,选择一种适合于 fpga 实现的方案; (4) 设计一个完整的实用的信号发生器系统,包括多种信号的发生、lcd 显示及按键控制等; (5) 利用 de2 平台实现信号发生器系统。 2 信号发生器原理信号发生器原理 2.1 直接数字频率合成技术的基本原理直接数字频率合成技术的基本原理 直接数字频率合成技术是根据奈奎斯特取样定理,从连续信号的相位 出 发将一个信号取样、量化、编码,最后形成一个信号函数表,并且事先存于 rom 中。在信号合成时,通过改变相位累加器的频率控制字,来改变相位增 量,而相位增量的不同将导致一个周期内取样点的不同,从而改变频率。具体 的 dds 实
18、现时,是通过在采样频率不变的情况下,改变相位累加器的频率控制 字,将这种变化的相位、幅值量化的数字信号通过 da 变换及滤波,最终得到 合成的模拟信号。 r o m d a 图 2-1 dds 的基本结构图 dds 主要由相位累加器、波形 rom、dac 以及低通滤波器等组成,如图 2-1 所示。位相位累加器的位数为 n,每一个取样时钟相位累加器都会对频率控 制字 k 进行累加。相位累加器的高位输出作为波形 rom 的地址,从而实现了 波形相位到幅值的转换。波形数据经 dac 转换得到阶梯状的信号,通过滤波 器输出相对平滑的波形。 如果相位累加器的长度为 n 位,时钟脉冲频率为,频率控制字为
19、k, c f 这时可得 dds 的输出频率如公式 2-1 所示。 (2-1) c n o f k f 2 由公式 2-1 可以看出,相位累加器的长度 n 决定了累加器输出的数字阶梯 波的频率精度。而且 n 越大,得到波形的频率精度就越高。另 k=1,即可得到 dds 的频率分辨率如公式 2-2 所示。 (2-2) c n l ff 2 1 由 dds 的结构可以看出 dds 输出信号的频率分辨率是由相位累加器的位 数 n 决定,相位分辨率由 rom 的寻址位数决定,而幅值分辨率是由 dac 的 数据位数所决定。 2.2 相位偏移控制相位偏移控制 由相位累加器送出的相位(地址)经过查表进行从相位
20、到幅度的转换就可 以得到需要的正弦波。若在相位累加器的输出相位上加上一个小的数值,那么 查表后得到的数据也会相应的超前,也就是说此时的输出波形的相位会相对于 原来的波形超前。而且这个超前的相位值应该是和在相位加器输出相位上加的 数值成正比的。 设相位累加器输出的相位是 n 位,当在当前相位累加器输出的相位上叠加 一个大小为 p 的数值后,现在输出波形的相位相对于先前的相位就超前,如p 公式 2-3 所示。 (2-3)pp n 2 360 2.3 多种信号的发生多种信号的发生 对于正弦波的发生,通常都采用上述查表的方法。当然这种方法也实用于 其它的波形的发生。但是考虑到各种不同的波形的特点,也可
21、以采用更为简便 的方法得到。 2.3.1 方波的发生方波的发生 同样取相位累加器的最高几位作为方波发生器的地址。根据相位累加器的 原理可知,该地址是随时间线性变化的, 如图 2-2 所示。假设 ob 正好为输出波 形的一个周期,那么在 b 点时地址应该 刚好计满,即地址的每一个二进制位都 是 1。那么可知在 ob 的中点 a 处以前地 址的最高位都为 0,而在 a 点以后的地 址最高位都为 1。 利用这一特点,可以随时检查地址 的最高位的电平。当最高位为低电平时 o ab a b o 0 xxxxxx1xxxxxx 2-2 图 2-2 方波的发生 (为 0 时) ,则说明此时处于方波前半个周期
22、,这时输出全部置 1,输出波形为 高电平。反之,当地址的最高位为高电平(为 1)时,输出全部置 0,输出波形 为低电平。这样便可得到占空比为 50%的标准方波,而且该方波的频率正好等 于相位累加器的溢出率。 2.3.2 三角波发生三角波发生 同样取相位累加器的最高几位作为三角波发生器的地址。设 ob 正好为一个 周期。 在前半个周期输出波形与地址的波 形是一致的。利用这一点可以直接将地 址信号作为输出信号送出。在后半周期 地址信号波形与输出波形不相同,但是 可以明显的看出二者的斜率正好相反。 此时若将地址信号全部按位取反,就可 以得到输出波形,如图 2-3 所示。 检查地址信号的最高位的电平变
23、化情况。当最高位为低电平时,直接将地 址信号作为输出信号送出;当最高位为高电平时,将地址信号全部按位取反再 输出。这样就可以得到一个频率正好等于相位累加器的溢出率的标准三角波。 2.2.3 锯齿波发生锯齿波发生 锯齿波的波形与三角波的前半个周期相同,因此可以采用同样的发生方式。 取相位累加器的最高几位作为地址,并将地址信号直接输出就可以得到锯齿波。 同理,产生的锯齿波的频率也正好等于相位累加器的溢出率。 2.3.4 pwm 信号发生信号发生 脉冲宽度调制(pwm),是英文 pulse width modulation 的缩写,简称脉宽调 制,是利用微处理器的数字输出来对模拟电路进行控制的一种非
24、常有效的技术, 广泛应用在从测量、通信到功率控制与变换的许多领域中。实际应用中通常是 使用一个高精度的计数器来实现的。 这里直接取相位累加器的最高几位作 为计数器。同时还需要一个寄存器用于存 放脉宽值。将计数器的值与寄存器的值作 比较。当计数器值小于寄存器值的时候, 输出为高电平;当计数器的值大于寄存器 的值的时候,输出翻转为低电平。这样就 能得到一个 pwm 信号,而且该信号的脉 宽取决于寄存器中数值的大小。当寄存器 o ab 2-3 a o 2-4 pw m 图 2-3 三角波的发生 图 2-4 pwm 信号的发生 值增加,则输出波形脉宽增大;当寄存器值减小,则输出波形的脉宽减小,如 图
25、2-4 所示。 2.3.5 spwm 信号发生信号发生 所谓 spwm,就是在 pwm 的基础上改变了调制脉冲方式,脉冲宽度时间 占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输出。 它广泛地用于直流交流逆变器等,比如高级一些的 ups 就是一个例子。三相 spwm 是使用 spwm 模拟市电的三相输出,在变频器领域被广泛的采用。 spwm 信号可以通过一个频率较低的正弦信号与另一个频率较高的三角波 信号做比较得到。把正弦波看作调制信号, 三角波看作载波,将二者经过比较器调制 得到 spwm 信号。但是这种方法比较麻烦, 所以这里借鉴了前面所用过的 pwm 的发 生方式。产生
26、pwm 波形的时候需要一个 寄存器用于存放脉宽值,通过修改该寄存 器的值就可以修改输出波形的脉宽。那么, 如果当该寄存器的值按正弦规律变化的话, 输出波形的脉宽值也会按正弦规律变化, 如图 2-5 所示。 同样取相位累加器的最高几位作为计数器,而该相位累加器的溢出率就相 当于是载波的频率。调制信号的发生可以采用前面的正弦波的发生方式。但是 这里需要另外一个独立的相位累加器专门为正弦波发生器提供地址信号,该相 位累加器的溢出率就是调制信号的频率。再将正弦波值送到控制脉宽的寄存器, 经过与计数器的比较就可以得到一个 spwm 信号。 2.3.6 am 信号发生信号发生 在线性调制系列中,最先应用的
27、一种幅度调制是全调幅或常规调幅,简称 为调幅(am) 。不但在频域中已调波频谱是基带调制信号频谱的线性位移,而 且在时域中,已调波包络与调制信号波形呈线性关系。 设调制信号为 (2-4))cos()(tutu m 载波信号为 (2-5))cos()(tutu ccmc 根据调幅波的振幅与调制信号成正比,所以可得调幅波的表达式为 4 (2-6))cos()()(ttukutu cacmam a o 2-5 spw m 图 2-5 spwm 信号的发生 调幅系数为 (2- cm ma a u uk m 7) 在这里的正弦波的变化范围都是从 到,如图 2-6(a)所示。但是实际制 m u m u 作
28、时的正弦波需要由前面讲过的正弦波发 生器来产生,它的变化范围是 0 到(n n 2 为 rom 中存储的数据的位数) ,如图 2-6(b)所 示。 令,则可得到 1 2 n cm u (2- 1 2)()( n trtu 8) 于是调幅波的表达式可以表示为 (2-9) 1 1 11 2 2)( )2)(2)( n n n a n am tr trktu 由于输出信号不能小于零,所以还要在上叠加一个大小为的一)(tuam 1 2 n 个直流分量。同时令=1,则可得 a k (2-10))(2 2 )()( 2)()( 1 1 1 tr trtr tutu n n n amout 其中,是调制信号
29、, 是载波信号,两路信号都必须由两个完全)(tr)(tr 独立的电路产生。 2.3.7 fm 信号发生信号发生 fm 信号即频率调制信号,它的特点是载波的频率会随调制信号的幅度变 化而发生相应的偏移。 设调制信号为 (2-11))cos()(tutu m 载波信号为 (2-12))cos()( 0 tutu ccmc 则调频信号可以表示为 (2-13) t fcmfm dttukutu 0 )(cos)( 但是实际上这样做起来会十分地复杂。根据前面的正弦波发生原理,输出 n 2 1 2 n 0 0 (a) (b) (a) (b)rom m u m u u(t ) r(t ) 2-6 图 2-6
30、 两种正弦波 正弦波的频率是由频率控制字来决定,而且输出频率是随频率控制字的变化做 线性变化。所以将调制信号直接作用于频率控制字就可以输出调频信号。 设在没有调制信号的时候频率控制字为,当输入调制信号后就可得 0 kk 到 (2-14))( 0 tkukk 在实际的正弦波发生器中产生的正弦波的变化范围是 0 到(n 为)(tr n 2 rom 中存储的数据的位数),所以可得到 (2-15)2)( 1 0 n trkkk 其中调制信号必须由另外的独立的电路来产生。)(tr 2.4 dds 的特点的特点 2.4.1 dds 的优点的优点 由于 dds 自身的数字化结构,它具有下列优点: (1)频率
31、分辨率高。从公式 2-2 可知,相位累加大的位数越多,输出的信 号的精度就会越高。 (2)频率转换时相位保持连续。在进行频率转换时只需要修改频率控制字, 而相位累加器中的值不会发生跳变。因此输出的信号的相位也不会发生跳变。 (3)频率切换时间短。通常频率控制字的传输时间及以低通滤波为主的器 件响应时间很短,因此高速 dds 系统的频率切换时间可以达到 ns 级。 (4)输出的频率范围宽。dds 输出的频率最低一般可达到几 hz,有的甚 至可以达到 1hz 以下。而输出的最高频率可达到系统时钟的一半。 (5)可以用于产生任意波形。通过事先在 ram 中存储波形,或通过一些 数字合成的方式,dds
32、 可以产生任意波形。 2.4.2 dds 系统的缺点系统的缺点 从理论上说,dds 的最高输出频率只能达到系统时钟频率的一半,而且在 实际应用中还要小于此值。要想获得较高的输出频率,就必须提高系统的时钟 频率,那么 dds 系统的相位累加器、波形存储器、d/a 转换器等都必须同时 工作在较高的时钟频率下。这样的话,它的实现就依赖于高速数字电路和高速 d/a 转换器。这也是 dds 系统在早期没有得到重视,直到最近几年才迅速发 展的原因。同时,dds 系统先采用数字技术构成离散信号,再将该离散信号变 换成模拟信号输出。在此过程中必然会产生一定的误差,尤其是要产生相位截 断误差,因而噪声和杂散是不
33、可避免的。 3 系统整体设计系统整体设计 3.1 硬件部分硬件部分 3.1.1 de2 实验板实验板 de2 开发板是 altera 公司针对大学教学及研究机构推出的 fpga 多媒体开 发平台。de2 为用户提供了丰富的外设及多媒体特性,并具有灵活而可靠的外 围接口设计。de2 能帮助使用者迅速理解和掌握实时多媒体工业产品设计的技 巧,并提供系统设计的验证。de2 平台的设计和制造完全按照工业产品标准进 行,可靠性很高3。 图 3-1 de2 实验板 de2 平台上提供的资源如下: (1) altera cyclone ii 系列的 ep2c35f672c6 fpga,内含 35 000 个
34、逻辑单元 (le); (2) 主动串行配置器件 epcs16u30; (3) 板上内置用于编程调试和用户 api 设计的 usb blaster,支持 jtag 模 式和 as 模式; (4) 512k 字节 sram; (5) 8m 字节 sdram; (6) 1m 字节闪存(可升级至 4m 字节); (7) sd 卡接口; (8) 4 个按键 key0key3; (9) 18 个拨动开关 sw0sw17; (10) 9 个绿色 led 灯 ledg0ledg8; (11) 18 个红色 led 灯 ledr0ledr17; (12) 两个板上时钟源(50mhz 晶振和 27mhz 晶振),
35、也可以使用外部时钟; (13) 24 位 cd 品质音频的编/解码器 wm8371,带有麦克风的输入插座、线 路输入插座和线路输出插座; (14) vga dac adv7123 (含有 3 个 10 位高速 dac)及 vga 输出接口; (15) 支持 mtsc 和 pal 制式的 tv 解码器 adv7181 及 tv 接口; (16) 10m/100m 以太网控制器 dm9000ae 及网络接口; (17) usb 主从控制器 isp1362 及接口; (18) rs232 收发器 max232 及接口; (19) ps2 鼠标/键盘连接器; (20) irda 收发器; (21) 带
36、二极管保护的两个 40 脚扩展端口 gpio; (22) 216 字符的 lcd 模块; (23) 平台通过插座接入直流 9v 供电,并有电源总开关; 图 3-2 de2 板上的资源 3.1.2 lcd 模块模块 数据显示采用 de2 板上自带的 lcd。该 lcd 模块能显示各种 ascii 字符, 每一行能显示 16 个字符,共显示两行,一共能显示 32 个字符。模块内部带有 ascii 码字库,不需要外部提供。模块提供了 8 位并行和串行两种通信方式, 使用灵活。 图 3-3 lcd 结构 lcd 模块内部有一个指令寄存器和一个数据寄存器,分别用于存入指令和 数据。当管脚 rs 为 0
37、时,对模块内部的指令寄存器操;当管脚 rs 为 1 时,对 模块内部的数据寄存器操作。管脚 r/w 为 0 明表示对模块进行写操作,管脚 r./w 为 1 时表示对模块进行读操作。这里只对模块进行写操作,具体的时序如 图 3-4 所示。 图 3-4 lcd 写时序 表 3-1 lcd 写时序中的各种时间的意义及值的大小 3.1.2 dac902 dac902 是高速的 12 位数字模拟转换器,最高转换速率可达 165msps。dac902 输出电流信号,有较高的输出阻抗(200k),输出电流可达 20ma。 dac902 的输出电流是两路互补输出的电流的总和。 (3-1) outoutoutf
38、s iii 具体的输出电流决定于送入 dac 数据的大小, (3-2)4096/(codeii outfsout (3-3)4096/4096(codeii outfsout 其中,code 是 dac 的数据输入字符的十进制表示形式。此外,是 outfs i 参考电流的 100000 倍,是由参考电压和外部设置电阻,电流设置确定的。 (3-4) setrefoutfs rvi/32 在输出时需要一个负载电阻将电流信号转化面电压信号。那么最终输出为 公式 3-5 和公式 3-6。 (3-5) loadoutout riv (3-6) loadoutout riv dac902 的写操作非常简单
39、。将 12 位数据送到数据端口,通过控制时钟信 号的变化就可以将数据写入,如图 3-5 所示。 3-5 d ac 图 3-5 dac 写时序 表 3-2 dac 写时序中的各时间的意义 symboldescriptionmintypmaxunits t1clock pulse high time3.0ns t2clock pulse low time3.0ns tsdata setup time1.5ns thdata hold time2.5ns tpdpropagation delay time(t1+t2)+1ns tsetoutput setting time to 0.1%30.0n
40、s 3.2 基于基于 verilog 的的 fpga 设计设计 verilog hdl 是目前应用最为广泛的硬件描述语言。verilog hdl 可以用来 进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序 分析等。 verilog hdl 适合算法级,寄存器级,逻辑级,门级和版图级等各个层次 的设计和描述。verilog hdl 进行设计最大的优点是其工艺无关性。这使得工 程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节, 只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。 verilog hdl 是一种硬件描述语言(hardware des
41、cription language),为了制作 数字电路而用来描述 asics 和 fpga 的设计之用。verilog 的设计者想要以 c 编程语言为基础设计一种语言,可以使工程师比较容易学习。 3.3 软件工具软件工具 3.3.1 modelsim mentor 公司的 modelsim 是业界最优秀的 hdl 语言仿真软件,它能提供友 好的仿真环境,是业界唯一的单内核支持 vhdl 和 verilog 混合仿真的仿真器。 它采用直接优化的编译技术、tcl/tk 技术、和单一内核仿真技术,编译仿真速 度快,编译的代码与平台无关,便于保护 ip 核,个性化的图形界面和用户接口, 为用户加快调
42、错提供强有力的手段,是 fpga/asic 设计的首选仿真软件。 3.3.2 quartus altera 的 quartus ii 可编程逻辑软件属于第四代 pld 开发平台。该平台支 持一个工作组环境下的设计要求,其中包括支持基于 internet 的协作设计。 quartus 平台与 cadence、exemplarlogic、 mentorgraphics、synopsys 和 synplicity 等 eda 供应商的开发工具相兼容。改进了软件的 logiclock 模块设 计功能,增添了 fastfit 编译选项,推进了网络编辑性能,而且提升了调试能力。 quartusii des
43、ign 提供完善的 timing closure 和 logiclock 基于块的设计流 程。quartusii design 是唯一的一个包括以 timing closure 和基于块的设计流为基 本特征的 programmable logic device (pld)的软件。 quartus ii 设计软件改进了 性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供 fpga 与 mask-programmed devices 开发的统一工作流程。 quartus ii 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观 易用的接口,越来越受到数字系统设计者的欢迎。 3.
44、4 系统设计系统设计 系统的设计主要是基于 de2 实验平台,具有友好的人机交互界面。具体包 括了按键输入、lcd 显示、系统初始化、ram、数据转换处理、信号发生器、 dac 转换几个模块,如图 3-6 所示。系统时钟选用 de2 上自带的 50mhz 时钟 信号。 lc d d ac r am 3-6 图 3-6 系统总框图 3.4.1 系统初始化模块系统初始化模块 当系统刚启动时,ram 中并没有任何数据。但是其它几个模块的运行却必 须依赖于 ram 中的数据。为解决这个问题,这里专门设计了一个系统初始化 模块。 模块内部包括一块 rom 和 ram 的写时序控制电路。rom 包括 32
45、 个 8 位 的静态存储器,能存放 32 个 ascii 代码,用于存放初始化数据。该初始化数 据主要用于 lcd 显示,其中包括了频率、相位和波形发生方式的默认值。 ram 的写时序控制电路用于将 rom 中的数据写入 ram。 3.4.2 按键模块和按键模块和 lcd 模块模块 de2 实验板上共有四个按键,分别是 key0 到 key3,如图 3-7 所示。在 普通模式下 key1 和 key2 用于波形发生模式的切换,并能过波形发生模式的 切换输出不同的波形。在此模式下按下 key0 就可以进入编程模式。在该模式 下可以通过 key1 和 key2 对频率或相位进行修改。key3 可以
46、使光标向左移 动。在此模式下专门增加了一个拨码开关 sw0 用于光标在上下行之间的切换。 此时按下 key0 可以返回普通模式,同时还可以将设定好的波形输出。 lcd 显示模块会不停的将 ram 中的 ascii 数据送到 lcd 显示。图 3-8 所 示为刚初始化完成时 lcd 显示内容。第一行显示的数值为输出信号的频率,在 spwm、am、fm 三种波形发生模式下表示载波频率。第二行左边的数值在不 图 3-7 按键示意图 key0key1key2key3 f : 0 , 0 0 1 , 0 0 0 h z p : 0 , 0 0 0s i n e 图 3-8 初始化时的 lcd 显示 同的
47、波形发生模式下表示不同的意义。在正弦波、方波、三角波、锯齿波四种 波形发生模式下,该数据表示输出波形的偏移相位(数据范围是 0 到 360,单 位是度) ;在 pw 波形发生模式下该数据表示输出波形的占空比(数据范围是 0%到 100%) ;在 spwm、am、fm 发生模式下该数据表示调制信号的频率(单位是 hz) 。各种波形发生方式的显示内容如表 3-3 所示。 表 3-3 各种波形发生模式与 lcd 显示的对照 编号01234567 波形发生模式正弦波方波三角波锯齿波pwmspwmamfm 显示内容sinesquatriasawtpwmspwmamfm 3.4.3 ram 模块模块 在系
48、统的 7 个模块中,ram 处于中心位置。它是由 32 个 8 位存储器构成, 能存储 32 个 ascii 代码。它在系统中起着数据存储、各模块间数据交流以及 协调各模块间的有序运行的作用。ram 的数据交流功能包括: (1)在系统启动时由初始化模块将初始化数据写入 ram; (2)lcd 显示模块从 ram 中读出数据并显示; (3)按键模块从 ram 中读出数据,修改后又写回 ram; (4)数据处理模块从 ram 中读出数据并转换。 ram 它的协调作用包括: (1)在系统初始化完成之前禁止其它所有模块对它的所有读写操作; (2)当有按键操作时关闭 lcd 显示模块和数据转换模块; (
49、3)当数据处理模块运行时关闭 lcd 显示模块; (4)协调各模块间的地址和数据信号。例如:lcd 显示时,需要将 lcd 显示地址送入,同时将得到的数据送到 lcd 的数据端口;而在数据处理时则需 要将要处理数据的地址送入,同时将得到的数据送到数据处理模块的相应端口。 3.4.4 数据转换模块数据转换模块 ram 中存储的数据全部为 ascii 数据,数据转换模块会将 ram 中对应位 置的 ascii 数据转换为二进制的频率或相位数据。 3.4.5 dac 驱动模块驱动模块 要实现 da 转换首先需要将数字信号送到 dac 的数字输入端。这里利用 de2 实验板上提供的普通 io 口(gp
50、io_1)作为与 dac 芯片的连接端口。其中 dac 时钟采用系统时钟。 bi t 1 cl k bi t 2 +vd bi t 3 d g n d bi t 4 n c bi t 5 +va bi t 6 byp bi t 7 i out bi t 8 ! i out bi t 9 ag n d bi t 10 bw bi t 11 fsa bi t 12 r ef n c i n t/ ext n c pd i o 0 i o 1 i o 2 i o 3 i o 4 i o 5 i o 6 i o 7 i o 8 i o 9 v c c 5 g n d i o 10 i o 11 i o
51、 12 i o 13 i o 14 i o 15 i o 16 i o 17 i o 18 i o 19 i o 20 i o 21 i o 22 i o 23 i o 24 i o 25 v c c 33 g n d i o 26 i o 27 i o 28 i o 29 i o 30 i o 31 i o 32 i o 33 i o 34 i o 35 图 3-9 gpio 与 da 的连接 3.4.6 系统的运行系统的运行 系统的运行主要包括以下几种情形: (1) 系统刚启动时,系统初始化模块将初始化数据写入 ram; (2) lcd 显示模块实时将 ram 中的 ascii 字符直接显
52、示出; (3) 在按键操作时直接修改 ram 中的相应数据; (4) 在按键操作完成后,数据转换处理模块要将 ram 中的 ascii 代码转换 成相应的频率值或相位值,同时将该频率值或相位值送到信号发生器; (5) 信号发生器根据得到的频率或相位值产生相应的信号,该信号最后将 通过 dac 驱动模块送到外部 dac 进行 da 转换。 4 verilog hdl 代码实现与仿真代码实现与仿真 4.1 信号发生器模块信号发生器模块 4.1.1 频率控制字和相位累加器频率控制字和相位累加器 根据公式 2-1 可得 (4-1) c o n f f k 2 取相位累加器的位数 n=32,verilo
53、g hdl 代码如下: module fre_ctrl(fre, fre_word); input 19:0fre; /频率值 output 31:0fre_word; /频率控制字 assign fre_word = 64h1_0000_0000 * fre / 32d50_000_000; endmodule 为相位累加器代码如下: module phase_adder(clk, rest,fre_word, add_phase); input clk,rest; input 31:0fre_word; output 12:0add_phase; reg 31:0a; /累加器寄存器 as
54、sign add_phase = a31:19; / 输出地址 always(posedge clk,negedge rest) begin if(!rest) a = 32h0; else a = a + fre_word; end endmodule 两个模块的 modelsim 仿真结果如图 4-1 所示。 图 4-1 相位累加器的仿真结果 4.1.2 相位偏移控制相位偏移控制 由式公式 2-3 可得公式 4-2。 (4-2)pp n 360 2 取相位累加器的输出相位位宽为 n=13 得到 verilog hdl 代码如下: module phase_ctrl(set_phase,ad
55、d_phase,phase); input 8:0set_phase; /设定的相位超前量 input 13:0add_phase; /相位累加器的输出相位 output 8:0phase; /输出相位 assign phase12:3 = add_phase12:3 + (18d512 * set_phase)/9d360; assign phase2:0 = add_phase2:0; endmodule 模块的 modelsim 仿真结果如图 4-2 所示。 4-2 图 4-2 相位偏移控制的仿真结果 4.1.3 正弦波发生模块正弦波发生模块 正弦波的每个周期采样 512 个点,数据位宽
56、为 12 位。rom 中存储了一个 完整的周期。 正弦波发生器模块的 verilog hdl 代码如下: module sine_gene(phase,sine_out); input 8:0phase; output 11:0sine_out; sine_rom sinerom(phase,sine_out); endmodule 模块的 modelsim 仿真结果如图 4-3 所示。 图 4-3 正弦波发生模块仿真结果 4.1.4 方波发生模块方波发生模块 verilog hdl 代码如下: module square_gene(phase,square_out); input 8:0ph
57、ase; output 11:0square_out; reg 11:0square_out; always (*) begin if(phase8) square_out = 12h000; else square_out = 12hfff; end endmodule 模块的 modelsim 仿真结果如图 4-4 所示。 图 4-4 方波发生模块仿真结果 4.1.5 三角波发生模块三角波发生模块 三角波发生模块 verilog hdl 代码如下: module triangle_gene(phase,triangle_out); input 12:0phase; output 11:0t
58、riangle_out; reg 11:0triangle_out; always (*) begin if(phase12) triangle_out = phase11:0; else triangle_out = phase11:0; end endmodule 模块的 modelsim 仿真结果如图 4-5 所示。 图 4-5 三角波发生模块的仿真结果 4.1.6 锯齿波发生模块锯齿波发生模块 锯齿波发生模块 verilog hdl 代码如下: module sawtooth_gene(phase,sawtooth_out); input 11:0phase; output 11:0s
59、awtooth_out; reg 11:0sawtooth_out; always (*) begin sawtooth_out = phase; end endmodule 模块的 modelsim 仿真结果如图 4-6 所示。 图 4-6 锯齿波发生模块仿真结果 4.1.7 pwm 信号发生模块信号发生模块 pwm 发生模块 verilog hdl 代码如下: module pwm_gene(dutycycle,phase,pwm_out); input 7:0dutycycle; input 8:0phase; output 11:0pwm_out; reg 11:0pwm_out; w
60、ire 8:0pw; assign pw = (dutycycle%100)*512/100; always * begin if(phase pw) pwm_out = 12hfff; else pwm_out = 12h000; end endmodule 当输出频率为 10khz、占空比为 30%时的 modelsim 仿真结果如图 4-7 所示。 图 4-7 pwm 信号发生模块仿真结果 4.1.8 spwm 信号发生模块信号发生模块 spwm 发生模块 verilog hdl 代码如下: module spwm_gene(pw,phase,spwm_out); input 11:0p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 廊坊市文安县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 恩施土家族苗族自治州建始县2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 吕梁市文水县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 广告位招租方案
- 深度解析(2026)《CBT 4438-2016船用柴油机气缸盖螺栓、贯穿螺栓和主轴承螺栓》
- 深度解析(2026)《CBT 3153-2019船舶机舱监视报警装置技术条件》
- 深度解析(2026)《AQT 2050.2-2016金属非金属矿山安全标准化规范 地下矿山实施指南》
- 2026-2027年人工智能(AI)在职业铁人三项运动中通过运动员生理数据与环境条件优化三个项目间的节奏分配与装备选择获耐力运动科技投资
- 第3课《列夫-托尔斯泰》教学评一体化设计
- 数控设备维修技术专业知识题库及答案
- 油品泄漏事故应急措施
- 小学采购招标制度
- 充电桩安全巡查记录表
- 质控中心工作计划科室质控小组工作计划例文
- 2023公路旋挖钻孔灌注桩施工标准
- 心理测量学第八章-常模参照测验
- 2024年互联网营销师(直播销售员)初级考试题库
- 国家职业技术技能标准 4-10-01-05 养老护理员 人社厅发201992号
- 《跨境电商财税》全套教学课件
- 城市道路挖掘施工方案
- GB/T 43909-2024叉车属具安全要求
评论
0/150
提交评论