ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:169.62KB ,
资源ID:7923078      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7923078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CPLDFPGA实验台设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

CPLDFPGA实验台设计.docx

1、CPLDFPGA实验台设计摘 要本系统中主要运用了电路编辑、VHDL语言来设计,并配合Altera公司的MAX+PLUSII软件进行仿真调试,该软件完全集成化,易学易用,它可以在多种平台上运行。在设计本系统时,将其分解为若干个子系统。子系统再分解为一个个功能独立的模块,这些模块经过设计、仿真、功能正确后,像拼积木似的根据需要进行不同的拼接,完成特定的功能。运用可编程逻辑器件,是不仅能在短时间里完成计划任务,而且能使系统的速度更快,体积更小,重量更轻,功耗更少,加密性能更可靠,满足现代电子发展的需要。本系统主要设计的是键盘扫描电路,数码显示电路,A/D、D/A控制器电路,然后运用可编程逻辑器件进

2、行硬件验证。关键词: VHDL 模块 仿真 AbstractThis system make use of primarily the electric circuit edits, the language of VHDL to design, and match with the company of Altera MAX+PLUSII software proceeds to imitate to really adjust to try, that software gathers completely, is easy to be learned and used easily, i

3、t can run on various platform.While designing the system, it is septrated from some sub-system. The sub-system resolves to an again independent mold in function in each piece, these moldses piece through design, imitate true, function right empress, resemble put together the wooden blocks according

4、to need to be proceeded to put together to connect differently, complete the particular function.The programmable logic in application apparatus can not only complete to plan the mission within short time, but also can make system speed is sooner, the physical volume is smaller, the weight is lighte

5、r, the power is less, encrypt the function is more dependable.it satisfy the demand of the modern electronics development.This system designs primarily is a keyboard to scan the electric circuit, number display, A/ D, D/ A controller circuit, then we make use of the programmable logic apparatus whic

6、h proceeding the hardware the verification.Key words: VHDL, Module, Really- Imitate第一章绪论1 1.1引言1第二章VHDL语言的概述3 2.1VHDL语言的概述3 2.2VHDL语言特性3 2.3VHDL语言的基本结构4第三章EPM7128S芯片简介5第四章CPLD/FPGA实验平台设计7 4.1CPLD实验平台功能概述7 4.2CPLD实验平台功能模块及VHDL程序设计说明8 4.2.1键盘显示VHDL程序设计8 4.2.2A/D采样控制器设计及VHDL程序设计说明27 4.2.3D/A接口电路与波形发生器设

7、计30结 论33致 谢34主要参考文献35第一章 绪 论1.1引言随着技术的发展,电子信息类产品的开发研制出现了两个趋势:开发的复杂程度加深和产品面世的时限紧迫。就是说,一方面开发人员需要将更多的功能、更高的性能和更丰富的技术含量集成于所开发的电子系统之中,另一方面要让产品尽早地进入市场。因此,增强系统功能、提高系统性能、缩短系统开发周期以及尽早推出产品并上市等对电子产品的开发提出了越来越高的要求。解决这个问题的方法就是在系统设计引入可编程逻辑器件,并采用EDA(电子设计自动化)的设计方式。以硬件描述语言表达设计意图、大规模可编程逻辑器件(CPLD/FPGA)作为硬件载体、计算机作为设计开发工

8、具、EDA软件作为开发环境的现代电子设计方法日趋成熟。目前,掌握这种先进的电子设计技术的人才还十分匮乏,这就给高等院校提出了急切的要求,即一方面要深入进行高等院校的教育改革,更新教学内容,培养大批适应这种技术发展所需要的科技人才;另一方面,要大量更新现有的实验用电子仪器设备,引进各种先进的可编程逻辑器件开发实验装备,提高学生的综合素质,适应未来的要求。使用可编程逻辑器件不仅能短时间内完成设计任务,而且能使系统的速度更快,体积更小,重量更轻,功耗更小,加密性能可靠,满足现代电子发展需要。为适应电子技术发展的进步和国际竞争对人才的需求,提高我院电子技术教学的质量和水平,使学生对可编程逻辑器件的开发

