电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

vhdl课程设计报告

来源:莲生三十二作者:开心麻花2025-09-191

vhdl课程设计报告(精选6篇)

vhdl课程设计报告 第1篇

数字系统设计与VHDL课程大作业

具体要求

一、总体要求:

1. 本课程为专业必选考查类课程,以大作业加平时成绩的形式给定最终成绩。

2. 每班六个题目,每4-5为一组,自由组合,分工合作。10月26日上课

前请各班上交分组及组长情况表。

3. 所有作业需完成VHDL核心代码的设计,并采用QuartusII进行相关仿

真或平台实现,否则全组不及格。

4. 各小组推选一人于第十周(11月5日和9日)上讲台讲解题目设计思路、源代码分析、仿真结果及演示。

5. 各小组组长于11月30日前到老师处汇报题目的完成情况,并接受考核。

6. 每名同学于11月30日前提交一份大作业报告,并由班长统一送交老师。

二、大作业题目:

1. 频率计设计(平台实现)

1)

2)

3)

4)能对输入的方波信号频率进行采样; 采样频率范围为0~999999Hz,以1Hz为单位进行显示; 采用六个七段数码管显示当前采样的频率值; 本电路系统输入时钟为6MHz。

2. 方波发生器设计(仿真实现)

1)

2)

3)系统的输入时钟为6MHz; 系统输出频率为对系统时钟的1~32分频;(5位二进制输入); 系统输出频率的占空比可调,分为25%、50%、75%三档;(采用2位二进制

位输入控制)。

3. 竞赛抢答器设计(平台实现)

1)

2)抢答器的输入路数为8路;(8位二进制输入)当主持人宣布开始(按下某一键时为有效),抢答时当某一方先按下按键,其

他键则失效;

3)

4)

5)用1个七段数码管显示抢中的路编号; 系统复位键按下后,进行下一轮抢答; 系统的输入时钟为6MHz。

4. 交通灯控制系统设计(平台实现)

1)交叉路口为十字路口;

2)

3)每路口设直行、左转、右转的方向指示灯; 每个方向指示灯有三种颜色,即红、绿、黄三色。为简化设计,右转指示灯常

绿;黄灯闪动时间间隔为0。5S,持续时间自定义。

4)

5)每路口需用两个数码管显示允许通行或禁止通行的时间; 系统的输入时钟为6MHz。

5. 点阵字符显示控制器设计(仿真实现)

1)

2)

3)用16*16点阵的发光二极管显示字符; 可显示字符为0~9的数字字符与A~F英文字母; 输入为四位二进制矢量。

6. 万年历及电子钟设计(平台实现)

1)

2)

3)

4)能显示年、月、日、时、分、秒、星期,共需15个数码管; 年、月、日、时、分、星期均需可调; 系统默认时间为2000年01月01日00时00分00秒星期6; 系统输入时钟为6MHz。

三、大作业报告要求:

1. 题目功能分析;

2. 总体模块划分;

3. 代码实现;

4. 仿真结果;

5. 设计心得、体会;

6. 报告采用统一的A4封面,其中1、2、5项必须为手写,3、4项为打印。

7. 网络工程专业不再进行期末考试,期终成绩以作业测试、讲解、报告综

合评定,计算机专业还需要进行闭卷考试,但作业测试、讲解、报告占主要部分。

vhdl课程设计报告 第2篇

一、总学时:36(理论学时:20 实验学时:16)学分:2.0

二、教学目的:

现代电子设计技术的核心是EDA(Electronic Design Automation)技术,而EDA的技术基础是PLD(Programmable Logic Device)和EDA软件平台。通过本课程的学习使学生基本掌握在EDA软件平台上,利用硬件描述语言HDL(Hardware Description Language)进行数字系统设计,完成系统的逻辑描述,完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合以及逻辑优化和仿真测试,下载到PLD中,实现既定的逻辑电子线路系统功能。

通过学习这门课程,使学生掌握利用软件设计开发硬件电路的基本技能,为以后在电子产品设计和科学研究工作中的应用打下良好基础。

三、课程内容及学时分配

第一章 概述(2学时)1.1 EDA技术及其发展 1.2 EDA技术实现目标 1.3 硬件描述语言VHDL 1.4 VHDL综合

1.5 基于VHDL的自顶向下设计方法 1.6 EDA技术与传统电子设计方法的比较 1.7 EDA的未来发展趋势

第二章 EDA设计流程及其工具(2学时)2.1 FPGA/CPLD设计流程 2.2 ASIC设计流程 2.3 常见EDA工具 2.4 Quartus II概述 2.5 IP核

第三章 FPGA/CPLD结构与应用(4学时)3.1 PLD的发展历程及分类 3.2 简单PLD原理 3.3 CPLD结构与工作原理 3.4 FPGA结构与工作原理 3.5 FPGA/CPLD测试技术 3.6 FPGA/CPLD产品介绍 3.7 CPLD/FPGA的编程与配置 第四章 原理图输入设计方法(2学时)4.1 原理图设计输入

