文档库 最新最全的文档下载
当前位置:文档库 › FPGA课设-DAC0832接口电路程序设计

FPGA课设-DAC0832接口电路程序设计

FPGA课设-DAC0832接口电路程序设计
FPGA课设-DAC0832接口电路程序设计

DAC0832接口电路程序设计

摘要

根据DAC0832 输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。分析了TI公司的DA芯片DAC0832的工作原理,利用VHDL硬件描述语言中状态机的设计方法设计实现了DA芯片DAC0832与FPGA的接口电路,对FPGA的系统时钟进行分频处理得到的频率为762.9Hz的锯齿波。在Quartus II中完成时序仿真实践证明设计的电路能够稳定、可靠的工作。

关键词:接口电路;DAC0832;EDA;VHDL;FPGA

Abstract

According to the DAC0832 output sequence control, using the interface diagram, by changing the output data to design a sawtooth wave generator.Analyzed the working principle of DA DAC0832 chip of TI company, using VHDL hardware description language design method of state machine design has realized the DA DAC0832 and FPGA chip interface circuit, system clock frequency division processing on FPGA sawtooth wave frequency is 762.9 Hz.In the Quartus II complete timing simulation proved designed circuit can work stable and reliable.

Key words: interface circuit;DAC0832;EDA;VHDL;FPGA

目录

1.前言 (1)

2.EDA概述 (1)

2.1 硬件描述语言 (2)

2.1.1 Verilog-HDL (2)

2.1.2 VHDL (3)

2.2 可编程逻辑器件 (4)

2.3 EDA 软件 (6)

3.DAC0832接口电路设计原理 (6)

3.1 DAC0832 接口电路设计 (6)

3.2 DAC0832 接口电路程序设计 (7)

4.软件设计与仿真 (8)

4.1 VHDL 程序设计 (8)

5. 软件仿真 (10)

5.1 编辑和输入设计文件 (10)

5.2 创建工程 (11)

5.3 全程综合与编译 (12)

5.4 仿真测试 (12)

6. 课设总结 (13)

参考文献 (15)

1.前言

数模转换器(即DAC)是数字世界和模拟世界之间的桥梁。人类生活在模拟世界中,虽然数字器件及设备的比重日益增强,但是DAC 的发展仍是必不可少的。DAC现已广泛用于多种领域,从航空航天、国防军事到民用通信、多媒体、数字信号处理,都涉及到DAC的应用。

FPGA是目前广泛采用的一种可编程器件。随着微电子技术的发展。现场可编程门阵列(FPGA)得到了飞速的发展。FPGA的时钟延迟可达到纳秒级,结合其并行工作的方式,在超高速、实时测控方面有非常广阔的应用前景,具有工作速度快、集成度高和现场可编程的优点。

2.EDA 概述

20 世纪90 年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA 技术的迅速发展。

EDA 是电子设计自动化(Electronic Design Automation)的缩写,在20 世纪90 年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA 技术就是以计算机为工具,设计者在EDA 软件平

台上,用硬件描述语言HDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度[1]。

2.1 硬件描述语言

硬件描述语言(HDL)[2]是各种描述方法中最能体现EDA 优越性的描述方法。所谓硬件描述语言,实际就是一个描述工具,其描述的对象就是待设计电路系统的逻辑功能,实现该功能的算法,选用的电路结构以及其他各种约束条件等。通常要求HDL 既能描述系统的行为,又能描述系统的结构。HDL 的使用与普通的高级语言相似,编制的HDL 程序也需要首先经过编译器进行语法,语义的检查,并转换为某种中间数据格式。但与其他高级语言相区别的是,用硬件描述语言编制程序的最终目的是要生成实际的硬件,因此HDL中有与硬件实际情况相对应的并行处理语句。此外,用HDL 制程序时,还需注意硬件资源的消耗问题(如门,触发器,连线等的数目),有的HDL 程序虽然语法,语义上完全正确,但并不能生成与之相对应的实际硬件,其原因就是要实现这些程序所描述的逻辑功能,消耗的硬件资源将十分巨大。目前主要有以下两种HDL 语言[3][4]。

2.1.1 Verilog-HDL

Verilog-HDL 语言是在1983 年由GDA(Gateway Design Automation)公司的首创的。主要用于数字系统的设计。设计者可以

用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证,时序分析,逻辑综合等。它是目前应用最广泛的硬件描述语言之一。其最大优点是与工艺无关性,这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级电路及其工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。实际上,这是利用EDA 工具,把逻辑验证与具体工具库匹配,把布线及延时计算由计算机自动完成,从而减轻了设计者的劳动。Verilog-HDL 把数字系统当作一组模块来描述,每一个模块具有模块接口以及关于模块内容的描述,一个模块代表一个逻辑单元,这些模块用网络相互连接,相互通信。由于Verilog-HDL 是标准

