基于VHDL语言的十六路彩灯控制器设计.docx

上传人:b****3 文档编号:4471993 上传时间:2022-12-01 格式:DOCX 页数:21 大小:234.19KB
下载 相关 举报
基于VHDL语言的十六路彩灯控制器设计.docx_第1页
第1页 / 共21页
基于VHDL语言的十六路彩灯控制器设计.docx_第2页
第2页 / 共21页
基于VHDL语言的十六路彩灯控制器设计.docx_第3页
第3页 / 共21页
基于VHDL语言的十六路彩灯控制器设计.docx_第4页
第4页 / 共21页
基于VHDL语言的十六路彩灯控制器设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于VHDL语言的十六路彩灯控制器设计.docx

《基于VHDL语言的十六路彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的十六路彩灯控制器设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于VHDL语言的十六路彩灯控制器设计.docx

基于VHDL语言的十六路彩灯控制器设计

1引言

VHDL(VeryHigllSpeedIntegratedCircuitHardwareDescriptionLanguage)即超高速集成电路硬件描述语言。

它是20世纪70年代和80年代初由美国国防部为其超高速集成电VHSIC计划提出的,支持硬件的设计、综合、验证和测试,主要用于描述数字系统的行为、结构、功能和接口[1],也是一种应用较为广泛的HDL语言,能对范围广泛的各种复杂的网络(如电路系统、印刷电路板、芯片、逻辑门等)在不同的抽象级加以描述,而且在整个设计过程中可使用同一种语言。

采用VHDL作为HDL综合设计的优点有:

标准语言,即设计者可在不同的环境(例如MAXPLUSII)下进行设计;仿真和综合均可采用同一种语言进行;VHDL中提供的大量的模块资源,简化了设计者的开发工作;由VHDL描述的源文件既是程序软件又可作为设计的文档。

每当夜幕降临,街上的彩灯便发出形态各异、色彩斑斓的耀眼光芒,尤其是节假日,主要干道更是彩灯齐放,烘托出浓厚的节日气氛.现代舞台上彩灯的闪烁越发引人注目,更容易使人陶醉在欢乐的海洋中.彩灯装置多种多样[2],本文在设计中采用EDA技术,应用目前广泛应用的VHDL硬件电路描述语言,实现十六路彩灯控制器的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD可编程逻辑器件中,完成系统的控制作用。

1.1课程设计背景

随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展,EDA(ElectronicDesignAutomatic)技术的应用引起电子产品及系统开发的革命性变革。

VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。

在这个阶段,人们开始追求贯彻整个系统设计的自动化,可以从繁重的设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。

整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。

VHDL是美国国防部提出的一种经过标准化认证的硬件描述语言,使用VHDL语言进行硬件设计有如下特点:

将一项工程设计(或称设计实体)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。

本文介绍应用美国ALTERA公司的MAX+PLUSⅡ平台,使用VHDL硬件描述语言实现的十六路彩灯控制系统。

1.2课程设计目的

当前电子系统的设计正朝着速度快、容量大、体积小、质量轻、用电省的方向发展。

推动该潮流发展的决定性因素之一就是使用了现代化的设计工具。

EDA[4]是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

EDA现已广泛用于机械、电子、通信、航空航天、化工、矿产、生物、医学和军事等众多领域的设计和制造。

作为通信专业的学生,通过这次EDA方面的课程设计,可以提高我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。

一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。

设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。

 

2理论基础

2.1EDA技术及发展

20世纪末,数字电子技术得到飞速发展,有力地推动了社会生产力的发展和社会信息化的提高。

在其推动下,数字电子技术的应用已经渗透到人类生活的各个方面。

从计算机到手机,从数字电话到数字电视,从家用电器到军用设备,从工业自动化到航天技术,都尽可能采用数字电子技术。

EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、编译、综合、优化、仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(ApplicationSpecificIntegratedCircuit)芯片中,实现既定的电子电路设计功能.EDA的优点:

使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现;极大地提高了设计效率;减少设计周期;节省设计成本。

EDA的发展历经三个阶段:

CAD(ComputerAidedDesign)、CAE(ComputerAidedEngineering)、EDA(ElectronicDesignAutomation)

CAD:

计算机辅助设计。

EDA技术发展的早期阶段,主要借助计算机对所设计的电路进行一些模拟和预测,辅助进行集成电路版图编辑、印刷电路板PCB(PrintedCircuitBoard)布局布线等简单的版图绘制等工作。

CAE:

计算机辅助工程设计。

在CAD的工具逐步完善的基础上发展起来的,尤其是人们在设计方法学、设计工具集成化方面取得了长足的进步,利用计算机建立各种设计单元库,大大提高了工作效率。

