基于verilog - hdl语言的多功能波形发生器设计

更新时间:2023-10-23 02:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《基于Verilog HDL语言的多功能波形发生器设计》 第1页 共22页

基于Verilog HDL语言的多功能波形发生器设计

学生姓名: 指导老师:

摘 要:本文主要探索了应用EDA灵活可重复编程和方便在系统重构的特性,以Verilog HDL为设计语言,将硬件功能以软件设计来描述,提高了产品的集成度,缩短开发周期。所设计的波形发生器可产生正弦波(sina_wave)、锯齿波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四种信号,能够实现信号的转换并且频率可调;设计的频率计以1Hz为基准信号,测量的范围是1Hz—9999Hz,测量的结果以四位十进制的形式输出。能实现任意波形的输出并且能够测量外来信号的频率,这也是本文的设计思路。

关键词: DDS;;Verilog HDL;EDA;Max+PlusⅡ;波形发生器

Abstract: This article explores the application of EDA to facilitate flexible and reprogrammable and reconstruction in the system features to Verilog HDL design language, the hardware functions to software design to describe and improve product integration, shorten the development cycle. Waveform generator designed to produce sine wave (sina_wave), ramp (swat_wave), rectangular wave (squr_wave), triangular wave (trig_wave) four signals, to achieve signal conversion and frequency adjustable; designed to 1Hz frequency counter For the reference signal, measured in the range 1Hz-9999Hz, the measurement results in the form of four decimal output. which is the design idea of this article .

Key words: DDS; Verilog HDL;EDA; Max+PlusⅡ; a rbitrary waveform generator

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 目 录

1 引言?????????????????????????????????1 2 课题背景及相关技术??????????????????????????1 3 理论基础???????????????????????????????2

3.1 Verilog HDL语言概述??????????????????????2 3.2 Max+plusII简介????????????????????????4 4 EDA多功能波形发生器详细设计?????????????????????6

4.1设计思路????????????????????????????6 4.2任意波形发生器的分块设计????????????????????6 5 任意波形发生器的仿真与实现??????????????????????8 5.1指针控制模块的仿真与实现????????????????????8

5.2数字频率计的仿真与实现?????????????????????9 5.3系统设计有待提高和改进的地方??????????????????12 6 小结?????????????????????????????????13 参考文献????????????????????????????????14 附录??????????????????????????????????15

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 1 引 言

随着数字电子技术迅猛发展,信号源作为常用的电子产品设计工具,其应满足精度高、速度快、分辨率高等要求。DDS是从20世纪70年代发展起来继直接频率合成和间接频率合成之后的第三代频率合成技术。Verilog HDL是一种允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合的硬件描述语言。并采用MAX+PlusⅡ软件进行画图,编译,仿真。

2 课程设计背景及相关技术

随着数字电子技术迅猛发展,信号源作为常用的电子产品设计工具,其应满足精度高、速度快、分辨率高等要求。DDS是从20世纪70年代发展起来继直接频率合成和间接频率合成之后的第三代频率合成技术。Verilog HDL是一种允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合的硬件描述语言。QuartusⅡ6. 0是Altera公司推出的CPLD /FPGA结构化ASIC开发设计软件。

信号发生器(signal generator),又称信号源或振荡器,是一种能在模拟域或数字域中以一定频率产生可复现的精确校准信号的电子测试仪器。根据输出信号波形的不同,信号发生器可以分为:函数信号发生器(正弦信号发生器、矩形信号发生器、三角波信号发生器等)、脉冲信号发生器、随机信号发生器及任意波形发生器等。任意波形发生器(Arbitrary Waveform Generator, AWG),是信号发生器的一种,是能够精确产生用户定义的任意波形的电子测试设备。不同于仅能产生有限简单波形的函数发生器,用户可以对任意波形发生器定义各种不同的复杂可变的波形信号。根据结构形式,任意波形发生器主要有两种:

* 独立控制式任意波形发生器

* 总线控制式任意波形发生器任意波形发生器的关键技术是频率合成技术,目前常用任意波形发生器的频率合成技术主要有DDS技术和可变时钟技术。早期的任意波形发生器仅能输出低频信号,随着数字技术的发展,其输出频率已能达到射频范围。

PLD(Programmable Logic Device)是可编程逻辑器件的总称,PLD基本上可以完成任何数字器件的功能,从高性能CPI到简单集成电路,均可以用PLD实现。通过传统的原理图输入,或是硬件语言的描述就可以自由地设计具备某种功能的数字系统:利用软件仿真功能,可以检验设计的正确性;利用PLD的在线修改能力,可以在不必改

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 动硬件电路的基础上进行修改设计。具备设计时间短,PCB面积小,系统的可靠性强等特点。目前,在通信、自动控制、信息处理等诸多领域发挥着重要的作用。