9、实验环境有深刻的感性认识,开发一套完整的CPLD/FPGA实验系统势在必行。基于上述考虑,我们认为:为了让学生尽快掌握可编程逻辑器件的开发技术,关键在于能否给学生提供一个可编程器件的开发实验环境。改革传统的课程实验模式,而专门研制具有系统级综合能力的实验设备。本CPLD/FPGA实验平台包括体现CPLD/FPGA开发技术的基本方面,如核心CPLD/FPGA芯片,程序下载装置,CPLD/FPGA器件开发、调试、仿真所需要的软件平台,实现基本功能的其他器件和装置等。基本实现键盘扫描,屏幕显示,A/D转换和控制器设计以及D/A接口电路与波形发生器设计等实验模拟仿真目的就是用最简单、最直接的方法体现C

10、PLD/FPGA技术开发的原理和方法。第二章 VHDL语言的概述2.1 VHDL语言的概述目前最通用的硬件描述语言有VHDL与Verilog两种。1982年美国国防部的一个分支专案要求所有的数字电路必须用VHDL语言设计。1983年的IBM及TI等公司在此专案规定下,开始开发VHDL。随后IEEE也认可此成果为IEEE标准,1993年又修订为93年版的IEEE1076号标准10。后来将一种可配合集成工具的VHDL程序包,特别命名为IEEE1076.3,并成为1076号IEEE标准的一部分。最近,新标准包IEEE1076.4被开发出来,成为建立ASIC 及FPGA的模型函数库。VHDL的设计层面

11、可以划分为系统层、算法层、寄存器传输层、逻辑层以及电路层。另一支VHDL语言的主流是Verilog,其建模能力可以涵盖所有范围1。2.2 VHDL语言特性VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成

12、内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的 12。VHDL语言可描述一个数字电路的输入、输出以及相互间的行为与功能。而其硬件关联性的语法与形式虽类似于一般程序语言,但是涵盖许多与硬件关联的语法构造。其特有的层次性由上而下的结构式语法结构适合大型设计项目的分包下去,各自独立运行。从抽象的层次而言,VHDL的语句分成以下4个大类3 :采用语言逻辑方式直接描述硬件电路的工作,表示一个设计的功能或算法,描述IC内部电路行为。在此结构定义中可以同时包含并行描述与顺序语句。2 数据流从数据输入与输出的观点,大部分的并行语句都用于数据转换工作。3 结构式允许设计者以树

13、状形式调用内置电路组件。通常以引脚图方式调用并连接。从硬件的角度说,调用组件就像在组合与连接电路元器件一样。4 寄存器传输式VHDL是一种类型化的语言,一种数据类型的数据内容不能指定给其他类型的数据,而且不同数据类型的数据需经过转换才能相互运算。每一种电路的VHDL码都是实体与结构的成对组合,先用实体来定义一个IC电路引脚规格及基本参数,然后在用结构定义IC内部电路的功能运做,即构成一个完整的电路模块6 。2.3 VHDL语言的基本结构一个完整的VHDL语言程序通常包括实体(entity)、构造体(architecture)、配置(configuration)、包集合(package)和库(l

14、ibrary)5个部分。前4种是可分别编译的源设计单元。实体用于描述所设计电路系统的外部接口信号,系统的输入输出端口及属性都是在实体中定义的;构造体用于描述系统内部的结构和行为,系统要实现的功能都是在构造体内用语言进行描述的;配置用于从库中选取所需单元来组成系统设计的不同版本;包集合存放各种设计模块都能共享的数据类型、常数和子程序等;库存放已经编译的实体、构造体、包集合和配置。库可由用户生成或者是由ASIC芯片制造商提供,以便在设计中为大家所共享。这种功能可以通过特定的语句来实现8。在VHDL语言程序中,最重要的就是实体和构造体部分。它们是一个具体设计的核心。在构造体中,通过各种VHDL语句及

