可编程逻辑器件与硬件描述语言
- 格式:doc
- 大小:308.50 KB
- 文档页数:23
计算机系统设计硬件描述语言与逻辑设计计算机系统设计是指通过软件和硬件的相互配合来实现计算机系统的构建和功能。
在这个过程中,硬件描述语言(HDL)发挥着重要的作用。
HDL是一种用于描述计算机系统硬件的语言,它可以用来设计、验证和仿真数字电子电路,并转化为可实现的布局,进而实现系统功能。
一、硬件描述语言的定义与作用硬件描述语言是一种特殊的编程语言,用于描述计算机硬件的功能和结构。
它能够对硬件进行逻辑设计,并通过编程来实现不同的功能。
常见的硬件描述语言包括VHDL(Very High Speed Integrated Circuit Hardware Description Language)和Verilog。
硬件描述语言的作用有以下几个方面:1. 设计和验证功能:通过使用硬件描述语言,工程师可以对计算机硬件进行设计和验证。
在设计过程中,硬件描述语言可以描述硬件的功能和结构,有助于工程师在设计阶段快速定位问题并进行修正。
2. 面向抽象级别:硬件描述语言可以在不同的抽象级别上进行描述。
工程师可以在高级抽象级别上描述整个系统,也可以在低级抽象级别上描述硬件电路的细节。
这使得硬件描述语言非常灵活,能够适应不同的设计需求。
3. 支持仿真和验证:硬件描述语言可以与仿真工具结合使用,用于验证设计的正确性。
通过对硬件描述语言编写的代码进行仿真,工程师可以模拟不同输入条件下的系统运行情况,从而验证设计的正确性,发现潜在问题。
二、逻辑设计与硬件描述语言逻辑设计是计算机系统设计的一个重要环节,通过逻辑设计,可以实现计算机系统的各种功能。
硬件描述语言在逻辑设计中扮演着关键的角色。
1. 逻辑门电路的描述:逻辑门电路是计算机系统中最基本的组成部分。
硬件描述语言可以用来描述不同类型的逻辑门电路,并通过逻辑门之间的连接实现复杂的逻辑功能。
2. 状态机的设计:状态机在计算机系统中广泛应用,用于描述系统的状态和状态之间的转换关系。
硬件描述语言可以描述各种类型的状态机,包括Mealy状态机和Moore状态机,并实现其对应的功能。
EDA总结知识点eda总结知识点:第一章1.1.1eda的定义:是电子设计自动化(electriondesignautomation)的缩写,是90年代初,从计算机计算机辅助设计cad,计算机辅助制造cam,计算机辅助测试cat和计算机辅助工程(cae)的概念发展起来的。
窄EDA和宽EDA。
在这本书中,我们主要研究狭义的EDA。
狭义eda:以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真等等一系列的工作,最终形成集成电子系统或专用集成芯片的新技术。
也称为:ies/asic自动设计技术。
广义的EDA包括狭义的EDA,以及计算机辅助分析(PSpice、EWB、matlab)和印刷电路板计算机辅助设计PCB CAD技术(如Protel、OrCAD)。
因为在广义的EDA技术中,CAA 技术和PCB CAD技术都不具备逻辑综合和逻辑适配的功能,所以我们不能称之为真正意义上的EDA技术,最好称之为现代电子设计技术。
利用eda技术进行电子系统的设计,具有以下特点:(1)用软件的方式设计硬件(2)软件设计系统向硬件系统的转换由相关开发软件完成。
(3)在设计过程中,可以使用相关软件进行各种模拟;(4)系统可现场编程,在线升级;(5)整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;eda技术进入21世纪后得到了更大的发展,主要表现在:1)使电子设计成果以自主知识产权的形式得到明确表达和确认;2)在仿真和设计方面支持标准语言的强大EDA软件已持续推出;3)电子技术领域全方位融入eda领域,例如:软件无线电的迅速崛起,模拟电路系统硬件描述语言的表达和设计的标准化,系统可编程模拟器件的出现等4)电子领域各个学科的界限更加模糊和包容:模拟和数字、软件和硬件、系统和设备、ASIC和FPGA、行为和结构等。
可编程逻辑器件第章第一章可编程逻辑器件简介引言电子设计的必由之路将是数字化,这已成为有目共睹的事实。
在数字化的道路上,我国电子设计技术的发展经历了许多重大的变革和飞跃。
从传统的应用SSI、MSI等通用的数字电路芯片构成电路系统到广泛地应用单片机,电子设计技术发生了一个巨大的飞跃。
今天,随着VLSI向更高层次的发展,电子产品市场运作节奏的进一步加快,电子设计技术已迈入一个全新的阶段,即CPLD/FPGA在EDA基础上的广泛应用。
它在更高层次上容纳了过去数字技术的优秀部分,但在电子设计的技术操作和系统构成上却发生了质的飞跃。
CPLD/FPGA不但在逻辑实现上是无限的,而且可触及硅片电路线度的物理极限,并兼有串行、并行工作方式,高速、高可靠性以及宽口径适用性等诸方面的特点。
不但如此,随着EDA 技术的发展和CPLD/FPGA向深亚微米领域的进军,它们与MCU、MPU、DSP、A/D、D/A、ROM和RAM等独立器件之间的功能界限将日益模糊。
特别是软/硬件IP芯核产业的迅猛发展,嵌入式通用与标准CPLD/FPGA器件呼之欲出,片上系统(SOC)已近在咫尺。
同时,CPLD/FPGA还打破了软硬件之间最后的屏障,使软硬件工程师有了共同的语言。
可以预测,未来的电子设计将是EDA的时代,而掌握EDA这门技术无疑已成为现代每一位电子设计工程技术人员必不可少的基本技能。
本篇正是鉴于这样的背景,介绍了可编程逻辑器件(PLD)CPLD/FPGA的结构以及通用的硬件描述语言(VHDL),并着重介绍了Altera公司的软件平台MAX+PLUSII的使用和在此基础上的PLD基本设计原理。
第一章可编程逻辑器件简介1.1PLD设计的数字系统的特点可编程逻辑器件(ProgrammedLogicDevice),简称PLD,是一种由用户通过编程定义其逻辑功能,从而实现各种设计要求的集成电路芯片。
它是70年代发展起来的新型逻辑器件,发展至今,已相继出现了PROM、EPROM、PLA、PAL、GAL和ISP等多个品种。
名词概念解释1、名词概念解释:(1) ASIC:Application Specific Intergrated Circuits)即专⽤集成电路,是指应特定⽤户要求和特定电⼦系统的需要⽽设计、制造的集成电路。
(2) FPGA:Field-Prog ram mable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进⼀步发展的产物。
(3) SOC::System on Chip的缩写,称为芯⽚级系统,也有称⽚上系统,意指它是⼀个产品,是⼀个有专⽤⽬标的集成电路,其中包含完整系统并有嵌⼊软件的全部内容。
(4) SOPC:System-on-a-Programmable-Chip,即可编程⽚上系统。
⽤可编程逻辑技术把整个系统放到⼀块硅⽚上,称作SOPC。
(5) NIOS II:Altera 推出的⽀持使⽤专⽤指令的32位RSIC嵌⼊式处理器(6) I/O:I/O是input/output的缩写,即输⼊输出端⼝。
每个设备都会有⼀个专⽤的I/O地址,⽤来处理⾃⼰的输⼊输出信息(7) IP: IP是英⽂Internet Protocol(⽹络之间互连的协议)的缩写,中⽂简称为“⽹协”,也就是为计算机⽹络相互连接进⾏通信⽽设计的协议。
(8) VHDL:是⼀种⽤于电路设计的⾼级语⾔,标准硬件描述语⾔。
(9) verilog HDL:Verilog HDL是⼀种硬件描述语⾔(HDL:Hardware Discription Language),是⼀种以⽂本形式来描述数字系统硬件的结构和⾏为的语⾔,⽤它可以表⽰逻辑电路图、逻辑表达式,还可以表⽰数字逻辑系统所完成的逻辑功能。
(10)HDL:HDL(Hardware Description Language),是硬件描述语⾔。
顾名思义,硬件描述语⾔就是指对硬件电路进⾏⾏为描述、寄存器传输描述或者结构化描述的⼀种新兴语⾔。
可编程逻辑器件可编程逻辑器件(Programmable Logic Devices,简称PLDs)是一种广泛应用于数字电路设计中的集成电路元件。
通过配置,PLDs可以实现各种逻辑功能,从简单的门电路到复杂的数码系统。
PLDs的灵活性和可编程性使得它们成为数字系统设计中不可或缺的组成部分。
PLD的基本原理PLDs由可编程逻辑阵列(PAL)、可编程阵列逻辑器件(PAL)和复杂可编程逻辑器件(CPLD)等几种类型组成。
这些器件包含大量的逻辑门和触发器,用户可以通过编程软件将这些逻辑资源连接在一起,实现特定的逻辑功能。
PLDs的编程可以通过硬件描述语言(HDL)或专门的编程工具完成。
PLD的优势1.灵活性:PLDs可以根据设计需求进行重新编程,而无需更换硬件。
2.快速开发:通过使用PLDs,设计人员可以快速验证设计概念并快速上市。
3.低成本:PLDs的生产成本相对较低,可以有效降低数字系统设计的总体成本。
4.集成度高:PLDs中集成了大量的逻辑资源,可以替代多个离散器件,减小系统的体积和功耗。
PLD的应用领域PLDs在许多领域中得到广泛应用,包括但不限于:•通信:PLDs被用于设计各种通信设备中的数字处理部分,如路由器、交换机等。
•工业控制:PLDs可以用于实现工业控制系统中的逻辑控制功能,提高系统的稳定性和灵活性。
•消费电子:PLDs常被应用于消费电子产品中,如电视、音响等,以实现功能的定制和更新。
•汽车电子:PLDs在汽车电子系统中扮演着重要的角色,可以用于实现车载娱乐系统、发动机控制等功能。
结语可编程逻辑器件(PLDs)作为数字电路设计的重要组成部分,具有灵活性、快速开发、低成本和高集成度等优势,在通信、工业控制、消费电子和汽车电子等领域具有广泛的应用前景。
随着技术的不断进步,PLDs将继续发挥重要作用,为数字系统设计带来更大的便利和创新。
融合硬件描述语⾔提⾼设计数字电路能⼒0引⾔随着专⽤集成电路中可编程逻辑器件的发展,新的数字系统设计正愈来愈多地采⽤可编程逻辑器件实现[1-2]。
因此,可编程逻辑器件代表了现代数字技术的发展⽅向[3]。
随着现代电⼦技术和信息技术的飞速发展,数字电路已从简单的电路集成⾛向数字逻辑系统集成,即把整个数字逻辑系统制作在⼀个芯⽚上(SOC)。
随着可编程逻辑器件的⼴泛应⽤,硬件描述语⾔(Hard Description Language,HDL)已成为数字系统设计的主要描述⽅式[4-5]。
采⽤硬件描述语⾔对数字系统进⾏描述是现代数字系统设计的发展⽅向,掌握硬件描述语⾔⼗分必要。
⽬前较为流⾏的硬件语⾔有VHDL、Verilog HDL等。
由于硬件描述语⾔描述电路具有许多优点,本⽂提出在数字电路的教学中,融合硬件描述语⾔进⾏数字电路的描述,便于提⾼对数字电路的理解,且能够提⾼创新设计能⼒[6]。
1硬件描述语⾔的优点(1)采⽤⾃上⾄下的设计⽅法数字系统已经发展到超⼤规模集成电路⽅向。
过去设计采⽤分离元件和⼩规模集成电路的设计⽅法是积⽊式的⽅式,先进⾏组合“试错”。
⽽采⽤硬件描述语⾔的⽅法则可以在开始从全局描述数字系统功能,即采⽤⾃顶层向下层设计的⽅法。
(2)设计的系统采⽤ASIC芯⽚实现采⽤硬件描述语⾔设计的数字系统可以通过可编程芯⽚或专⽤芯⽚(ASIC)来实现,⽅便修改功能和升级设计,⼤⼤提⾼了灵活性。
⽽采⽤分离元件或⼩规模集成电路的设计⽅法则是使⽤固定的器件,⽆法对器件功能进⾏改造。
(3)设计中存在的问题发现和修改容易采⽤硬件描述语⾔进⾏设计,在设计中可以借助EDA⼯具在早期发现问题,且修改程序⾮常容易。
⽽采⽤分离器件或⼩规模器件的积⽊设计⽅法,则是在设计完成后才能实验,且⼀旦发现设计问题,修改设计⽅案和分离器件不太⽅便,且修改后⼜必须全部设计完成才能再次实验,因⽽灵活性差。
(4)降低了硬件设计的难度采⽤硬件描述语⾔对数字系统进⾏设计,设计⼈员可以专⼼于数字逻辑功能和语⾔的语法规则,⽽可以不必掌握数字硬件芯⽚的内部结构,⼤⼤降低了硬件的设计难度。
FPGA与CPLD编程语言FPGA(可编程逻辑门阵列)和CPLD(可编程逻辑器件)是现代数字电路设计中常用的两种可编程芯片。
它们通过使用编程语言来实现特定的功能和逻辑。
本文将介绍FPGA和CPLD的基本概念,并探讨在这两种芯片上使用的编程语言。
一、FPGA和CPLD的基本概念FPGA和CPLD是数字集成电路的一种,它们可以根据用户的需求和设计要求进行编程,并实现不同的逻辑功能。
FPGA拥有更大的可编程逻辑单元和更灵活的资源分配,使得它在复杂的应用场景下更具优势。
CPLD则相对较小,适用于较简单的逻辑设计。
FPGA和CPLD的核心结构都包含可编程逻辑单元,输入/输出引脚和内部信号线路。
逻辑单元是实现不同布尔逻辑运算的基本组成部分,包括与门、或门、非门等。
输入/输出引脚用于与其他电路或器件进行连接,而内部信号线路则负责连接不同的逻辑单元和输入/输出引脚。
二、FPGA和CPLD的编程语言1.硬件描述语言(HDL)硬件描述语言是一种专门用于描述数字电路结构和行为的编程语言。
它们可以描述各种逻辑门、寄存器、存储器和其他组件之间的连线和交互。
常用的硬件描述语言有VHDL(VHSIC硬件描述语言)和Verilog。
VHDL是一种结构化的硬件描述语言,使用描述性的方式来定义逻辑结构和行为。
它可以描述信号流和结构体等抽象概念,适用于系统级设计和数字电路的高层次描述。
Verilog是一种基于事件驱动的硬件描述语言,具有较高的仿真能力和设计灵活性。
它以模块化方式描述电路和系统,并支持递归实例化和并行语法,适用于协同设计和复杂电路的描述。
2.硬件描述语言(HDL)与编程语言结合除了使用传统的硬件描述语言,FPGA和CPLD编程还可以结合使用高级编程语言,如C语言和VHDL等。
这种结合方式可以更好地利用硬件资源和软件开发环境,提高设计效率和可维护性。
通过在硬件描述语言中嵌入高级编程语言代码,可以实现复杂的算法和数据处理功能,并提供方便的调试和测试手段。
电子工程师面试题及答案1.简要介绍一下你的电子工程背景以及你在之前的项目中扮演的角色。
答:我拥有电子工程学士学位,专注于数字电路设计与嵌入式系统。
在之前的项目中,我主导了一个嵌入式系统设计,包括硬件和软件的开发,成功实现了低功耗、高性能的要求。
2.解释什么是FPGA,以及它在电子工程中的应用。
答:FPGA(现场可编程门阵列)是一种可编程的数字逻辑设备,允许用户根据需要定制硬件。
在电子工程中,FPGA广泛应用于数字信号处理、通信系统和图像处理等领域。
例如,在通信系统中,FPGA可用于实时信号处理,提高系统的灵活性和性能。
3.在嵌入式系统设计中,你是如何进行功耗优化的?请提供一个具体的案例。
答:在一个嵌入式系统设计中,我通过采用先进的低功耗组件、优化算法和深度睡眠模式来降低功耗。
在一个智能家居项目中,我通过调整传感器的采样频率和采用有效的功耗管理策略,成功将系统功耗降低了30%。
4.什么是硬件描述语言(HDL),它在电子工程中的作用是什么?答:硬件描述语言是一种用于描述数字电路和系统的语言,如Verilog和VHDL。
它在电子工程中的作用是用于设计、模拟和验证硬件电路。
通过HDL,工程师可以以类似软件的方式描述硬件,提高开发效率,同时确保电路的正确性。
5.请解释时钟领域交叉和它在数字电路中的影响。
答:时钟领域交叉是在时钟信号传输过程中出现的不同步问题。
它可能导致数据捕获错误和系统不稳定性。
在数字电路中,解决时钟领域交叉通常需要使用同步器、合理的时序约束和时钟域划分等技术,以确保各部分在正确的时钟域中操作,防止时序问题的发生。
6.你在数字信号处理方面有何经验?请分享一个与音频处理相关的项目。
答:我在数字信号处理领域有广泛经验,曾参与设计一个音频处理系统。
通过使用FPGA进行实时信号处理,我们成功实现了噪声降低、均衡和音频编解码等功能,提升了音频系统的整体性能。
7.讲解一下嵌入式系统中的中断处理机制,以及它在系统稳定性中的作用。
EDA技术主要涉及什么内容EDA技术的概念: EDA是电子设计自动化(E1echonics Des5p AM·toM60n)的缩写。
由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义。
但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。
可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。
完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片。
EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。
大致可以分为三个发展阶段。
20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB布同布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。
20世纪80年代的QtE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计而能在产品制作之前预知产品的功能与性能。
20吐纪如年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成。
EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。
该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。
在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。
EDA习题第一章1.1 EDA的英文全称是什么?EDA的中文含义是什么?答:EDA即Electronic Design Automation的缩写,直译为:电子设计自动化。
1.2 什么叫EDA技术?答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。
1.3 利用EDA技术进行电子系统的设计有什么特点?答:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
1.4 从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答:EDA技术的学习主要应掌握四个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统。
其中,硬件描述语言是重点。
对于大规模可编程逻辑器件,主要是了解其分类、基本结构、工作原理、各厂家产品的系列、性能指标以及如何选用,而对于各个产品的具体结构不必研究过细。
对于硬件描述语言,除了掌握基本语法规定外,更重要的是要理解VHDL的三个“精髓”:软件的强数据类型与硬件电路的惟一性、硬件行为的并行性决定了VHDL语言的并行性、软件仿真的顺序性与实际硬件行为的并行性;要掌握系统的分析与建模方法,能够将各种基本语法规定熟练地运用于自己的设计中。
对于软件开发工具,应熟练掌握从源程序的编辑、逻辑综合、逻辑适配以及各种仿真、硬件验证各步骤的使用。
组合逻辑电路实验(一)实验报告一.实验名称:3-8译码器设计 二.实验目的1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤;2.掌握组合逻辑电路设计的一般方法;3.掌握程序下载方法,了解UCF 文件的格式;4.初步了解开发板资源,掌握开发板使用方法。
重点了解滑动开关和LED 显示灯的使用方法。
三.实验内容1.用VHDL 实现3-8译码器模块译码器电路如图2-1所示。
其功能如表2-1所示。
试用VHDL 实现该译码器,并在开发板上进行检验。
表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 01113-8 译码器A B CENY0 Y1 Y2 Y3 Y4 Y5 Y6 Y7图2-1 3-8译码器0 1 1 0 0 1 0 0 0 0 0 00 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验(1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。
(2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。
四.实验步骤1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块;2.新建UCF文件,输入位置约束;3.完成综合、实现,生成下载文件;4.连接开发板USB下载线,开启开发板电源;5.下载到FPGA;6.拨动开关,验证结果是否正确。
五.主要vhdl代码architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0);beginx <= A&B&C;process(en,x)beginif(en='0')thencase x iswhen "000" => Y<="00000001";when "001" => Y<="00000010";when "010" => Y<="00000100";when "011" => Y<="00001000";when "100" => Y<="00010000";when "101" => Y<="00100000";when "110" => Y<="01000000";when "111" => Y<="10000000";when others => NULL;end case;else Y<="00000000";end if;end process;end Behavioral;六.心得体会这次实验内容比较简单,主要是为了熟悉Xilinx ISE及FPGA实验板的使用方法,了解整个开发流程。
ISE是一款功能强大的FPGA设计软件,在实际的设计过程中要注意工程中的FPGA开发板型号等参数的选择应与实际硬件一致,并保证UCF位置约束的正确性,要在头脑中将整个过程无缝衔接,避免细节处错误的发生。
时序逻辑电路实验(一)实验报告一.实验名称:可逆计数器设计二.实验目的1.进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;2.掌握时序逻辑电路设计的一般方法,掌握时钟分频程序设计方法;3.理解VHDL的层次结构设计;4.巩固程序下载方法;5.了解开发板时钟资源,以及时钟分频方法。
三.实验内容1.基本可逆计数器模块可逆计数器电路图及功能表如图3-1和表3-1所示。
根据真值表易写出可逆计数器的vhdl模块,要注意的是:由于其中涉及向量类型的算术运算,所以在库中要添加STD_LOGIC_UNSIGNED.ALL;由于Y[0..7]为out类型,不能获取其值进行操作,应当添加一个信号comb,进行算术运算。
表3-1 可逆计数器功能表 clr en Up/Dn clk Y7 ~ Y0 1 X X X 00000000 0 0 X X 停止计数0 1 1 ↑ 计数器+1操作 01↑计数器-1操作2.1/50000000分频器模块可逆计数器电路图如图3-2所示。
在实验板上提供了50MHz 的系统时钟频率,为获取1Hz 的计数时钟频率,需要对其进行分频,即输入端输入50MHz 的系统时钟频率,然后输出端每过25M 个频率输出信号跳变一次,即可得到1Hz 的频率输出。
3.二选一电路模块二选一电路电路图如图3-3所示。
通过滑动开关即可选择是通过1Hz 时钟输入还是通过外部按键输入。
4.综合原理图(顶层原理图)选择原理图模式,将生成的(已封装)各模块器件组合成最终形式。
如图3-4所示。
clren clkY0 Y1 Y2 Y3 Y4 Y5 Y6 Y7Up/Dn 图3-1 可逆计数器原理图四.实验步骤1.建立工程文件,顶层文件为原理图;2.编写分频模块程序,要求输入为50MHz 系统时钟,输出为1Hz 计数时钟;3.编写2选1模块,输入为按键、1Hz 时钟和开关SW2,输出为计数源;4.编写计数器模块主程序模块;5.在原理图中,将各个模块连接,使用pinhead 分配引脚资源;6.对程序进行功能仿真;1/5000000050M clock1Hz clock图3-2 1/50000000分频器2选1 In1 Dout图3-3 二选一电路In2 SEn(SW1) clkY0(LED0)Y3(LED3) Y4(LED4) Y5(LED5) Y6(LED6) Y7(LED7)Up/Dn(SW0)2选1SW2clr(BTN_EAST)BTN_SOUTH1/50M图3-4 完整的可逆计数器7.下载程序,进行验证。
五.主要vhdl代码--1/50000000分频模块architecture Behavioral of fdiv is signal tmp :std_logic := '0';beginprocess(cin)variable fd:INTEGER:=0;beginif(cin'event and cin= '1') thenfd := fd + 1;if(fd = 25000000) thentmp <= not tmp;fd := 0;cout <= tmp;end if;end if;end process;end Behavioral;--二选一电路模块architecture Behavioral of mux21 is beginprocess(in1,in2,s)beginif(s='0')thendout <= in1;elsedout <= in2;end if;end process;end Behavioral;--基本可逆计数器模块architecture Behavioral of counter issignal comb: STD_LOGIC_VECTOR(7 downto 0):= "00000000"; beginprocess(clr,en,sel,clk)beginif(clr='1')thencomb <= "00000000";elsif(en='1')thenif(clk'event and clk='1')thenif(sel='1')thencomb <= comb + 1;elsif(sel='0')thencomb <= comb - 1;end if;end if;end if;end process;Y <= comb;end Behavioral;六、心得体会这次的实验比较综合,共分为三个模块,通过三个模块的组合完成最终设计。
通过这次实验,我不仅对于vhdl程序的编写更加熟悉,也初步构建起了硬件设计的模块化思想,学习了自顶向下的设计方法,学会了利用ise软件进行电路仿真的方法,并掌握了一些常用的硬件描述方式,大大加深了对于使用vhdl语言描述硬件方式的印象。
状态机电路实验(一)实验报告一.实验名称:按键抖动消除及验证电路设计二.实验目的1.进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;2.了解按键抖动的原因,抖动消除方法3.掌握状态机的设计方法;4.掌握消除抖动的状态机设计方法5.巩固程序下载方法。
三.实验内容1.原理简介按键动作发生时,按键的输出会出现不稳定的逻辑’0’和逻辑’1’的跳变。
该信号直接输入到计数器之类电路,会发生计数错误。
如图3-5所示。
图3-5 信号抖动2.状态分析设置五个状态:S0,S1,S2,S3,S4,S5。
电路的复位信号RST有效时,电路进入复位状态S0,在S0状态下,时钟信号CLK以一定频率采样按键输入信号Key_in,如果采样到Key_in = ‘0’,则停留在S0状态,并继续采样,一旦采样到Key_in=’1’,则转入S1延时状态,进行消抖延时,当延时结束时,Delay_end=’1’,则转入S2状态,在此状态下,时钟信号CLK以一定频率采样按键输入Key_in,如果Key_in = ‘0’则转入S0,否则转入S3;状态S3,S4的转换过程和条件与S2相同,在状态S4下,如果Key_in=’1’,则转入S5状态,当进入S5时,表示经过S2,S3,S4三个连续状态检测按键输入Key_in都为‘1’,则认为按键处于稳定状态,在S5输出按键确认信号Key_confirm=’1’。
同时在状态S5下,时钟信号CLK检测按键输入Key_in,如果Key_in = ‘1’,表示按键未释放,继续停留在S5,检测输入信号,如果检测到Key_in = ‘1’,表示按键已经释放,输出Key_confirm = ‘0’, 返回到状态S0,等待下一次按键操作。