4.2 编译设计项目 4.3 设计仿真 4.4 器件编程 4.5 波形输入设计方法 第五章 VHDL语言(10学时)5.1 VHDL源程序的基本结构 5.2 VHDL语言的语法规范 5.3 VHDL语言的主要语句及其应用 5.4 用VHDL语言设计组合电路 5.5 用VHDL语言设计时序电路 第六章 状态机的设计(4学时)6.1 一般有限状态机的设计 6.2 Moore有限状态机的设计 6.3 Mealy有限状态机的设计 6.4 状态编码

6.5 状态机剩余状态处理

第七章 设计优化和设计方法(2学时)7.1 面积优化 7.2 速度优化

7.3 Quartus II的优化设计 7.4 其它设置

第八章 EDA工具软件接口(2学时)8.1 EDA软件接口流程 8.2 Synplify与Quartus II的接口 8.3 ModelSim与Quartus II的接口 第九章 EDA系统设计(2学时)9.1 高速A/D采样控制设计

上机实验(16学时)根据实际情况选做5~6个实验 1.原理图输入方法练习: 1.1 简单电路的设计 1.2 利用宏功能模块的设计 2.VHDL语言练习:

2.1 用VHDL语言设计移位寄存器 2.2 用VHDL语言设计高速A/D采样控制 2.3 用VHDL语言设计实时时钟 2.4 汽车尾灯设计 2.5 序列检测器的设计

2.6 正负脉宽数控调制信号发生器的设计 2.7 数字频率计的设计 2.8 秒表的设计

2.9 MCS–51单片机与FPGA/CPLD总线接口逻辑设计 2.10交通灯信号控制器的设计 2.11语音信箱控制系统的设计 2.12 PID控制器的设计

2.13 空调系统有限状态自动机的设计 2.14 闹钟系统的设计

(注意:上机实验2.1---2.14根据所教专业不同选择不同题目)

四、适用专业

控制理论与控制工程、通信工程、电子信息工程、现代电子技术等专业

五、先修课程

数字电子技术、模拟电子技术、电路

六、教材及主要参考书

1.潘松,黄继业.EDA技术与VHDL(第三版).清华大学出版社,2009.9 2.李景华,杜玉远.可编程逻辑器件与EDA技术.东北大学出版社,2000 3.陈琼,潘礼. FPGA系统设计与实践 电子工业出版社,2005

vhdl课程设计报告 第3篇

关键词:实例教学法,学习兴趣

VHDL作为IEEE的标准硬件描述语言和EDA技术的重要组成部分, 经过近二十年的发展和完善, 已经是数字电子系统设计的首选硬件描述语言。目前, 我国大多数高校的信息、电子、通信、计算机等相关专业都开设了数字系统设计课程, 并且许多专业把该课程设置为核心课程。

VHDL语言具有C语言的设计风格, 比如变量、顺序、循环等语法都有很多相同的地方, 但是两者存在许多区别, 不能直接采用C语言程序设计的思想来学习或实现VHDL程序的开发。

主要原因包括:1) VHDL语言是硬件电路描述语言, 以C语言为代表的计算机程序设计语言是软件编程语言, 两者在编程方法与技巧上是不同的;2) VHDL语言与C语言的运行机理不同, VHDL语言在仿真、运行时具有顺序性和并发性, 本质特征是并发性, 而C语言是顺序执行的;3) 虽然VHDL语言与C语言看起来有相似之处, 但实际上两者的语法规则细节仍有很大的区别。多年的教学实践表明许多学生并不能真正地掌握VHDL语言, 因此VHDL语言的学习需要学生克服计算机程序设计语言的思维惯性, 尽快地从整体上把握VHDL语言的程序结构和基本设计方法。

一、实例教学法在《VHDL语言程序设计》课程中作用

实例教学法是在教师指导下, 根据教学目标和教学内容的需要, 通过典型实例的分析和讲解完成教学, 该方法能够调动学生参与学习的主动性和创造性, 激发学生学习的热情。在传统的教学中, 实例教学法一般作为辅助教学手段, 实现某一知识点的讲解, 但是在《VHDL语言程序设计》课程的教学中, 该教学法既是具体知识点讲解的教学手段, 又是教学内容的组织手段。

在《VHDL语言程序设计》课程的教学中, 采用实例教学法组织课程的教学, 不是直接讲解VHDL语言规则, 而是通过典型实例分析, 讲解电路的设计方法, 并对其中涉及的语言规则详细讲解。实例讲解和语言语法规则同步进行, 所有实例讲完, VHDL语言的语法规则也基本讲完。最后通过综合应用实例, 实现对所学知识的深化与拓展。

二、实例教学法在《VHDL语言程序设计》课程中的应用

(一) 实例教学法的教学实施

《VHDL语言程序设计》作为一门数字电路硬件描述语言课程, VHDL语言虽然与计算机程序设计语言有相似之处, 但是从严格意义上讲, VHDL程序不能称为“程序”, 而应称为“代码”, 其语句的运行也不能称为“执行”, 而应称为“实现”, 因此VHDL语言程序设计具有不同计算机编程语言的编程方法与技巧。