20世纪90年代以来,微电子工艺水平已经达到了65纳米级在一个芯片上已经可以集成上百万乃至数亿只晶体管,芯片速度达到了吉比特/秒量级,百万门以上的可编程逻辑器件陆续面世,对电子设计的工具提出了更高的要求,提供了广阔的发展空间。

EDA:

电子设计自动化设计。

前期将设计师的高层次设计由工具来完成,如可以将用户要求转换为设计技术规范,有效处理可用资源与理想设计目标之间的矛盾按具体的的硬件、软件和算法分解设计等。

设计师可以在不太长的时间内使用EDA工具,通过一些简单标准化的设计过程,利用微电子厂家提供的设计库来完成数万门ASIC和集成系统的设计与验证。

EDA以系统级设计为核心,包括系统行为级描述与结构综合,系统仿真与测试验证,系统划分与指标分配,系统决策与文件生成等一整套的电子系统设计自动化工具。

不仅具有电子系统设计的能力,而且能提供独立于工艺和厂家的系统级设计能力,具有高级抽象的设计构思手段。

提供方框图、状态图和流程图的编辑能力,具有适合层次描述和混合信号描述的硬件描述语言(如VHDL、AHDL或Verilog-HDL),同时含有各种工艺的标准元件库。

EDA设计流程如图1.1所示:

图1.1EDA设计流程图

用VHDL硬件描述语言的形式来进行数字系统的设计方便、灵活,利用EDA软件进行编译、优化、仿真极大地减少了电路设计时间和可能发生的错误,降低了开发的成本,这种设计方法已成为当今数字系统设计的潮流[3]。

2.2.VHDL语言概述

电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。

VHDL硬件描述语言在电子设计自动化中扮演着重要的角色,他是EDA技术研究的重点之一。

硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件描述语言,VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)于1983年由美国国防部发起创建,由IEEE进一步发展并在1987年作为IEEE标准10760发布。

因此,VHDL成为硬件描述语言的业界标准之一。

VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。

VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用VHDL语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。

一个完整的VHDL程序包括以下几个基本组成部分:

实体(Entity),结构体(Architecture),程序包(Package),库(Library)。

其中,实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。

程序包存放各设计模块能共享的数据类型,常数,子程序等。

库用于存放已编译的实体,机构体,程序包及配置。

VHDL语言的编译环境有不同的版本,我们应用的是Altera公司的Maxplus软件,它的操作顺序如下:

使用TEXTEDITOR编写VHDL程序使用COMPILER编译VHDL程序;使用WAVE2FORMEDITOR,SIMULAROT仿真实验;使用TIMINGANALTZER进行芯片的时序分析;用FLOORPLANEDITOR锁定芯片管脚位置;使用PROGRAMMER将编译好的VHDL程序下载到芯片中。

VHDL进行工程设计的优点是显而易见的:

(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。

符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

(6)用VHDL语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。

在VHDL语言中,状态机有两种:

莫尔型和米勒型。

莫尔型状态机的输出仅是状态向量的函数,输出信号只和状态机所处的状态有关。

图2.1如下:

图2.1莫尔型状态机模型

米勒型状态机的输出变化要领先一个时钟周期,它的输出既和当前状态有关,又和所有输入信号有关。

换句话说,在米勒型状态机中一旦输入信号发生变化或者状态发生变化,输出新好多将随之发生变化。

图2.2如下:

图2.2米勒型状态机模型

由于本设计的状态变化与输入信号有关,所以采用米勒型状态机。

较好的解决了五种状态(复位状态,测试状态,设置状态,烹调状态,完成状态)之间的转化。

程序中,首先使控制器处于复位状态,此时把所有信号清零,再根据输入信号转换状态。

综上所述,VHDL语言的极强的行为描述能力和丰富的仿真语句及库函数,决定了它具有支持大规模设计的分析和已有设计的再利用功能5和功能6,用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表。

这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。

VHDL的设计流程如下:

1.设计规范的定义。

明确设计的目的,进行设计的总体规划。

分析设计要求,以及自己要达到的设计目的和目标。

2.采用VHDL进行设计描述。

这部分包括设计规划和程序的编写。

设计规划主要包括设计方式的选择及是否进行模块划分。

设计方式一般包括直接设计,自顶向下和自底向下设计。

3.VHDL程序仿真。

对于某些人而言,仿真这一步似乎是可有可无的。

但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。

另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。

4.综合、优化和布局布线。

综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式。

5.仿真。

这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。

2.3MaxPlusII概述

MaxPlusII是美国Altera公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方式,是一个完全集成化,易学易用的可编程逻辑设计环境。

它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等),宏功能元件(包含了几乎所有74系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达0.1ns,非常准确。

MaxPlusII开发系统是一个完全集成化、易学易用的可编程逻辑器件设计和开发系统,它提供了一种真正与结构无关的可编程逻辑设计环境。

它所提供的灵活性和高效性是无可比拟的,其丰富的图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用MaxPlusII软件。

MaxPlusII支持灵活多样的输入方式:

原理图输入、硬件描述语言输入、波形输入,以及层次设计输入。

MaxPlusII的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。

它提供丰富的库单元供设计者使用,包括74系列的全部器件、多种特殊的逻辑宏功能(macro-function)和参数化功能模块(LPM:

LibraryofParameterizedModules),但更为重要的是MaxPlusII还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统,以及使用方便、精度良好的时序仿真器。

与传统的数字电路实验相比,MaxPlusII提供灵活多样的层次化输入设计功能,具有显著的优势:

1.能进行任意层次的数字系统设计。

传统的数字电路实验只能完成单一层次的设计,使设计者无法了解和实现多层次的硬件数字系统设计;

2.对系统中的任一层次或任一元件的功能进行精确的时序仿真,精度达0.1ns,因此能发现对系统可能产生不良影响的竞争冒险现象;

3.通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正;

4.能对设计方案进行随时更改,并储存设计过程中所有的电路和测试文件入档;

5.通过编译和下载,能在FPGA或CPLD上对设计项目随时进行硬件测试验证;

6.如果使用FPGA和配置编程方式,将不会有器件损坏和损耗问题;

7.符合现代电子设计技术规范。

传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线长短,粗细弯曲方式,可能产生的分布电感和电容效应,以及电磁兼容性等等十分重要的问题。

MaxPlusII还提供设计校验的仿真器,其中包括功能仿真和时序仿真。

仿真器的灵活性很强电路设计完成后,需要验证电路设计的逻辑功能是否正确。

这是一项简单的逻辑检查,可采用功能仿真,这对于初步的逻辑功能检测非常方便。

功能检查完成后,可进行时序仿真。

MaxPlusII的时序分析程序可以计算点到点的器件延时,确定器件引脚上的建立时间和保持时间要求,还可计算最高时钟频率。

用MaxPlusII软件进行逻辑设计的步骤包括:

1.根据所选课题的任务和设计指标要求,确定总体设计方案,画出总体方案的系统框图;

2.进行底层单元电路分析及输入设计、编译、仿真;

3.利用已编译正确的底层单元电路模块,画出顶层电路的原理图,进行编译调试和仿真测试;

4.撰写设计报告。

MaxPlusII的设计流程可以用如下图2.3所示:

图2.3MaxPlusII设计流程

从图2.3可清晰了解到MaxPlusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。

他包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编辑文件汇编以及编程下载9个步骤。

 

3十六路彩灯控制器详细设计

在21世纪的今天,汽车已经逐渐为越来越多的人们所拥有,在家庭中的普及率不断提高,大大的方便了我们的生活。

汽车尾灯由六支只LED灯组成,它是汽车电子电路系统的重要组成部分。

.本文采用EDA技术,利用MaxPlusII工作平台和VHDL设计语言,设计了一个十六路彩灯控制器芯片,该芯片具有六种花型循环变化,有清零开关,并且可以选择快慢两种节拍的功能。

3.1设计方案

用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。

应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。

应用VHDL进行自顶向下的设计,是采用可完全独立于目标器件芯片物理结构的硬件描述语言。

就是使用VHDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。

其设计流程如图3.1所示:

图3.1VHDL自顶向下设计流程

基于可编程逻辑器件CPLD/FPGA的芯片,使用硬件描述语言(VHDL)设计一个十六路彩灯控制器芯片,并进行计算机仿真和编程下载。

要求该十六路彩灯控制器芯片能够实现如下功能:

六种花型循环变化,有清零开关,并且可以选择快慢两种节拍的功能。

本文设计一个十六路彩灯控制器,六种花型循环变化,有清零开关,并且可以选择快慢两种节拍.根据系统设计要求可知,整个系统共有三个输入信号:

控制彩灯节奏快慢的基准时钟信号CLK—IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOSE—KEY;共有16个输出信号LED[15..0],分别用于控制十六路彩灯.根据以上设计要求,我们可将整个彩灯控制器CDKZQ分为两大模块:

时序控制电路SXKZ和显示控制电路XSKZ,整个十六路彩灯控制系统设计的模块图如图3.2所示:

图3.2十六路彩灯控制器图

该框图的实现功能如下:

CHOSE—KEY是彩灯节奏快慢选择开关,高电平有效,用于选择彩灯节奏的快慢。

CLK—IN是控制彩灯节奏快慢的基准时钟信号,任意频率的脉冲,作为时钟信号使用。

CLR是系统清零信号,高电平有效,用于恢复系统的原始状态。

LED[15..0]是16个输出信号,高电平有效,分别用于显示不同控制情况下十六路彩灯显示状态。

3.2设计原理

系统的工作原理如下:

时序控制电路SXKZ根据输入信号CLK—IN,CLR,CHOSE—KEY产生符合一定要求的、供显示控制电路XSKZ使用的控制时钟信号,而显示控制电路XSKZ则根据时序控制电路SXKZ输入的控制时钟信号,输出6中花型循环变化的、控制十六路彩灯工作的控制信号,这些控制信号加上驱动电路一起控制彩灯工作。

3.3模块设计

(1)时序控制电路SXKZ模块

在设计时序控制电路SXKZ模块时,可利用数器来产生所需的控制时钟信号CLK。

具体过程是这样的,在CLK—IN作用下,计数器开始计数,当计数器过到分频值时,对计数器进行清零,同时使输出信号反相,从而实现对CLK—IN的分频。

时序控制电路SXKZ模块的设计思路如下图3.3所示:

图3.3时序控制电路SXKZ模块设计图

其中CHOSE—KEY是彩灯节奏快慢选择开关,用于选择彩灯节奏的快慢。

CLK—IN是控制彩灯节奏快慢的基准时钟信号,任意频率的脉冲,作为时钟信号使用。

CLR是系统清零信号,低电平有效,用于恢复系统的原始状态。

CLK是输出信号,高电平有效。

时序控制电路SXKZ模块的VHDL程序主要代码如下:

BEGIN

IFCLR='1'THEN//当CLR='1'时清零,否则正常工作

CLLK<='0';TEMP:

="000";

ELSIFRISING_EDGE(CLK_IN)THEN

IFCHOSE_KEY='1'THEN//当CHOSE_KEY='1'时产生基准时钟频率的1/4的时钟信号,

IFTEMP="011"THEN

TEMP:

="000";

CLLK<=NOTCLLK;

ELSE

TEMP:

=TEMP+'1';

ENDIF;//当CHOSE_KEY='0'时基准时钟频率的1/8的时钟信号

ELSE

IFTEMP="111"THEN

TEMP:

="000";

CLLK<=NOTCLLK;

ELSE

TEMP:

=TEMP+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

(2)显示控制电路XSKZ模块

在设计显示控制电路XSKZ模块时,可利用常数来定义输出的6种花色,同时采用状态机来设计6种花色号的循环变化。

显示控制电路XSKZ模块的设计思路如下图3.4所示:

图3.4显示控制电路XSKZ模块块设计图

其中,CLK是输入信号,高电平有效。

CLR是系统清零信号,高电平有效,用于恢复系统的原始状态。

LED[15..0]是输出信号,高电平有效。

显示控制电路XSKZ模块的VHDL程序主要代码如下:

BEGIN

PROCESS(CLR,CLK)IS

CONSTANTF1:

STD_LOGIC_VECTOR(15DOWNTO0):

="0001000100010001";

//第一种花色

CONSTANTF2:

STD_LOGIC_VECTOR(15DOWNTO0):

="1010101010101010";

//第二种花色

CONSTANTF3:

STD_LOGIC_VECTOR(15DOWNTO0):

="0011001100110011";

//第三种花色

CONSTANTF4:

STD_LOGIC_VECTOR(15DOWNTO0):

="0100100100100100";

//第四种花色

CONSTANTF5:

STD_LOGIC_VECTOR(15DOWNTO0):

="1001010010100101";

//第五种花色

CONSTANTF6:

STD_LOGIC_VECTOR(15DOWNTO0):

="1101101101100110";

//第六种花色

BEGIN

IFCLR='1'THEN

CURRENT_STATE<=S0;

ELSIFRISING_EDGE(CLK)THEN

CASECURRENT_STATEIS

WHENS0=>

FLOWER<="ZZZZZZZZZZZZZZZZ";

CURRENT_STATE<=S1; //当前状态是S0时,输出为"ZZZZZZZZZZZZZZZZ",下一状态为S1

WHENS1=>

FLOWER<=F1;

CURRENT_STATE<=S2;//当前状态是S1时,输出为F1,下一状态为S2

WHENS2=>

FLOWER<=F2;

CURRENT_STATE<=S3//当前状态是S2时,输出为F2,下一状态为S3

WHENS3=>

FLOWER<=F3;

CURRENT_STATE<=S4;//当前状态是S3时,输出为F3,下一状态为S4

WHENS4=>

FLOWER<=F4;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

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

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