化的,所以能把完成的设计移植到不同厂家的不同芯片中去。又由于Verilog-HDL 设计的信号位数很容易改变,所以可以通过对信号位数的修改,来适应不同的硬件规模,而且在仿真验证时,仿真测试用例可以用同一种描述语言来完成。

2.1.2 VHDL

VHDL 语言是美国国防部于20 世纪80 年代后期,出于军事工业的需要开发的。1984年VHDL 被IEEE 确定为标准化的硬件描述语言。1993 年IEEE 对VHDL 进行了修订,增加了部分新的VHDL 命令与属性,增强了对系统的描述能力,并公布了新版本的VHDL,即IEEE 标准的1076-1993 版本。现在,VHDL 已经成为系统描述的国际公认标准,得到众多EDA 公司的支持,越来越多的硬件设计者使用VHDL 描述数字系统。VHDL 涵盖面广,抽象描述能力强,支持硬件的设计,

验证,综合与测试。VHDL 能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路的组成结构进行描述,也可以在行为描述级别上对电路的功能与性能进行描述。无论哪种级别的描述,都可以利用综合工具将描述转化为具体的硬件结构。VHDL 的基本结构包含有一个实体和一个结构体,而完整的VHDL 结构还包括配置,程序包与库。各种硬件描述语言中,VHDL 的抽象描述能力最强,因此运用VHDL 进行复杂电路设计时,往往采用自顶向下结构化的设计方法。比较而言,VHDL 语言是一种高级描述语言,适用于电路高级建模,综合的效率和效果较好。Verilog-HDL 语言是一种低级的描述语言,适用于描述门级电路,容易控制电路资源,但其对系统的描述能力不如VHDL 语言。

2.2 可编程逻辑器件

可编程逻辑器件(简称PLD)[5]是一种由用户编程来实现某种逻辑功能的新型逻辑器件。它不仅速度快,集成度高,能够完成用户定义的逻辑功能外,还可以加密和重新定义编程,其允许编程次数可多达上万次。使用可编程逻辑器件可大大简化硬件系统,降低成本,提

高系统的可靠性,灵活性。因此,自20 世纪70 年代问世以后,受到广大工程人员的青睐,被广泛应用于工业控制,通信设备,智能仪表,计算机硬件和医疗电子仪器等多个领域。目前,PLD 主要分为FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)两大类。FPGA 和CPLD 最明显的特点是高集成度,高速度和高可靠性。高速度表现在其时钟延时可小至纳秒级,结合并行工作方式,在超高速应用领域

和实时测控方面有着非常广阔的应用前景;其高可靠性和高集成度表现在几乎可将整个系统集成于同一芯片中,实现所谓片上系统,从而大大缩小了系统体积,也易于管理和屏蔽。Altera 公司是世界上大的可编程逻辑器件供应商之一。其主要产品有MAX7000/9000,FLEX10K,APEX20K,ACEX1K,Stratix,Cyclone 等系列。

Altera 公司在20 世纪90 年代以后发展很快,业界普遍认为其开发工具MAX+plusⅡ是最成功的EDA开发平台之一,QuartusⅡ是MAX+plusⅡ的升级版本。Xilinx 公司是FPGA 的发明者,其产品种类较全,主要有XC9500/4000,Spartan,Virtex,Coolrunner(XPLA3)等。

Xilinx 公司是与Altera 公司齐名的可编程逻辑器件供应商,在欧洲用Xilinx 器件的人多,在日本和亚太地区用Altera 器件的人多,在美国则是平分秋色。全球PLD/FPGA 产品60%以上是由Altera 和Xilinx 提供的。可以讲,Altera 和Xilinx 共同决定了PLD 技术的发展方向。

Lattice 公司是ISP(在系统可编程)技术的发明者,其主要产品有ispL2000/5000/8000,

MACH4/5,ispMACH4000 等。与Altera 公司和Xilinx 公司相比,Lattice 的开发工具略逊一筹,大规模PLD,FPGA 的竞争力也不够强,但其中小规模PLD 比较有特色。Lattic e于1999 年推出可编程模拟器件,现已成为全球第三大可编程逻辑器件供应商。

Actel 公司是反熔丝(一次性编程)PLD 的领导者。由于其PLD 具有抗辐射,耐高低温,功耗低和速度快等优良品质,在军工产品和宇航产品上有较大优势,而Altera 和Xilinx 公司则一般不涉足军品和宇航市场。

2.3 EDA 软件

目前在国内比较流行的EDA 软件[6]工具主要有Altera公司的MAX+plusⅡ和QuartusⅡ,Lattice 公司的Expert LEVER 和Synario,Xilinx 公司的Foundation 和Alliance,Actel 公司的Actel Designer 等。

3.DAC0832接口电路设计原理