数字电路既有简单的组合电路, 也有复杂的片上系统, 复杂的数字电路由简单基本电路组成。基本电路主要包括:多路选择电路、加法器 (减法器) 、D触发器、比较器、计数器、移位寄存器、三态门电路等。教学中采用实例安排组织教学, 由简单到复杂, 并综合考虑VHDL语法规则, 对实例作恰当地取舍和教学顺序调整。课程教学分为三部分:简单实例讲解、VHDL语法规则归纳与补充、复杂实例讲解。

1) 简单实例讲解:简单实例是数字系统设计的基本电路实例, 通过典型实例的讲解, 使学生掌握VHDL语言规则和基本电路的设计。具体的讲解过程如下:a.二选一多路选择器通过该实例讲解简单组合电路的设计方法, 同时讲解VHDL程序的基本结构, 顺序语句 (IF语句、赋值语句) 、并行语句 (进程语句、赋值语句) , 以及BIT数据类型、逻辑操作符等VHDL语法规则;b.D触发器通过该实例讲解时序电路的基本设计方法, 同时讲解的VHDL语法规则中的标准逻辑位数据类型、标准库 (程序包) 、上升沿检测表达式等VHDL语法规则;c.全加器通过该实例讲解加法器 (减法器) 的基本设计方法, 同时讲解CASE语句、例化语句、矢量数据类型等VHDL语法规则;d.计数器通过该实例讲解不同计数器的设计方法, 同时介绍常用数据类型、重载运算符等VHDL语法规则;e.移位寄存器通过该实例讲解移位寄存器的设计方法, 同时讲解VHDL的功能仿真、时序仿真;f.复杂多路选择器分析复杂多路选择器实例, 讲解信号与变量的区别;g.三态门电路通过该实例讲解三态门电路的设计方法, 以满足现实数字电路系统中数据总线设计的需要。

2) VHDL语法规则总结和补充简单实例讲解中的实例不可能覆盖所有的VHDL语法规则, 因此在实例讲解后, 需要对VHDL语法规则总结和补充。在具体教学实施中, 可以采用提问法对所学的VHDL语法规则归纳总结, 同时补充遗漏的VHDL语法规则。

3) 16位CPU复杂实例讲解复杂实例能够深化和提升学生所学的知识, 培养综合运用所学知识解决实际问题的能力。以16CPU设计为基础, 讲解复杂数字电路的设计, 同时讲解设计中所涉及的新知识, 主要包括原理图设计方法、宏模块的调用、状态机设计。

(二) 实例教学法实施的注意事项

在实例教学实施中, 要注重学生的主体性, 提出问题, 解决问题, 对所讲的实例做到深层次分析, 举一反三, 注重程序设计的灵活掌握。实例的讲解和VHDL语法规则的讲解是同步的过程, 没有严格前后之分, 语法规则的讲解融合在实例讲解中。

(三) 实例教学法的教学效果

近四年来, 本人一直负责该课程的教学工作, 其中最近两年采用了实例教学法安排教学, 实践表明实例教学法的应用有效提高了教学效果。根据学校的网上统计教学评价, 近两年的学生教学评价效果由良好达到了优秀的水平;根据本文作者的课后不记名统计, 非常满意和满意率由80上升到93%。

三、结束语

以系统的实例安排教学, 发挥学生在教学中的主体地位, 能够激发学生的学习兴趣, 使学生从整体把握课程的内容。但是采用实例教学法安排教学一般只适应于操作性较强的课程, 对于理论性较强的课程, 大量的实例教学不太适用。此外, 由于目前的教材大多没有采用实例教学法为主线安排课程内容, 因此需要教师编写教材, 或者在对现有教材重新组织。

参考文献

[1]王新辉, 李曾妍.实例教学法在电子技术课程中的研究[J].产业与科技论坛, 2011.

[2]谢文兰.实例教学法在网页设计与制作课程中的应用[J].广东科技, 2011.

vhdl课程设计报告 第4篇

【关键词】PS/2接口;VHDL;FPGA

1.引言

随着社会的发展,嵌入式系统技术越来越多的应用到工业控制、汽车电子、航空航天、环境监测等领域中。键盘作为嵌入式系统中的人机接口设备得到了广泛应用。目前,嵌入式系统中采用的键盘有:独立按键式键盘、简易矩阵键盘。独立按键式键盘有键盘个数少,可靠性低等缺点;而简易矩阵键盘的原理是行、列式的矩阵开关,需要单独设计制作,通用性和可移植性不强,且按键数较多时I/O利用率低,软件上为了提高可靠性还要进行延时去抖动、按键扫描以及与CPU的通信处理等,一方面降低了系统的效率,另一方面增加了系统设计的成本。微机系统中的PS/2键盘,具有内嵌式自动去除按键抖动设计,能自动地识别键的按下与释放,软硬件开发成本低且性能稳定;因此,将PS/2键盘作为嵌入式系统中的输入设备已成为业界研究的热点。目前,关于PS/2键盘控制的应用大部分采用单片机或微机控制;与此相比,FPGA具有灵活性更强,集成度更高,容易移植等特点。