3 理论基础

3.1 Verilog HDL语言概述

电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。Verilog HDL 硬件描述语言在电子设计自动化中扮演着重要的角色,他是EDA 技术研究的重点之一。

Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些。但Verilog HDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意。

下面列出的是 Verilog 硬件描述语言的主要能力:

(1)基本逻辑门,例如 and 、 or 和 nand 等都内置在语言中。

(2) 用户定义原语( UDP )创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。

(3)开关级基本结构模型,例如 pmos 和 nmos 等也被内置在语言中。 (4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 检查。

(5)可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式 — 使用过程化结构建模;数据流方式 — 使用连续赋值语句方式建模;结构化方式 — 使用门和模块实例语句描述建模。

* Verilog HDL 中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 * 能够描述层次设计,可使用模块实例结构描述任何层次。

* 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 * Verilog HDL 不再是某些公司的专有语言而是 IEEE 标准。

* 人和机器都可阅读 Verilog 语言,因此它可作为 EDA 的工具和设计者之间的交互语言。

* Verilog HDL 语言的描述能力能够通过使用编程语言接口( PLI )机制进一步扩展。 PLI 是允许外部函数访问 Verilog 模块内信息、允许设计者与模拟器交互的例程集合。

* 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级( RTL )到算法级,包括进程和队列级。

* 能够使用内置开关级原语在开关级对设计完整建模。

* 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。 * Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。 * 在行为级描述中, Verilog HDL 不仅能够在 RTL 级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。

* 能够使用门和模块实例化语句在结构级进行结构描述。

* Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。

* Verilog HDL 还具有内置逻辑函数,例如 & (按位与)和 | (按位或)。 * 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。 * 可以显式地对并发和定时进行建模。 * 提供强有力的文件读写能力。

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页

图5.2 产生锯齿波的仿真图

③产生矩形波(squr_wave)时送到DAC0832的数据:

图5.3 产生矩形波的仿真图

④产生三角波(trig_wave)时送到DAC0832的数据:

图5.4 产生三角波的仿真图

由仿真结果可知,改变select[1:0]的值,能够正确的将对应的波形数据送到DAC0832,从而完成了整体设计的第一部分。

5.2数字频率计的仿真与实现

要实现的功能:设计一个四位数字显示的频率计,标准基准时钟采用1Hz(即1s),可以测量1Hz—9999Hz的信号频率。完全采用文本设计,模拟的硬件功能有三部分组成:控制部分、计数测量部分、输出显示数据锁存部分。频率计的程序总体框图及内部部分,内部的握手信号等信息的框图表示如下:

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页

rst inclk input_fre 计数测量部分 load 显示count_en 控制 部分 count_clr 数据锁存部 分 Qout[15:0] warning decodeout[6:0] 动态扫描部 分 ctr_seg[3:0]

图5.6 频率的程序总体框图

1、信号的定义与说明如下: ①:输入部分

input_fre: 输入的待测信号;

inclk: 系统的时钟信号。在计数测量部分,其被分频为1Hz信号;在动态扫描部分,其被分频为动态扫描脉冲。在这里,inclk假设为实验室的4MHz;

rst:系统的复位时钟,高电平有效。 ②:输出部分

Qout[15:0]: 若打算通过数码管静态显示,则Qout[15:12]为千位,Qout[11:8]为百位,Qout[7:4]为十位,Qout[3:0]为个位,都是十进制形式;

warning: 超过量程时输出的警示信号;

decodeout[6:0]: 动态扫描显示时的译码输出,在扫描脉冲的作用下,循环的输出四位数据;

ctr_seg[3:0]: 四个数码管的未选信号,在扫描脉冲的作用下,与相应位的译码信号对应输出。

③:中间握手信号

count_en: 计数允许信号;

count_clr: 在新的一次测量开始时,清除上一次的测量数据,是数码管上的显示数据随时得到更新;

load: 计数数据锁存信号。 2、控制部分各信号的时序关系

输入的系统脉冲经过分频后得到1Hz的计数基准信号,在基准信号每两个时钟周期经行一次频率测量。该部分产生3个控制信号:count_en,count_clr,load。

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 count_clr对计数模块进行复位,持续半个时钟周期;count_en上升沿时刻计数部分开始对输入信号频率进行测量,测量时间恰为一个基准时钟(1Hz),这段时间对输入信号的脉冲进行计数,结果即为信号色频率。load即为产生锁存信号。各控制信号的时序关系如下图所示:

图5.7 各控制信号的时序关系图

3、计数部分的设计

通过控制部分送来的控制时序,计数部分可以在一个基准时钟周期内对输入的信号进行频率测量,在计数的同时通过程序控制,使输出都为BCD码。

4、锁存部分设计

在load信号的时序作用下,完成输出数据锁存。 5、动态扫描部分的设计

在扫描时序的作用下,送出每一位的译码数据(decodeout[6:0])及对应的字位选通控制信号(ctr_seg[3:0])。

该模块的功能采用Verilog HDL来描述,程序fre_measure.v请见附件。编译正确后将其创建为fre_measure.bsf模块,然后采用图形编辑方式,完成频率计这部分电路的设计。

该部分功能验证的波形仿真结果如下:

①:当input_fre设置为40Hz时,仿真的波形如下:

图5.8 40Hz仿真波形图

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 如上图所示,Qout显示数据为:0040,即40Hz。同时将input_fre与clk_1Hz对照比较,亦可数出clk_1Hz一个周期内input_fre为40(图中clk_1Hz半个周期内input_fre为20)。同时译码输出为3F、66,分别代表0、4的字型码。

②:当input_fre设置为200Hz时,仿真的波形如下:

图5.8 200Hz仿真波形图

如上图所示,Qout显示数据为:0200,即40Hz。同时将input_fre与clk_1Hz对照比较,亦可数出clk_1Hz一个周期内input_fre为200(图中clk_1Hz半个周期内input_fre为100)。同时译码输出为3F、5B,分别代表0、2的字型码。

【说明】:为了仿真时减轻CPU的运算量,程序中的1Hz分频数据改为199(原数据是

1999999),动态扫描时钟分频改为9(原数据是4999),不影响研究问题的实质。

由上面的仿真结果可知,频率计能够正确的测量出输入信号的频率,从而完成了整体设计的第二部分。

5.3系统设计有待提高和改进的地方

频率计的结果如果可以可用字符LCD显示,让EDA送出相应的LCD控制信号;频率计的测量范围可通过选择不同的基准频率(比如10Hz、100Hz、1KHz)来扩展,即可以实现“可选量程”的数字频率计;利用频率计电路来显示波形发生器的输出波形的频率及波形标识,这样就实现了实验室中函数发生器的雏形:能实现任意波形的输出及频率显示并且能够测量外来信号的频率,这也是本文最初的设计思路,那样设计就更加完美。

王枫 《基于Verilog HDL语言的多功能波形发生器设计》 第3页 共22页 6 小 结

本课题要求基于可编程逻辑器件,使用硬件描述语言VHDL编写一个汽车尾灯控制器芯片,并用Max Plus II软件进行仿真。根据自己对汽车尾灯的理解我设计了四大功能:一是检查功能,二是刹车功能,三是左转功能,四是右转功能。由此必需设计出五个大的模块:一是控制模块,此模块是总的控制系统,将其它模块的功能融合在一起,便于进行集中的控制和操作;二是检查模块,此模块是一个分模块,主要功能是对在汽车尾灯整个工作的过程中,在任一状态的任一时刻,检查汽车自身是否处于正常状态,各电路系统和车身安全是否良好。三是刹车模块,此模块也是一分模块,主要功能是当驾驶人员遇险需要刹车踩下刹车键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。四是左转模块,主要功能是当驾驶人员需要转弯按下左转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。五是右转模块,此模块也是一分模块,主要功能是当驾驶人员需要转弯按下右转弯键时,尾灯有规律闪烁,提示后面驾驶人员和车辆注意。在整个电路设计完毕并仿真成功后发现,其实整个电路设计实现的功能还是比较实用和易于操作的,而自己也为此付出了许多:从根据课题要求查找相关资料,学习硬件语言,到自己能够独立编写小程序;从对Max Plus II软件的摸索,一次次修改程序,到仿真得到较满意的结果;从对截图工具的搜索下载,论文资料的搜集,到文字排版的学习。在设计过程中遇到了很多困难,在指导老师的指引和同学的帮助下,通过不断探索学习,使问题得到了一定的解决。终于使汽车尾灯控制器的控制,检查,刹车,右转等基本功能都实现了,美中不足的是汽车尾灯的各个仿真结果都有一定的延时。

通过本学期课程设计的学习,我从中学习到了很多东西,对可编程逻辑器件,VHDL语言,Max Plus II软件有了一定的了解,尤其是用VHDL语言编程和仿真。在本次设计中最大的收获是在不断地发现问题,分析问题,解决问题的过程中培养了自己的科研能力,为今后的学习工作做了一个良好的铺垫。

本文来源:https://www.bwwdw.com/article/7d3f.html

Top