15、合理的设计,接受外部输入信号,在构造体中各种信号协调工作,最后得到所需的输出,传送到输出端口和外部进行交流。第三章 EPM7128S芯片简介本设计采用EPM7128S芯片,下面将对其进行简单介绍。ALTERA的EPM7128S系列CPLD是基于第二代MAX结构体系地高性能EEPROM结构的CPLD。完全符合IEEE 1149.1 JTAG边界扫描标准,具有5V ISP的功能。具有最小5ns的引脚到引脚的逻辑时延,最高可175.4MHz的计数频率。引脚可配置为开漏输出。每个宏单元都有独立的可编程电源控制,最多可以节省50%的功耗。宏单元内的寄存器具有单独的时钟和复位等信号。支持多种电压接口7。M

16、AX7128S是一种复杂可编程逻辑器件,IC管脚参阅原理图,是84pinPLCC封装,另外还有其它类型的管脚和封装,选择性强,该IC具有以下主要性能: 以第二代多阵列矩阵(MAX)结构为基础,是一种高性能CMOS EEPROM器件; 通过JTAG(Joint Text Action Group联合测试组)接口可实现在线编程(ISP),本实验板提供JTAG接口; 逻辑密度为2500个可用编程门电路,128个宏单元; 68条可编程I/O口,TTL逻辑电平为5V或3V; 引脚到引脚的逻辑延时为5.0ns,计数器工作频率可达到151.5MHz;有集电极开路选择,可编程宏单元触发器,具有专有的清除(cl

17、ear)、时钟(clock)、输出使能(OE)控制; 与不同电源电压的系统接口,VCCIO引脚用于输出缓冲器接到5V电源时,输出电平与5V电源兼容,VCCIO引脚用于输出缓冲器接到3.3V电源时,输出电平与3.3V电源兼容,VCCINT用于内部电路和输入缓冲器; 包括一个可编程的程序加密位,全面保护专利设计,防止程序被复制和读出。 在本设计中,电源接5V,系统输入/出端口信号接I/O引脚,CLK接1024KHZ频率,RESET接外部复位电路。 图3-1 EPM7128S芯片引脚图第四章 CPLD/FPGA实验平台设计4.1 CPLD实验平台功能概述本文设计的CPLD/FPGA实验平台为VHDL

18、语言学习实验平台。分为外部硬件和软件两个方面。结构图如下:图4.1 CPLD/FPGA实验平台结构图外部硬件方面包括各个器件的实验板,本次设计的系统是根据现有的电路设计的。软件方面将引用模块化的概念,将各个功能模块分开成多个小的模块,在实现具体功能的时候运用元件转化成原理图方式实现。优点是可以增加程序的调试速度,同时也能够将工作细分(这种概念在以后编写较大型的电路设计程序时,是非常重要且有用的),以提高编程速度。同时针对不同的程序可以适时修改一些参数适应不同的要求,以增加程序的灵活性2。4.2 CPLD实验平台功能模块及VHDL程序设计说明4.2.1 键盘显示VHDL程序设计一、键盘扫描电路模

19、块设计键盘扫描的电路如附录流程图4.2分频器电路、键盘扫描计数器电路、键盘column和row按键检测电路、按键抖动消除电路、键盘编码电路等组成11。图4.2键盘扫描电路流程图下面分块介绍各电路VHDL程序实现及简单原理。1 分频器电路模块 如果外加信号频率为3.6864MHZ,由于键盘扫描不需要那么高的频率,所以现在设计严格分频电路将频率降低为1KHZ,因此可以利用如下程序来实现该电路。library ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scan_gen isgeneric (osc

20、_f : integer := 3686 ; osc_bit : integer := 12);port( clk : in std_logic; scan_f : out std_logic);end scan_gen;architecture behavior of scan_gen is begin scan_freq:process(clk) variable QSCAN: std_logic_VECTOR (osc_bit-1 downto 0); begin if(clkevent and clk=1)then if (qscan=osc_f-1) then for i in os

21、c_bit-1 downto 0 loop qscan(i):=0; end loop; else qscan:=qscan+1; end if; end if; if (qscan=osc_f-1) then scan_f=1; else scan_f= osc_f-1则表示计数超过了3686次,输出scan_f=15。state2:否则,如果计数变量始终没有超过osc_f-1则在3686次中,始终为scan_f=0,这样在输出的时候scan_f的频率就是输入的1/3686,即,输出为分频3686次后的1KHZ。其仿真结果如图4.3所示。图4.3分频器电路模块时序仿真图2键盘扫描计数电路模块