本文在分析PS/2协议、工作原理的基础上,给出了一种基于VHDL硬件描述语言的PS/2键盘接口的设计方法,并实现于Cyclone II EP2C5T144C8芯片上。

2.PS/2键盘接口协议

2.1 物理特性

PS/2设备接口用于许多现代的鼠标和键盘,常用为6脚mini-DIN,其引脚结构和外形如图1所示。

图1 PS/2硬件接口外形图

PS/2设备分主从设备,其物理特性要求保证时钟、数据、电源和地线间的互相连接。PS/2键盘靠PC的PS/2端口提供+5V电源,时钟和数据管脚为集电极开路形式,必须接大阻值的上拉电阻(一般设置在主设备中),主从设备间的数据通信采用双向同步方式传输,时钟信号一般由从设备产生。信号平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。

2.2 数据包结构

键盘码分为通码和断码,键盘的任一按键状态每改变一次,键盘至少会发出三个字节的数据包,在有键按下时会向主机发送该键的通码(Make Code):一般键值为一个数据,扩展键值为两个数据;当键释放时发送断码(Break Code):一般键值为0xF0+一般键值的通码,扩展键值,为0xE0+0xF0+扩展键值的第二个通码。例如:键“A”的通码为0x1C,键“A”的断码为:0xF0,0x1C。因此当要传送键“A”时,键盘发送的数据包的代码是:0x1C,0xF0,0x1C,而扩展按键通常通码与断码均要多一个字节。

2.3 工作时序

PS/2协议是一种双向半双工串行通信协议:数据线上每发送一位数据同时在时钟线上发送一个脉冲,数据就被读入.键盘可以发送数据到主机,数据在时钟下降沿被读取;主机也可以发送数据到键盘,数据在时钟上升沿被读取,但主机在总线上有优先权,只要把时钟拉低即可抑制键盘通讯.时钟信号由键盘产生,最大时钟频率为33kHz,推荐频率在15kHz。通信两端通过Clock同步,通过Data交换数据。其传输时序根据传输的方向不同分为发送和接收两个不同时序逻辑,图2是从键盘到主机的时序图。

图2 键盘发送数据时序图

当键盘要向到主机通信时,它首先检查时钟是否是高电平.如果不是则表明是主机正在通信,必须缓冲要发送的数据直到重新获得总线的控制权(键盘有16个字节的缓冲区),即等到时钟线是高电平才能发送数据。且从键盘到主机的数据只能在时钟的下降沿时才能被读取。

当主设备到键盘进行通信时,主设备会首先把时钟线和数据线设置为“请求发送”状态。具体方式为:首先下拉时钟线至少100us来抑制通信,然后释放时钟。键盘检测到这个状态,开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。在此过程中,设备在不超过10us的间隔内就会检查这个状态。当设备检查到该状态时,即产生时钟。与键盘发送的数据读取方式不同,主机发送的数据必须在时钟的上升沿读取。

3.传统的PS/2键盘接口控制

目前,嵌入式系统中,PS/2键盘的控制设计主要采用单片机来实现,PS/2键盘与单片机的连接有多种方式:(1)时钟与数据线均与单片机的普通I/O口相连,软件设计时采用查询方式检测时钟信号来接收键盘信息,这种方式可以节省单片机的中断资源,但软件设计的查询方式会占用大量CPU时间,适用于对键盘实时性要求不高的情形;(2)主机系统采用中断方式支持键码的随机输入,当主机接收到从键盘发来的时钟信号时,即向中断系统发出键盘中断,CPU响应中断并接收键码,这种方式应用较为广泛,具有实时性较强的特点[1,2,3]。

但是,以上采用单片机对PS/2键盘接口进行控制的技术有可靠性不高,移植性不强等特点,特别是在当今嵌入式系统中广泛使用可编程逻辑器件FPGA、CPLD的基础上,采用硬件描述语言VHDL进行PS/2键盘接口的设计并用FPGA/CPLD来实现具有成本低、移植性强等特点。

4.PS/2接口的VHDL实现

本设计采用VHDL的硬件描述方式,以Altera公司的EP2C5T144C8为目标芯片做电路实现和测试,EDA平台为Quartus II 9.0版本。所设计的接口电路实现了对键码的接收和译码功能,及向键盘发送命令的过程。在实际应用中,随机快速地通过键盘输入,软件控制台上便可输出相应的键值[4,5]。顶层设计如图3所示,主要包括数据格式转换模块、信息提取模块、核心控制模块、数据包发送模块。

数据格式转换模块用于接收数据和发送数据,实现把接收到的串行数据转换成所需要的并行数据进行处理。信息提取模块用于把数据格式转换模块传过来的数据包按一定要求进行处理提取,从而获取有用的信息。核心控制模块是设计的核心,PS/2接口是半双工串行总线,因此其发送和接收不能同时进行,需要对其时序进行严格的设置。核心控制模块负责协调整个系统的运行,在核心控制模块的设计中采用了状态机的设计思路。数据包发送模块负责把要传送的命令数据转变成符合PS/2协议的发送数据包格式。