3.1 DAC0832 接口电路设计

DAC0832是采用CMOS/Si-Cr工艺实现的8位D/A转换器。该芯片包含8位输入寄存器、8位DAC寄存器、8位D/A转换器。DAC0832中有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器,可以工作在双缓冲方式下。

FPGA与DAC0832接口电路原理图

FPGA_IO1~8向DAC0832的数据输入口(DI0~DI7)输送数据。

FPGA_IO9提供DAC0832数据锁存允许控制信号ILE,高电平有效。

FPGA_IO10提供DAC0832控制信号(CS:片选信号;Xfer:数据传输控制信号;WR1、WR2:DAC寄存器写选通信号),低电平有效。

Iout1、Iout2、Rfb与运算放大器LM324完成电流/电压的转换(DAC0832属电流输出型)。

3.2 DAC0832 接口电路程序设计

DAC0832 输出控制时序图

根据DAC0832 输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。DAC0832是8位的D/A转换器,转换周期为1μs。锯齿波形数据可以由256个点构成,每个点的数据长度为8位。又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到的锯齿波的频率为762.9Hz。

4.软件设计与仿真

4.1 VHDL 程序设计

DAC0832输出控制接口电路程序符号图

DAC0832 接口电路程序:

-文件名:DAC0832.VHD

--功能:产生频率为762.9Hz的锯齿波。

--最后修改日期:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity DAC0832 is

port(clk:in std_logic; --系统时钟rst:in std_logic; --复位信号

ile:out std_logic; --数据锁存允许信号

cont:out std_logic; --控制信号(WR1、WR2、CS、Xfer)

data_out:out std_logic_vector(7 downto 0)); --波形数据输出

end DAC0832;

architecture behav of DAC0832 is

signal q:integer range 0 to 63; --计数器signal data:std_logic_vector(7 downto 0); --波形数据begin

process(clk)

begin

if rst='1' then q<=0; --复位,对计数器q清零elsif clk'event and clk='1' then

if q=63 then q<=0; --此IF语句对系统时钟进行64分频if data="11111111" then data<="00000000"; --此IF语句产生锯齿波波形数据

else data<=data+1;

end if;

else q<=q+1;

end if;

end if;

end process;

ile<='1';cont<='0';data_out<=data; --ile、cont赋值;波形数据输出end behav;

5. 软件仿真

5.1 编辑和输入设计文件

新建一个文件夹,建立VHDL 文件,输入源程序,文件存盘。

图5-1 建立VHDL 文件

5.2 创建工程

打开并建立新工程管理窗口,讲设计文件加入工程中,选择目标芯片,做好相应设置。

图5-3 建立工程文件

图5-4 将VHDL 文件加入工程

图5-5 FPGA 器件选择

5.3 全程综合与编译

图5-6 综合与编译

5.4 仿真测试

打开波形编辑器,设置仿真时间区域,保存波形文件,将工程的端口信号加入到波形编辑器中,编辑输入信号,设置相应参数和格式,

启动仿真器,观察仿真结果。

图5-6 仿真波形

观察仿真结果,发现得到了对输入时钟这里进行64分频,得到的锯齿波的频率为762.9Hz。

6. 课设总结

本文根据DAC0832 输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。DAC0832是8位的D/A转换器,转换周期为1μs。锯齿波形数据可以由256个点构成,每个点的数据长度为8位。又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到的锯齿波的频率为762.9Hz。此次设计的中心就在于对FPGA 的编程,程序设计的方式决定了输出信号的正确性。了解VHDL 的编程方式,是设计的必要前提。在经过多次编程测试,学习前人的编程思想,借鉴不少的实例后,终于实现了8 种码型的输出;同时在选FPGA 芯片时,由于相同的程序放在不同的芯片上仿真时,波形中会出现一定程度的延时,导致延时大的芯片出现了短的脉冲,所以合理选择芯片也是很重要的。通过这次设计,使我了解了数字基带信号的编码的规则,以及EDA 技术的实用性,对以后

从事相关事业有了一定的基础。此次设计中也存在一些需要优化的设计,如VHDL设计可能设计的更为简便,以减少使用的资源,达到提高速度的目的等,存在许多需要改进的地方。

参考文献

[1]谭会生.EDA 技术基础[M].湖南大学出版社,2004

[2]潘松,黄继业.EDA 技术与VHDL[M].清华大学出版社,2005,7

[3]郑信源.Verilog 硬件描述语言数字电路设计范例[M].北京:机械工业出版社,2005

[4]王伟.VerilogHDL 程序设计与应用[M].北京:人民邮电出版社,2005

[5]杨贵.FPGA 在数字信号处理中的应用与研究[D].湖南大学,2005,10

[6]路而红.电子设计自动化应用技术[M].北京:高等教育出版社,2004,11

相关文档