22、以1KHZ分频器电路的输出为clock。按键(key_pressed)为使能位,当使用者尚未按下键盘时,key_pressed=1,此时由015反复计数,并输出计数结果作为按键检测电路的输入而扫描键盘,直到使用者按下键盘时key_pressed=0,计数器停止,持续输出计数值。如下程序实现此功能。library ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity scan_count isport( clk : in std_logic;-cl

23、ock scan_f : in std_logic;-1khz clock key_pressed : in std_logic;-detect key_preeed to stop counter scan_cnt : out std_logic_vector(3 downto 0);end scan_count;architecture behavior of scan_count is signal qscan : std_logic_vector(3 downto 0);begin scan_1:process(clk,scan_f,key_pressed) begin if (clk

24、event and clk=1) then if(scan_f=1 and key_pressed=1) then qscan=qscan+1; end if; end if; end process; scan_cnt=qscan;end behavior;程序设计说明:在entity模块中定义了三个输入,分别是1KHZ的同步时钟、扫描频率scan_f、和按键使能key_pressed4。 在architecture模块中:statel:当key_pressed 和scan_f都为高电平时,将计数教给scan_cnt输出;state2:如果key_pressed为低电平触发,则始终将当前计数

25、输出到scan_cnt。其仿真结果如图4.4所示。图4.4键盘扫描模块时序仿真图3 键盘检测电路模块当尚未按下键盘时,依照每次输入计数对应一排一位的编码方式逐一扫描键盘按钮,如:000代表一行第一个按钮;依次排序。键盘输入到按键检测电路column的值均为1,使键盘无论扫描到哪个键时,均使按键使能位(key_pressed)为1,检测到尚未按下键盘。当使用者按下键盘按钮,则键盘输入到按键监测电路column的值为0,直到键盘扫描到此键时则key_pressed=0检测到已按键。如下VHDL程序代码实现此功能。library ieee ;use ieee.std_logic_1164.all;u

26、se ieee.std_logic_unsigned.all;use ponents.all;entity key_scan isport( col : in std_logic_vector(3 downto 0); scan_cnt : in std_logic_vector(3 downto 0); row : out std_logic_vector(3 downto 0);key_pressed out std_logic);end key_scan;architecture behavior of key_scan isbegin row=1110 when scan_cnt(3

27、downto 2)=00 else 1101 when scan_cnt(3 downto 2)=01 else 1011 when scan_cnt(3 downto 2)=10 else 0111; key_pressed=col(0) when scan_cnt(1 downto 0)=00 else col(1) when scan_cnt(1 downto 0)=01 else col(2) when scan_cnt(1 downto 0)=10 else col(3);end behavior;程序设计说明:在entity模块中定义了col:按键检测电路输入; scan_cnt

28、: 扫描输出脉冲计数; row :行扫描计数;key_pressed :按键确定按下输出;在architecture模块中statel:在没有按键按下的时候,column=”1”,使能key_pressed=”1”;state2:当按下按钮时, column=”0”,而直到扫描电路扫描到该按钮的时候key_pressed=”0”,此时输出按钮编码和按钮位。其仿真结果如图4.5所示。图4.5键盘检测电路模块时序仿真图4 按键抖动消除电路模块抖动消除电路实际就是一个倒数计数器,主要目的就是为了避免按键时键盘产生的按键抖动效应使key_pressed产生不必要的抖动变化,而造成重复统计按键次数的结果

29、。因此,只需要将key_pressed作为计数器的重置输入,使计数器只有在使用者按下按钮时,在key_pressed=0时间足够长的一次使重置无动作,而计数器开始倒计数,自然可以将key_pressed在短时间内变为“0”的情况滤除掉。利用如下VHDL程序来实现该电路。library ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity debounce isport( key_pressed : in std_logic; clk : in std_logic; scan_f : in std_logic; key_valid : out std_logic);end debounce;architecture behavior of debounce isbegin debounce:process(clk,scan_f,key_pressed) variable dbnq : std_logic_vector(5 downto 0); begin if (key_pressed=1) then dbnq:=111111; elsif (clkevent and clk=1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1