以硬件描述语言VHDL进行设计,具有较好的通用性与可移植性,其设计流程图如图4所示。

4.1 工作过程

当系统开始工作时,首先由主设备向键盘发送初始化信号,在得到键盘的应答信号后,系统进入总线空闲状态,此时可以进行数据的发送和接收,但主设备拥有更高的优先级,如果系统正处在接收状态而同时得到发送请求,系统将中断数据接收,直接进入数据发送状态。

本文以QuartusⅡ 9.0为设计平台,按照TOP-DOWN的设计思路独立对每个模块进行了仿真。图5为接收数据模块的时序仿真图,可以看出该模块正常工作。

4.2 硬件验证

硬件验证采用北京理工达盛EL教学实验箱EL-EDA-V,以Cyclone II系列FPGA器件EP2C5T144C8为目标芯片,将综合后的配置文件下载后,进行硬件测试。经测试,在PS/2设备完成初始化后,实验箱正确观察到了键盘的输入。

5.结束语

通过硬件测试表明,设计的各个模块成功地实现了复位后的数据传送过程,达到了预期的目标。同时基于VHDL设计决定了本设计具有可靠性高和移植性强的特点,可方便的移植到任一采用了FPGA/CPLD芯片的嵌入式系统设计应用中。

参考文献

[1]李冉琦,白丽媛.基于单片机的PS/2标准键盘接口制作[J].电子制作,2007,11:12-15.

[2]刘好杰,朱晓光,石晶.串口实现PS/2键盘在单片机系统中应用[J].仪器仪表用户,2010,2:43-44.

[3]李伟光,朱金华.PC标准键盘在单片机系统中的应用[J].电测与仪表,2003,8:29-31.

[4]刘勇,王玉晶,曲斌,于洋.一种嵌入式PC非标准键盘的设计[J].微计算机信息,2007,23-1:87-88.

作者简介:时伟(1981—),男,硕士,主要从事电子设计自动化方面的研究和教学工作。

vhdl课程设计报告 第5篇

题目:八位数码管显示

专业班级:电气工程及其自动化102 姓

名:

周迎接

学 号:

20100344214

指导教师: 付广春

完成日期:2012年12月 27 日

目 录 引言…………………………………………………………………………2 2 总体设计方案………………………………………………………………2 2.1 输入引脚数目的计算……………………………………………………3 2.2 二进制转为十进制部分程序设计………………………………………3 2.3 数码管显示部分程序设计………………………………………………4 3 仿真显示……………………………………………………………………5 3.1 显示3仿真图……………………………………………………………5 3.2显示96的仿真图…………………………………………………………5 4 心得体会……………………………………………………………………6 参考文献………………………………………………………………………6 附录1…………………………………………………………………………7

摘要

随着当今社会电子技术的快速发展,单凭借硬件已不再能满足广大人民的需求,这时候软件就显示除了他们突出的优点。与其他编程语言相比,VHDL语言以其超强的硬件描述能力,良好的可读性和可移植性,以及其良好的用户自定义性受到了广大用户的青睐。VHDL语言在最近几年的发展及其迅猛,由此可以看出其用途已经变的越来越广泛。

一个VHDL程序由5个部分组成,包括实体(ENTITY)、结构体(architecture)、配置(coxnfiguration)、包(package)和库(library)。实体和结构体两大部分组成程序设计的最基本单元。图2.2表示的是一个VHDL 3 程序的基本组成。配置是用来从库中选择所需要的单元来组成该系统设计的不同规格的不同版本,VHDL和Verilog HDL已成为IEEE的标准语言,使用IEEE提供的版本。包是存放每个设计模块都能共享的设计类型、常数和子程序的集合体。库是用来存放已编译的实体、结构体、包和配置。在设计中可以使用ASIC芯片制造商提供的库,也可以使用由用户生成的IP库。

今天我所要设计的是基于VHDL语言的8位数码管显示电路,其要实现的功能是把输入的二进制数转换为对应的十进制数,并通过数码管显示出来。其过程大致可以分为通过程序将输入的二进制数先转换为对应的十进制数,然后再把对应的十进制数与数码管的管脚对应起来,使其显示在数码管上。关键词:二进制转为十进制 数码管显示 共阳数码管1 引言

VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于

1982 年。1987 年底,VHDL被美国国防部和IEEE确认为标准硬件描述语言。

VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点:[1]

(1)VHDL 语言功能强大,设计方式多样

VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。

(2)VHDL 语言具有强大的硬件描述能力

VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。

(3)VHDL 语言具有很强的移植能力

VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。

(4)VHDL 语言的设计描述与器件无关

采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。

(5)VHDL 语言程序易于共享和复用

VHDL 语言采用基于库的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。

本次我所要设计的基于VHDL语言的八位数码管显示将充分体现它的部分优点。总体设计方案

2.1 输入引脚数目的计算

因为题目要求数码管要能显示最大的八位十进制二进制数,所以对应的二进制表示的十进制数首先要大于99999999,即2的所有n次幂之和应该大于99999999,数码管才能显示出最大的八位十进制数,所以计算可得n的值最小为27,所以输入二进制数的引脚应该设为27个,其二进制数输入引脚图如图1所示

图1 二进制数输入引脚图

2.2 二进制转为十进制部分程序设计 二进制转为十进制的部分程序如下: architecture one of look is signal ai,bi,ci,ki,ei,fi,gi,hi:integer range 0 to 9;signal di:integer range 0 to 99999999;begin di<=conv_integer(d);2.3 数码管显示部分程序设计

2.3.1 程序中数码管的选择及显示的设置

在本设计中按照我的程序硬件所选用的应该为共阴极数码管,且当某一位数码管不需要显示数据时,统一设定其显示0,例如需要显示1时,八个数码管的显示为00000001。

2.3.2 数码管显示部分部分程序如下: …………

variable a,b,c,k,e,f,g,h:integer range 0 to 9;begin a:=di rem 10;7 b:=(di-a)rem 100;c:=(di-a-10*b)rem 1000;k:=(di-a-10*b-c*100)rem 10000;e:=(di-a-10*b-c*100)rem 100000;f:=(di-a-10*b-c*100-1000*e)rem 1000000;g:=(di-a-10*b-c*100-1000*e-10000*f)rem 10000000;h:=(di-a-10*b-c*100-1000*e-10000*f-100000*g)/10000000;ai<=a;bi<=b;ci<=c;ki<=k;ei<=e;fi<=f;gi<=g;hi<=h;end process;process(ai)begin case ai is

when 0=>led7s1(6 downto 0)<=“1000000”;

when 1=>led7s1(6 downto 0)<=“1111001”;

when 2=>led7s1(6 downto 0)<=“0100100”;

when 3=>led7s1(6 downto 0)<=“0110000”;

when 4=>led7s1(6 downto 0)<=“0011001”;8

when 5=>led7s1(6 downto 0)<=“0010010”;

when 6=>led7s1(6 downto 0)<=“0000010”;

when 7=>led7s1(6 downto 0)<=“1111000”;

when 8=>led7s1(6 downto 0)<=“0000000”;

when 9=>led7s1(6 downto 0)<=“0010000”;

when others=>led7s1(6 downto 0)<=“XXXXXXX”;end case;end process;…………

2.3.3 数码管显示部分引脚图

数码管显示部分部分引脚图如图2 所示

图 2 数码管显示部分部分引脚图

2.2.4 总体设计程序见附表1 3 仿真显示

3.1 显示“000000003”仿真图

显示数字“3”的仿真图如图3所示,因为根据程序所需数码管为共阳极数码管,所以数码管对应的“e”,“f”段应该为高电平,在本次设计中,即数码管的第5,6段为高电平,为了便于观察,仿真的各项周期均取10ns。

图3 显示“3”电路 3.2 显示“96”部分仿真图,如图4所示

图4 显示“96”仿真图 心得体会

通过这次的课程设计让我对VHDL语言以及电路设计的理论有了更加深入的了解,课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,这次课程设计虽然很累,但我学到了不少东西,对软件的设计过程和方法有了更深入的了解。在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。

这次课程设计顺利完成了,在设计中遇到了很多问题,最后都是经过查阅相关的资料和在同学的帮助下,终于游逆而解。同时,在我学得到很多实用的知识,同时,对给过我帮助的所有同学再次表示忠心的感谢!

参考文献

【1】黄继业.EDA技术使用教程[M].北京:科学出版社,2010 【2】王云亮.电力电子技术[M].北京:电子工业出版社,2009 【3】康光华.电子技术基础[M].北京:高等教育出版社,2006

附录1 library ieee;12 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity look is port(d:in std_logic_vector(26 downto 0);clk3:in std_logic;led7s1,led7s2,led7s3,led7s4,led7s5,led7s6,led7s7,led7s8:out std_logic_vector(6 downto 0));end;architecture one of look is signal ai,bi,ci,ki,ei,fi,gi,hi:integer range 0 to 9;signal di:integer range 0 to 99999999;begin di<=conv_integer(d);

process(di)variable a,b,c,k,e,f,g,h:integer range 0 to 9;begin a:=di rem 10;b:=(di-a)rem 100;c:=(di-a-10*b)rem 1000;k:=(di-a-10*b-c*100)rem 10000;e:=(di-a-10*b-c*100-k*1000)rem 100000;f:=(di-a-10*b-c*100-k*1000-10000*e)rem 1000000;g:=(di-a-10*b-c*100-k*1000-10000*e-100000*f)rem 10000000;h:=(di-a-10*b-c*100-k*1000-10000*e-100000*f-1000000*g)/10000000;ai<=a;bi<=b;ci<=c;ki<=k;ei<=e;fi<=f;gi<=g;hi<=h;end process;process(ai)begin case ai is

when 0=>led7s1(6 downto 0)<=“1000000”;

when 1=>led7s1(6 downto 0)<=“1111001”;13

when 2=>led7s1(6 downto 0)<=“0100100”;

when 3=>led7s1(6 downto 0)<=“0110000”;

when 4=>led7s1(6 downto 0)<=“0011001”;

when 5=>led7s1(6 downto 0)<=“0010010”;

when 6=>led7s1(6 downto 0)<=“0000010”;

when 7=>led7s1(6 downto 0)<=“1111000”;

when 8=>led7s1(6 downto 0)<=“0000000”;

when 9=>led7s1(6 downto 0)<=“0010000”;

when others=>led7s1(6 downto 0)<=“XXXXXXX”;end case;end process;process(bi)begin case bi is

when 0=>led7s2(6 downto 0)<=“1000000”;

when 1=>led7s2(6 downto 0)<=“1111001”;

when 2=>led7s2(6 downto 0)<=“0100100”;

when 3=>led7s2(6 downto 0)<=“0110000”;

when 4=>led7s2(6 downto 0)<=“0011001”;

when 5=>led7s2(6 downto 0)<=“0010010”;

when 6=>led7s2(6 downto 0)<=“0000010”;

when 7=>led7s2(6 downto 0)<=“1111000”;

when 8=>led7s2(6 downto 0)<=“0000000”;

when 9=>led7s2(6 downto 0)<=“0010000”;

when others=>led7s2(6 downto 0)<=“XXXXXXX”;end case;end process;process(ci)begin case ci is

when 0=>led7s3(6 downto 0)<=“1000000”;

when 1=>led7s3(6 downto 0)<=“1111001”;

when 2=>led7s3(6 downto 0)<=“0100100”;

when 3=>led7s3(6 downto 0)<=“0110000”;

when 4=>led7s3(6 downto 0)<=“0011001”;

when 5=>led7s3(6 downto 0)<=“0010010”;

when 6=>led7s3(6 downto 0)<=“0000010”;14

when 7=>led7s3(6 downto 0)<=“1111000”;

when 8=>led7s3(6 downto 0)<=“0000000”;

when 9=>led7s3(6 downto 0)<=“0010000”;

when others=>led7s3(6 downto 0)<=“XXXXXXX”;end case;end process;process(ki)begin case ki is

when 0=>led7s4(6 downto 0)<=“1000000”;

when 1=>led7s4(6 downto 0)<=“1111001”;

when 2=>led7s4(6 downto 0)<=“0100100”;

when 3=>led7s4(6 downto 0)<=“0110000”;

when 4=>led7s4(6 downto 0)<=“0011001”;

when 5=>led7s4(6 downto 0)<=“0010010”;

when 6=>led7s4(6 downto 0)<=“0000010”;

when 7=>led7s4(6 downto 0)<=“1111000”;

when 8=>led7s4(6 downto 0)<=“0000000”;

when 9=>led7s4(6 downto 0)<=“0010000”;

when others=>led7s4(6 downto 0)<=“XXXXXXX”;end case;end process;process(ei)begin case ei is

when 0=>led7s5(6 downto 0)<=“1000000”;

when 1=>led7s5(6 downto 0)<=“1111001”;

when 2=>led7s5(6 downto 0)<=“0100100”;

when 3=>led7s5(6 downto 0)<=“0110000”;

when 4=>led7s5(6 downto 0)<=“0011001”;

when 5=>led7s5(6 downto 0)<=“0010010”;

when 6=>led7s5(6 downto 0)<=“0000010”;

when 7=>led7s5(6 downto 0)<=“1111000”;

when 8=>led7s5(6 downto 0)<=“0000000”;

when 9=>led7s5(6 downto 0)<=“0010000”;

when others=>led7s5(6 downto 0)<=“XXXXXXX”;end case;15 end process;process(fi)begin case fi is

when 0=>led7s6(6 downto 0)<=“1000000”;

when 1=>led7s6(6 downto 0)<=“1111001”;

when 2=>led7s6(6 downto 0)<=“0100100”;

when 3=>led7s6(6 downto 0)<=“0110000”;

when 4=>led7s6(6 downto 0)<=“0011001”;

when 5=>led7s6(6 downto 0)<=“0010010”;

when 6=>led7s6(6 downto 0)<=“0000010”;

when 7=>led7s6(6 downto 0)<=“1111000”;

when 8=>led7s6(6 downto 0)<=“0000000”;

when 9=>led7s6(6 downto 0)<=“0010000”;

when others=>led7s6(6 downto 0)<=“XXXXXXX”;end case;end process;process(gi)begin case gi is

when 0=>led7s7(6 downto 0)<=“1000000”;

when 1=>led7s7(6 downto 0)<=“1111001”;

when 2=>led7s7(6 downto 0)<=“0100100”;

when 3=>led7s7(6 downto 0)<=“0110000”;

when 4=>led7s7(6 downto 0)<=“0011001”;

when 5=>led7s7(6 downto 0)<=“0010010”;

when 6=>led7s7(6 downto 0)<=“0000010”;

when 7=>led7s7(6 downto 0)<=“1111000”;

when 8=>led7s7(6 downto 0)<=“0000000”;

when 9=>led7s7(6 downto 0)<=“0010000”;

when others=>led7s7(6 downto 0)<=“XXXXXXX”;end case;end process;process(hi)begin case hi is

when 0=>led7s8(6 downto 0)<=“1000000”;16

when 1=>led7s8(6 downto 0)<=“1111001”;

when 2=>led7s8(6 downto 0)<=“0100100”;

when 3=>led7s8(6 downto 0)<=“0110000”;

when 4=>led7s8(6 downto 0)<=“0011001”;

when 5=>led7s8(6 downto 0)<=“0010010”;

when 6=>led7s8(6 downto 0)<=“0000010”;

when 7=>led7s8(6 downto 0)<=“1111000”;

when 8=>led7s8(6 downto 0)<=“0000000”;

when 9=>led7s8(6 downto 0)<=“0010000”;

vhdl课程设计报告 第6篇

《数字信号处理》和《VHDL语言及FPGA设计》是高等学校电气信息类专业的主干课程。学生通过数字信号处理实验,能形象地理解离散时间信号及系统,会用FFT作谱分析,掌握IIR及FIR数字滤波器设计方法等。我国大部分高校开设的数字信号处理实验都是基于Matlab仿真平台[1],这有助于理解数字信号处理的基本理论[2]。但如何在实际工程中灵活运用数字信号处理是实验教学的关键,笔者将FPGA引入到数字信号处理实验教学中,为学生提供了又一实践平台。

1实验教师队伍建设

要求授课主讲教师 具有高级 职称,有较好的 表达能力,善于引导学生 进行学习,能够指导 学生完成 实验项目[3]。主讲教师不仅要掌握数字信号处理的相关理论知识,还要掌握FPGA相关知识,主讲教师、任 课教师和 实验教师一方面可以自学FPGA相关知识,另一方面 可以深入课堂学习FPGA相关知识,两门课教 师可以相 互交流,促进课程的交叉学习。主讲教师对任课教师和实验教师进行指导,理论课教 师和实验 课教师一 起指导学 生实验,使理论教学和实验教学融会贯通。

2实验项目设置

根据《数字信号处理》课程的内容特点,将实验教学在形式上分为验证实验和综合设计实验。

2.1验证实验

验证实验可帮助学生分析和理解数字信号处理的理论算法,使学生熟悉软硬件平台以及数字信号处理系统的开发流程。开设的实验项目有:1离散时间信号、系统的时域和频域分析;2应用FFT对信号进行频谱分析;3脉冲响应不变法或双线性变换法设计IIR滤波器;4用窗函数设计FIR滤波器。验证实验可以为综合设计实验打下坚实的基础。

2.2综合设计实验

综合实验是教学中必不可少的重要环节,它能巩固、深化和扩展学生的理论知识和专业技能,培养学生运用所学知识的能力,提高解决问题能力。

综合实验可由教师布置题目,也可由学生自己设计题目,要求学生查阅大量的参考文献,通过相互讨论、团队合作的方式完成设计,从而培养分析、解决问题的能力。例如含噪语音信号的处理,要求学生自己录音,分析语音的频谱,然后加入噪声,对加噪语音进行频谱分析,根据频谱特性,设计合适的滤波器滤除噪声。通过此实验,掌握信号产生方法、频谱分析方法以及滤波器设计方法,理解和掌握数字信号处理知识。

3实验教学设计

教学中将学生分为两组,一组学生用Matlab编程设计,另一组用FPGA设计。例如设计一个16阶的FIR低通滤波器,该滤波器指标为:采样频率fs=10MHz,截止频率fc=1.5MHz。采用Matlab编程设计得到的滤波器幅度和频率响应见图1和图2。采用FPGA方法见参考文献[4],图3是对应输入为50时的滤波器脉冲响应y的仿真波形图。设计完成后两部分同学进行交流,对两种方法进行比较分析。学生反映Matlab编程的方法比较简单,但纯粹是软件方法,不能用于硬件实现;FPGA可以用于硬件实现,但要掌握硬件描述语言及FPGA相关知识,比Matlab的方法更难。分组时要考 虑学生的 特点,才能达到比较好的效果。要安排答辩环节,演示和详细讲解实验方法和步骤。

4结语

《数字信号处理》是一门理论与实践紧密结合的课程,如何正确引导学生,将理论与工程实践结合起来是实验教学的重要内容。 教学中将 学生分为 两部分,分别运用Matlab和FPGA进行仿真设计,设计完成后进行交流,对两种仿真方法进行比较分析。教学实践表明:学生在交流互动、比较分析中能很快掌握两种仿真工具,并能运用两种方法完成一些创新 设计方案,达到事半 功倍的教 学效果。

参考文献

[1]杨莉,施国勇.基于FPGA的《数字信号处理》课程设计教学实践[J].电气电子教学学报,2010,32(4):77-78.

[2]蒋小燕.MATLAB在《数字信号处理》课程教学中的应用[J].常州工学院学报,2009,22(4):13-15.

[3]朱金秀,张卓,朱昌平.《数字信号处理》课程实验教学研究与实践[J].实验室研究与探索,2008,27(5):96-97.

vhdl课程设计报告

vhdl课程设计报告(精选6篇)vhdl课程设计报告 第1篇数字系统设计与VHDL课程大作业具体要求一、总体要求:1. 本课程为专业必选考查类课...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部