电子设计自动化课程设计报告
- 格式:doc
- 大小:272.50 KB
- 文档页数:25
eda电子课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握电子电路设计的基本流程。
2. 学生能够运用所学软件工具,完成简单的电子电路图绘制和仿真。
3. 学生了解常见的电子元器件及其功能,能正确运用到电路设计中。
技能目标:1. 学生能够独立使用EDA软件进行电路设计,具备初步的电路分析和调试能力。
2. 学生通过实践操作,掌握电路板布线、打印及制作的基本方法。
3. 学生具备团队协作能力,能够与同学共同完成复杂的电子设计项目。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和探索精神。
2. 学生在实践过程中,体会电子设计的实际意义,增强解决实际问题的自信心。
3. 学生通过课程学习,认识到电子技术对社会发展的作用,培养环保意识和责任感。
本课程针对中学生设计,充分考虑学生的认知水平、兴趣和实际需求。
课程以实践为主,注重培养学生的动手操作能力和团队协作精神。
通过课程学习,使学生掌握电子设计的基本技能,提高创新意识和实践能力,为未来的学习和发展奠定基础。
二、教学内容本课程教学内容分为以下四个部分:1. EDA基本概念与软件操作- 介绍EDA的基本概念、发展历程和应用领域。
- 学习并掌握常见的EDA软件操作,如电路图绘制、仿真等。
2. 电子元器件及其功能- 认识常见的电子元器件,如电阻、电容、二极管、晶体管等。
- 了解元器件的参数和选型原则,学会在电路设计中正确使用元器件。
3. 电子电路设计与仿真- 学习基本的电子电路原理,如放大器、滤波器、振荡器等。
- 应用EDA软件进行电子电路设计与仿真,分析并优化电路性能。
4. 电路板布线与制作- 学习电路板布线的基本原则和技巧。
- 完成电路板的设计、打印和制作,并进行实际测试与调试。
教学内容依据课本章节进行组织,具体安排如下:第1周:EDA基本概念与软件操作第2周:电子元器件及其功能第3-4周:电子电路设计与仿真第5-6周:电路板布线与制作教学内容注重科学性和系统性,以实践操作为主线,结合理论讲解,使学生在动手实践中掌握电子设计的基本知识和技能。
电子设计自动化课程设计报告院系:信息工程学院专业:电子信息工程学号:姓名:指导教师:2013 年月日目录1设计目的 (3)2题目描述与要求 (3)3课程设计报告内容 (3)3.1设计原理与思路 (3)3.2操作过程 (4)3.3设计和调试过程中出现的问题及解决方法 (7)4设计总结和心得体会 (8)一、课程设计目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在实验箱上实现仿真,实现硬件电子琴。
电子琴要求有8个音阶,使用外部时钟信号32MHz,能同步显示音阶。
二、课程设计题目描述和要求题目:简易电子琴的设计主要功能:(1)设计一个八音电子琴。
(2)由键盘输入控制音响,同时可自动演奏乐曲。
(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。
三、课程设计报告内容3.1设计原理与思路系统由数控分频器、乐曲存储模块以及发声模块组成。
数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。
乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。
由发声模块产生音符对应的频率的信号来使扬声器发音。
(1)模块automusic模块automsic由auto信号来选择发声的方式,auto=0时系统自动播放内置的音乐,auto=1时由键盘来手动演奏音乐。
(2)模块TONE模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。
(3)模块Speaker模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。
eda花样彩灯课程设计报告一、课程目标知识目标:1. 学生能理解并掌握EDA(电子设计自动化)花样彩灯的基本原理与设计流程。
2. 学生能识别并运用课程中所学的电子元件,如LED灯、电阻、电容等,并理解其在电路中的作用。
3. 学生能够运用已学的电子知识,设计并搭建简单的EDA花样彩灯电路。
技能目标:1. 学生能够运用计算机软件进行电路设计与仿真,提高实际操作能力。
2. 学生通过小组合作,提高沟通协调能力和团队协作能力。
3. 学生能够运用问题解决策略,对设计过程中出现的问题进行分析、调试和优化。
情感态度价值观目标:1. 学生培养对电子科技的兴趣,增强创新意识和实践能力。
2. 学生在设计和制作过程中,培养耐心、细心的品质,提高面对困难的勇气和毅力。
3. 学生通过课程学习,认识到科技与生活的密切联系,增强环保意识和责任感。
本课程针对五年级学生特点,结合电子设计实际应用,注重培养学生的动手能力、创新能力和团队协作能力。
通过课程学习,使学生能够将所学知识应用于实际生活,激发他们对科技的兴趣,提高科学素养。
课程目标具体、可衡量,便于教师进行教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子元件的认识:介绍常用电子元件如LED灯、电阻、电容等,使学生了解其性能、特点及在电路中的作用。
2. EDA软件使用:教授学生如何使用EDA软件进行电路设计与仿真,包括电路图的绘制、元件的选取与放置、电路的仿真与调试等。
3. 花样彩灯设计原理:讲解花样彩灯的设计原理,如电路的基本连接方式、控制方法等。
4. 实践操作:指导学生进行EDA花样彩灯的设计与制作,让学生在实际操作中掌握所学知识。
5. 课程总结与展示:学生完成作品后,进行课程总结,分享设计经验,展示作品成果。
教学内容安排如下:1. 第一课时:电子元件的认识及基本电路原理介绍。
2. 第二课时:EDA软件的使用方法教学。
3. 第三课时:花样彩灯设计原理及实践操作指导。
《电子设计自动化》---电子灭蚊拍电路的设计设计报告一、设计目的与要求1.本次课程设计的目的让学生熟悉电子电路及电路板PCB设计基本方法、步骤及设计原则;通过完成一个电路的设计,理解并掌握自动化实践活动中涉及的工程管理与经济决策基本知识;通过设计与仿真,能够合理分析实验参数或结果,发挥学生的创造力,使得学生初步具有电路板设计的能力,为今后工作打下坚实的基础;同时,通过视频学习、上机实践、电路设计、电路仿真使学生掌握Altium Designer软件的使用,培养学生主动查阅书籍、参考资料、产品手册、工具书的习惯和上网查寻获取有用信息的能力,通过自主学习,适应发展;撰写课程设计报告,通过口头或书面方式表达复杂自动化工程问题并回应指令,使学生具备电子电路及电路板PCB设计能力,培养学生解决实际工程技术问题的能力。
2.本次课程设计的要求(1)采用Altium Designer软件,完成指定电子电路的原理图和PCB图绘制。
(2)选择设计题目,制定设计方案,利用仿真软件进行电路仿真,调试电路各模块功能,测试电路性能,性能需要满足题目要求。
对所设计的电路进行元器件选择,并根据具体要求绘制电子原理图和PCB图。
(3)完成《电子设计自动化》课程设计报告,报告包括封面、设计目的与要求、具体设计任务、课程设计内容(含设计方案与分析、仿真电路图设计、仿真调试及结果分析、电路原理图与PCB图设计、元器件清单、设计心得等)、答辩记录等部分。
二、具体设计任务每人从给出的设计题目中选定一题,按题目要求完成设计方案与分析、仿真电路图设计、仿真调试及结果分析、电路原理图与PCB图设计、元器件清单等环节,并按规范撰写本次课程设计报告。
题目:电子灭蚊拍电路的设计设计一款电子灭蚊拍电路,具体要求为:(1)使用可充电的3V 电池组进行供电,需要设计出3V 充电电路。
(2)采用高压电网灭蚊三课程设计内容1.设计方案与分析要求:根据选题,确定方案和所用的元件型号(元件型号采用表格方式列出)。
eda课程设计一、教学目标本课程的教学目标是使学生掌握EDA(电子设计自动化)的基本概念、原理和方法,培养学生运用EDA工具进行电子系统设计和分析的能力。
具体目标如下:1.知识目标:(1)理解EDA的定义、发展历程和应用领域;(2)掌握常见的EDA工具及其功能;(3)了解电子系统设计的基本流程;(4)熟悉硬件描述语言(如VHDL、Verilog)的基本语法和用法。
2.技能目标:(1)能够熟练使用至少一种EDA工具进行电子系统设计;(2)能够编写简单的硬件描述语言程序,实现基本的电子系统功能;(3)具备分析电子系统性能和优化设计的能力;(4)能够阅读和理解电子设计相关的技术文档。
3.情感态度价值观目标:(1)培养学生的创新意识和团队合作精神;(2)增强学生对电子技术的兴趣和热情;(3)培养学生严谨的科学态度和良好的职业道德。
二、教学内容本课程的教学内容主要包括以下几个方面:1.EDA基本概念和原理:介绍EDA的定义、发展历程、应用领域和基本原理。
2.EDA工具的使用:介绍常见的EDA工具(如Cadence、Altera、Xilinx等)的功能和操作方法。
3.硬件描述语言:介绍硬件描述语言(如VHDL、Verilog)的基本语法、结构和用法。
4.电子系统设计流程:介绍电子系统设计的整个流程,包括需求分析、电路设计、仿真验证、硬件实现等。
5.电子系统性能分析与优化:讲解如何分析电子系统的性能,并提出优化设计的策略。
6.实例分析:通过具体案例,使学生掌握EDA工具在实际工程项目中的应用。
三、教学方法本课程采用讲授法、实践教学法和小组讨论法相结合的教学方法。
1.讲授法:用于讲解EDA的基本概念、原理和工具的使用方法。
2.实践教学法:通过实际操作EDA工具,使学生熟悉电子系统设计流程,提高实际操作能力。
3.小组讨论法:分组进行案例分析,培养学生的团队协作能力和解决问题的能力。
四、教学资源1.教材:选用权威、实用的EDA教材,如《电子设计自动化原理与应用》。
EDA课程设计及应用课程设计一、课程目标知识目标:1. 理解EDA(电子设计自动化)的基本概念,掌握相关软件工具的使用方法。
2. 学习并掌握数字电路的基本原理和设计流程,能运用EDA工具完成基础数字电路的设计与仿真。
3. 掌握课程相关领域的专业知识,如电子元器件、逻辑门、触发器等,并能将其应用于实际电路设计中。
技能目标:1. 培养学生运用EDA软件进行数字电路设计与仿真的能力,提高实践操作技能。
2. 培养学生分析问题、解决问题的能力,使其能够针对实际问题进行合理的电路设计和优化。
3. 提高学生的团队协作能力,通过小组合作完成课程设计项目。
情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发其学习热情,形成主动探索和积极进取的学习态度。
2. 培养学生严谨、细致、负责的工作作风,养成遵守实验规程、爱护实验设备的良好习惯。
3. 培养学生的创新意识,鼓励他们勇于尝试、不断挑战,形成良好的创新精神。
本课程针对高年级学生,在已有电子技术基础的前提下,通过EDA课程设计及应用,旨在提高学生的理论联系实际能力,培养他们在电子设计领域的创新精神和实践技能。
课程目标紧密围绕学科知识、学生特点及教学要求,分解为具体的学习成果,以便于教学设计和评估的实施。
二、教学内容本章节教学内容主要包括以下三个方面:1. EDA基本概念与工具使用- 介绍EDA的基本概念、发展历程和应用领域。
- 学习并掌握主流EDA软件(如Multisim、Proteus等)的基本操作和功能。
2. 数字电路原理与设计- 回顾数字电路基础知识,包括逻辑门、触发器、计数器等。
- 学习数字电路设计流程,掌握从电路图绘制到电路仿真的全过程。
教学内容关联教材第3章“数字电路基础”和第4章“数字电路设计与仿真”。
3. 课程设计与实践- 分组进行课程设计,要求学生运用所学知识完成一个简单的数字电路设计与仿真。
- 教学过程中,安排如下进度:a. 第1周:分组,明确设计任务和要求。
西电电子课程设计报告一、课程目标知识目标:1. 学生能够掌握电子电路的基本原理,理解并应用基础电子元件的功能与特性。
2. 学生能够描述并分析常见电子电路的组成、工作原理及其在实际应用中的作用。
3. 学生能够解释并运用数字逻辑电路基础知识,进行简单逻辑电路的设计和分析。
技能目标:1. 学生能够运用所学知识,设计简单的电子电路,并进行仿真测试。
2. 学生能够运用电子设计自动化(EDA)工具进行电路图绘制和电路仿真。
3. 学生能够通过课程项目实践,培养动手能力,团队协作能力和问题解决能力。
情感态度价值观目标:1. 学生能够培养对电子科学的兴趣,认识到电子技术在现代社会中的重要作用。
2. 学生在学习过程中能够树立创新意识,培养探究精神和科研态度。
3. 学生通过小组合作,培养团队协作精神,学会尊重他人意见,共同解决问题。
课程性质分析:本课程为电子技术实践课程,旨在通过理论与实践相结合的方式,帮助学生深入理解电子电路原理,培养实际动手能力。
学生特点分析:考虑到学生为高中年级,已具备一定的物理和数学基础,对电子技术有一定了解,课程设计将注重知识深度和实际应用。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力。
2. 创设情境,引导学生主动探究,培养创新思维。
3. 关注学生个体差异,提供个性化指导,确保学习效果。
二、教学内容1. 电子元件基础知识:介绍电阻、电容、电感等基础元件的原理与特性,对应教材第一章内容。
2. 基本电子电路:分析并实践放大电路、滤波电路、振荡电路等,对应教材第二章内容。
3. 数字逻辑电路:讲解逻辑门、组合逻辑电路、时序逻辑电路等原理,对应教材第三章内容。
4. 电子电路仿真:运用Multisim、Proteus等软件进行电路仿真,对应教材第四章内容。
5. 课程项目实践:分组进行电子电路设计与制作,如音频放大器、数字时钟等,综合应用前三章知识。
教学大纲安排:第一周:电子元件基础知识学习与实践;第二周:基本电子电路分析与实践;第三周:数字逻辑电路原理学习;第四周:电子电路仿真训练;第五周:课程项目实践,分组设计并制作电子电路;第六周:项目展示与评价,总结反馈。
eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。
2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。
3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。
技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。
2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。
3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。
情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。
2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。
3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。
课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。
学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。
教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。
通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。
后续教学设计和评估将以此为基础,关注学生的学习成果。
二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。
2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。
3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。
eda的ad课程设计一、课程目标知识目标:1. 让学生掌握EDA(电子设计自动化)的基本概念和原理;2. 了解AD(模拟电路设计)在EDA中的应用和重要性;3. 掌握AD软件的基本操作和使用方法;4. 学习并理解常见的模拟电路元件及其功能。
技能目标:1. 培养学生运用AD软件进行简单模拟电路设计的能力;2. 提高学生分析电路图、识别元件和电路功能的能力;3. 培养学生通过团队协作,解决实际电子设计问题的能力。
情感态度价值观目标:1. 培养学生对电子设计领域的兴趣,激发其探索精神和创新意识;2. 引导学生认识到电子技术在现代社会中的重要作用,树立社会责任感;3. 培养学生团队合作意识,学会尊重他人,善于倾听和表达自己的观点。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的实际操作能力和团队协作能力。
学生特点:学生具备一定的电子基础知识和计算机操作技能,对新鲜事物充满好奇心,但可能缺乏实际操作经验。
教学要求:教师应注重理论与实践相结合,以学生为主体,引导学生主动参与课堂讨论和实践活动,提高学生的综合运用能力。
在教学过程中,关注学生的学习进度和需求,及时调整教学策略,确保课程目标的实现。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. EDA基本概念与原理- EDA的定义、发展历程与应用领域- EDA工具的分类及功能特点2. AD在EDA中的应用- 模拟电路设计的基本概念- AD软件在模拟电路设计中的作用和重要性3. AD软件操作与应用- AD软件的安装与界面认识- 常用功能键和操作快捷键的使用- 基本电路图绘制与编辑方法4. 常见模拟电路元件及功能- 电阻、电容、电感的基本特性- 运算放大器、比较器、模拟开关等元器件的功能与应用5. 模拟电路设计实例- 简单放大电路设计- 滤波电路设计- 信号产生电路设计6. 团队协作与问题解决- 分组讨论,确定设计主题- 协作完成电路设计,分析并解决设计过程中遇到的问题教学内容安排与进度:第一课时:EDA基本概念与原理第二课时:AD在EDA中的应用第三课时:AD软件操作与应用(上)第四课时:AD软件操作与应用(下)第五课时:常见模拟电路元件及功能第六课时:模拟电路设计实例与团队协作教材章节关联:本教学内容与教材中关于EDA、AD以及模拟电路设计的相关章节紧密关联,具体涉及以下章节:1. EDA概述2. AD软件及其应用3. 常见模拟电路元件4. 模拟电路设计方法与实践5. 团队协作与问题解决技巧三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程将采用以下多样化的教学方法:1. 讲授法:- 教师通过生动的语言、形象的比喻,讲解EDA基本概念、原理以及AD软件操作方法等理论知识,为学生奠定扎实的理论基础。
电子课程设计报告一、课程介绍:本课程名为“电子课程设计”,旨在通过深入浅出的教学方法,使学员掌握电子课程设计的基本原理和方法。
课程将围绕电子元件、电路分析、电子设计自动化(EDA)工具的使用以及实际电路的设计与测试展开,以培养学员的电子设计能力和创新思维。
预期成果是学员能够熟练运用所学知识独立完成电子电路的设计与制作,并具备进一步学习电子工程相关领域知识的能力。
课程背景是基于当前电子技术的快速发展和在各个行业的广泛应用。
在智能制造、物联网、可穿戴设备等领域,电子技术都扮演着核心角色。
通过本课程的学习,学员不仅能够理论联系实际,而且能够紧跟科技发展的步伐,为社会主义现代化建设贡献力量。
二、学习者分析:目标受众为大学本科电子信息工程及相关专业的学生,他们通常对电子技术和电路设计有一定的兴趣和好奇心,年龄在18-22岁之间,已经完成了基础的物理和数学课程,具备一定的理论基础。
先备知识方面,学员应已掌握基本的电路理论、模拟电路和数字电路知识,对微电子学有一定的了解,同时熟悉计算机操作和编程,能够使用常见的电子设计软件。
三、学习目标:1.认知目标:学员应掌握电子元件的工作原理、电路分析方法、常见的电子电路设计流程,以及电子设计自动化工具的使用。
2.技能目标:学员应能够使用EDA工具进行电路图设计、PCB布局,并能够进行电路仿真。
此外,学员还应具备实际操作能力,能够进行电路焊接、调试和故障排查。
3.情感目标:通过课程学习,学员应培养对电子技术的兴趣和热情,形成创新设计的思维习惯,增强解决实际工程问题的信心和责任感。
四、课程内容:1.模块/单元划分:本课程分为五个主要模块,分别是电子元件基础、电路分析原理、EDA工具使用、电路设计实践以及项目实战。
2.内容描述:每个模块下细分为多个子主题,如在电子元件基础模块中,将涵盖电阻、电容、电感以及二极管、晶体管等的基本特性及应用。
电路分析原理模块将深入讲解交流/直流电路分析、信号传输等内容。
电子设计自动化课程设计报告学生姓名:学号:课设题目:VGA彩条信号显示控制器设计同组人:电子设计自动化课程设计报告郝欣欣一、课程设计内容1、使用Verilog语言和Modelsim仿真器完成可显示横彩条、竖彩条、棋盘格相间的VGA控制器的设计和验证2、设计并验证可显示英语单词”HIT”的VGA控制器3、使用Quartus II和SOPC实验箱验证设计的正确性4、Verilog代码要符合微电子中心编码标准二、FPGA原理CPLD、FPGA是在PAL、GAL等基础上发展起来的一种具有丰富的可编程I/O引脚、逻辑宏单元、门电路以及RAM空间的可编程逻辑器件,几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
CPLD的设计是基于乘积项选择矩阵来实现的,而FPGA基于查找表来设计的。
查找表就是实现将输入信号的各种组合功能以一定的次序写入RAM中,然后在输入信号的作用下,输出特定的函数运算结果。
其结构图如图1所示:图1. FPGA查找表单元一个N输入查找表(LUT,Look Up Table)可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。
输入多于N个的函数、方程必须分开用几个查找表(LUT)实现(如图2所示)。
图2 FPGA查找表单元内部结构该系统设计中,FPGA芯片用的是ALTERA公司的EP1K30QC208-2,它的系统结构如图3所示。
它由若干个逻辑单元和中央布线池加I/O端口构成图3 EP1K30QC208内部结构三、VGA接口VGA的全称为Video Graphic Array,即显示绘图阵列。
在PC行业发展的初期,VGA以其支持在640X480的较高分辨率下同时显示16种色彩或256种灰度,同时在320X240分辨率下可以同时显示256种颜色的良好特性得到广泛支持。
后来,厂商们纷纷在VGA基础上加以扩充,如将显存提高至1M并使其支持更高分辨率如800X600或1024X768,这些扩充的模式就称之为VESA(Video Electronics Standards Association,视频电子标准协会)的Super VGA模式,简称SVGA,现在的显卡和显示器都支持SVGA模式。
图4 VGA接口VGA接口就是显卡上输出模拟信号的接口,也叫D-Sub接口。
VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。
VGA接口是显卡上应用最为广泛的接口类型,绝大多数的显卡都带有此种接口。
表1 VGA管脚定义管脚定义1 红基色red2 绿基色green3 蓝基色blue通过模拟VGA接口和计算机连接的显示器的工作原理,是计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。
而对于LCD、DLP等数字显示设备,显示设备中需配置相应的A/D(模拟/数字)转换器,将模拟信号转变为数字信号。
在经过D/A和A/D2次转换后,不可避免地造成了一些图像细节的损失。
VGA接口应用于CRT显示器无可厚非,但用于连接液晶之类的显示设备,则转换过程的图像损失会使显示效果略微下降。
CRT 显示器因为设计制造上的原因,只能接受模拟信号输入,也就是我们为什么在CRT显示器上只看到VGA接口的原因。
四、VGA显示接口原理计算机显示器的显示有许多标准,常见的有VGA、SVGA等。
本系统采用FPGA 来实现图像显示控制器,这在产品开发设计中有许多实际应用。
常见的彩色显示器,一般由CRT(阴极射线管)构成,彩色是由G、R、B (绿:Green,红:Red,蓝:Blue)三基色组成。
显示是用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB三基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
对于普通的VGA显示器,其引出线共含5个信号:G、R、B:三基色信号;HS:行同步信号;VS:场同步信号。
对于5个信号的时序驱动,对于VGA显示器要严格遵循“VGA工业标准”,即640×480×60Hz模式。
通常我们用的显示器都满足工业标准,因此我们设计VGA控制器时要参考显示器的技术规格。
图5是VGA行扫描、场扫描的时序图:图5 VGA行扫描、场扫描时序图表2 VGA参考时序设计VGA工业标准所要求的频率:时钟频率(Clock frequency):25.175MHz(像素输出的频率);行频(Line frequency):31469Hz;场频(Field frequency):59.94Hz(每秒图像刷新频率)。
五、FPGA的设计实现设计VGA图像显示控制需要注意两个问题:一个是时序的驱动,这是完成设计的关键,时序稍有偏差,显示必然不正常,甚至会损坏彩色显示器;另一个是VGA信号的电平驱动。
显示控制器设计提示:显示器的技术规格提供的行频一般都满足在30-45KHz(保守数据),场频一般满足在50-75Hz(保守数据),针对以上保守数据,我们以30KHz的行频进行扫描时所需时钟频率为:30KHz×800(行周期)=24MHz,则场频为:30KHz÷525(场周期)=57.14Hz,针对实验箱的条件,可以用12MHz的信号经过倍频(EP1K30QC208-2芯片特有的功能,在MaxPlusII软件中调用参数可设置兆功能元件库mega_lpm的CLKLOCK元件来倍频)来产生24MHz的时钟频率,参考设计的顶层文件如下图所示:图6.VGA接口实现顶视图VGACORE模块包含了扫描时序产生模块、图像描述模块。
时序产生模块的设计可参考图5所示来设计,图像描述模块主要通过640×480个像素点来描述图像。
如本项设计的彩条信号发生器可通过图像描述模块产生如下表所示的3种显示模式,共6种显示变化的图像。
表3 VGA图形编码1 行彩条1:白黄青绿品红蓝黑2:黑蓝红品绿青黄白2 竖彩条1:白黄青绿品红蓝黑2:黑蓝红品绿青黄白3 棋盘格1:棋盘格显示模式1 2:棋盘格显示模式2表4 VGA颜色编码颜色黑蓝红品绿青黄白G 0 0 0 0 1 1 1 1R 0 0 1 1 0 0 1 1B 0 1 0 1 0 1 0 1在设计完彩条信号发生器的基础上很容易完成汉字/图像的设计。
由于本设计是对视频数据进行处理,用普通的设计方法(不使用专用芯片),在单芯片上实现是不可思议的,而在此用FPGA设计,轻松地达到了面积和速度上的要求。
六、程序及仿真(一)、管脚分配本设计采用主板上的VGA接口实验模式:模式5时钟及控制clk----->pin_29 clock9 实验要求采用12M的时钟rst----->pin_240 键8,低电平有效,作为使能信号MD ----->pin_233 键1,模式选择信号,共有6种模式显示器输出R ----->pin_180 PIO29G ----->pin_181 PIO30B ----->pin_182 PIO31HS ----->pin_183 PIO32VS ----->pin_185 PIO34(二)、彩条发生器程序实现及仿真1、主程序module vga( clk_25m,rst_n, //系统控制hsync,vsync,vga_rgb,MD // VGA控制);input clk_25m; // 25MHzinput rst_n; //低电平复位input MD;// FPGA与VGA接口信号output hsync; //行同步信号output vsync; //场同步信号output[2:0] vga_rgb;//-------------------------------------------------- // 坐标计数reg[9:0] x_cnt; //行坐标reg[9:0] y_cnt; //列坐标always @ (posedge clk_25m or negedge rst_n)if(!rst_n) x_cnt <= 10'd0;else if(x_cnt == 10'd799) x_cnt <= 10'd0;else x_cnt <= x_cnt+1'b1;always @ (posedge clk_25m or negedge rst_n)if(!rst_n) y_cnt <= 10'd0;else if(y_cnt == 10'd524) y_cnt <= 10'd0;else if(x_cnt == 10'd799) y_cnt <= y_cnt+1'b1;//-------------------------------------------------- // 产生VGA场同步,行同步信号reg hsync_r,vsync_r;always @ (posedge clk_25m or negedge rst_n)if(!rst_n) hsync_r <= 1'b1;else if(x_cnt == 10'd0) hsync_r <= 1'b0; //产生hsync信号else if(x_cnt == 10'd96) hsync_r <= 1'b1;always @ (posedge clk_25m or negedge rst_n)if(!rst_n) vsync_r <= 1'b1;else if(y_cnt == 10'd0) vsync_r <= 1'b0; //产生vsync信号else if(y_cnt == 10'd2) vsync_r <= 1'b1;assign hsync = hsync_r;assign vsync = vsync_r;//-------------------------------------------------- //有效显示标志位产生reg valid_yr; //行显示有效信号always @ (posedge clk_25m or negedge rst_n)if(!rst_n) valid_yr <= 1'b0;else if(y_cnt == 10'd32) valid_yr <= 1'b1;else if(y_cnt == 10'd512) valid_yr <= 1'b0;wire valid_y = valid_yr;reg valid_r; // VGA有效显示区标志位always @ (posedge clk_25m or negedge rst_n)if(!rst_n) valid_r <= 1'b0;else if((x_cnt == 10'd141) && valid_y) valid_r <= 1'b1;else if((x_cnt == 10'd781) && valid_y) valid_r <= 1'b0;wire valid = valid_r;wire[9:0] x_dis; //横坐标显示有效区域相对坐标值0-639 wire[9:0] y_dis; //竖坐标显示有效区域相对坐标值0-479assign x_dis = x_cnt - 10'd142;assign y_dis = y_cnt - 10'd33;//-------------------------------------------------- //---------------------------------------------reg[2:0] cnt;always @ (posedge MD or negedge rst_n) beginif(!rst_n)cnt <= 3'd0;else if(cnt==3'd5)cnt<=3'd0;elsecnt<=cnt+3'd1;end//-------------------------------------------------- // VGA色彩信号产生/*RGB = 000 黑色RGB = 100 红色= 001 蓝色= 101 紫色= 010 绿色= 110 黄色= 011 青色= 111 白色*///---------------------------------------------------- reg[2:0] vga_rgb;always@( posedge clk_25m)beginif(!valid) vga_rgb <= 3'd0;else beginif (cnt==3'd0)begin //竖彩条模式if(x_dis >= 10'd0 && x_dis < 10'd80) vga_rgb <= 3'd0;else if(x_dis >= 10'd80 && x_dis < 10'd160) vga_rgb <= 3'd1;else if(x_dis >= 10'd160 && x_dis < 10'd240) vga_rgb <= 3'd2;else if(x_dis >= 10'd240 && x_dis < 10'd320) vga_rgb <= 3'd3;else if(x_dis >= 10'd320 && x_dis < 10'd400) vga_rgb <= 3'd4;else if(x_dis >= 10'd400 && x_dis < 10'd480) vga_rgb <=3'd5;else if(x_dis >= 10'd480 && x_dis < 10'd560) vga_rgb <= 3'd6;else if(x_dis >= 10'd560 && x_dis < 10'd640) vga_rgb <= 3'd7;endif (cnt==3'd1)begin //竖彩条模式if(x_dis >= 10'd0 && x_dis < 10'd80) vga_rgb <= 3'd7;else if(x_dis >= 10'd80 && x_dis < 10'd160) vga_rgb <= 3'd6;else if(x_dis >= 10'd160 && x_dis < 10'd240) vga_rgb <= 3'd5;else if(x_dis >= 10'd240 && x_dis < 10'd320) vga_rgb <= 3'd4;else if(x_dis >= 10'd320 && x_dis < 10'd400) vga_rgb <= 3'd3;else if(x_dis >= 10'd400 && x_dis < 10'd480) vga_rgb <=3'd2;else if(x_dis >= 10'd480 && x_dis < 10'd560) vga_rgb <= 3'd1;else if(x_dis >= 10'd560 && x_dis < 10'd640) vga_rgb <= 3'd0;endif(cnt==3'd2)begin //横彩条模式if(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd0;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd1;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_rgb <= 3'd2;else if(y_dis >= 10'd180 && y_dis < 10'd240) vga_rgb <= 3'd3;else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd4;else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd5;else if(y_dis >= 10'd360 && y_dis < 10'd420) vga_rgb <= 3'd6;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <=3'd7;endif(cnt==3'd3)begin //横彩条模式if(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd7;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd6;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_rgb <= 3'd5;else if(y_dis >= 10'd180 && y_dis < 10'd240) vga_rgb <= 3'd4;else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd3;else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd2;else if(y_dis >= 10'd360 && y_dis < 10'd420) vga_rgb <= 3'd1;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <=3'd0; endif(cnt==3'd4)begin //棋盘格模式case(x_dis)10'd0: beginif(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd0;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd1;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_rgb <= 3'd2;else if(y_dis >= 10'd180 && y_dis < 10'd240) vga_rgb <= 3'd3;else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd4;else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd5;else if(y_dis >= 10'd360 && y_dis < 10'd420) vga_rgb <= 3'd6;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <= 3'd7;end10'd80,10'd160,10'd240,10'd320,10'd400,10'd480,10'd560,10'd640:vga_rgb <= vga_rgb+3'd1; //每80个横坐标像素点后显示色彩数据增1变化default: ;endcaseendif(cnt==3'd5)begin //棋盘格模式case(x_dis)10'd0: beginif(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd7;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd6;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_rgb <= 3'd5;else if(y_dis >= 10'd180 && y_dis < 10'd240) vga_rgb <= 3'd4;else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd3;else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd2;else if(y_dis >= 10'd360 && y_dis < 10'd420) vga_rgb <= 3'd1;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <= 3'd0;end10'd80,10'd160,10'd240,10'd320,10'd400,10'd480,10'd560,10'd640:vga_rgb <= vga_rgb+3'd1; //每80个横坐标像素点后显示色彩数据增1变化default: ;endcaseendendendendmodule2、验证程序`timescale 1 ns/ 1 psmodule tb_vga ();reg t_clk_25m;reg t_rst_n;wire t_hsync;wire [2:0] t_vga_rgb;wire t_vsync;wire t_MD;vgahct dut( .clk_25m(t_clk_25m),.hsync(t_hsync),.rst_n(t_rst_n),.vga_rgb(t_vga_rgb),.vsync(t_vsync),.MD(t_MD));initialbegint_clk_25m=0;t_rst_n=1;t)MD=0;#20;t_rst_n=0;#50;t_rst_n=1;$display("Running testbench");#10000000000 $stop;endalways #0.04 t_clk_25m=~t_clk_25m;always #200 t_MD=~t_MD;endmodule3、仿真波形(三)、字符显示程序及仿真1、主程序`timescale 1ns / 1psmodule vga_char( clk_25m,rst_n, //系统控制hsync,vsync,vga_rgb // VGA控制);input clk_25m; // 25MHzinput rst_n; //低电平复位// FPGA与VGA接口信号output hsync; //行同步信号output vsync; //场同步信号output[2:0] vga_rgb;//-------------------------------------------------- // 坐标计数reg[9:0] x_cnt; //行坐标reg[9:0] y_cnt; //列坐标always @ (posedge clk_25m or negedge rst_n)if(!rst_n) x_cnt <= 10'd0;else if(x_cnt == 10'd799) x_cnt <= 10'd0;else x_cnt <= x_cnt+1'b1;always @ (posedge clk_25m or negedge rst_n)if(!rst_n) y_cnt <= 10'd0;else if(y_cnt == 10'd524) y_cnt <= 10'd0;else if(x_cnt == 10'd799) y_cnt <= y_cnt+1'b1;//-------------------------------------------------- // VGA场同步,行同步信号reg hsync_r,vsync_r; //同步信号always @ (posedge clk_25m or negedge rst_n)if(!rst_n) hsync_r <= 1'b1;else if(x_cnt == 10'd0) hsync_r <= 1'b0; //产生hsync信号else if(x_cnt == 10'd96) hsync_r <= 1'b1;always @ (posedge clk_25m or negedge rst_n)if(!rst_n) vsync_r <= 1'b1;else if(y_cnt == 10'd0) vsync_r <= 1'b0; //产生vsync信号else if(y_cnt == 10'd2) vsync_r <= 1'b1;assign hsync = hsync_r;assign vsync = vsync_r;//-------------------------------------------------- //有效显示标志位产生reg valid_yr; //行显示有效信号always @ (posedge clk_25m or negedge rst_n)if(!rst_n) valid_yr <= 1'b0;else if(y_cnt == 10'd32) valid_yr <= 1'b1;else if(y_cnt == 10'd512) valid_yr <= 1'b0;wire valid_y = valid_yr;reg valid_r; // VGA有效显示区标志位always @ (posedge clk_25m or negedge rst_n)if(!rst_n) valid_r <= 1'b0;else if((x_cnt == 10'd141) && valid_y) valid_r <= 1'b1;else if((x_cnt == 10'd781) && valid_y) valid_r <= 1'b0;wire valid = valid_r;//wire[9:0] x_dis; //横坐标显示有效区域相对坐标值0-639 wire[9:0] y_dis; //竖坐标显示有效区域相对坐标值0-479//assign x_dis = x_cnt - 10'd142;assign y_dis = y_cnt - 10'd33;//--------------------------------------------------//-------------------------------------------------- // VGA色彩信号产生/*RGB = 000 黑色RGB = 100 红色= 001 蓝色= 101 紫色= 010 绿色= 110 黄色= 011 青色= 111 白色*//*HIT字模参数*/parameter char_line0=24'h000000,char_line1=24'h000000,char_line2=24'h000000,char_line3=24'he77cfe,char_line4=24'h421092,char_line5=24'h421010,char_line6=24'h421010,char_line7=24'h421010,char_line8=24'h7e1010,char_line9=24'h421010,char_linea=24'h421010,char_lineb=24'h421010,char_linec=24'h421010,char_lined=24'he77c38,char_linee=24'h000000,char_linef=24'h000000;reg[4:0] char_bit; //显示位计算always @(posedge clk_25m or negedge rst_n)if(!rst_n) char_bit <= 5'h1f;else if(x_cnt == 10'd442) char_bit <= 5'd23; //显示最高位数据else if(x_cnt > 10'd442 && x_cnt < 10'd466) char_bit <= char_bit-1'b1; //依次显示后面的数据reg[2:0] vga_rgb; // VGA色彩显示寄存器always @ (posedge clk_25m)if(!valid) vga_rgb <= 3'd0;else if(x_cnt > 10'd442 && x_cnt < 10'd467) begincase(y_dis)10'd231: if(char_line0[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd232: if(char_line1[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd233: if(char_line2[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd234: if(char_line3[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd235: if(char_line4[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd236: if(char_line5[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd237: if(char_line6[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd238: if(char_line7[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd239: if(char_line8[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd240: if(char_line9[char_bit]) vga_rgb <= 3'b100;//红色else vga_rgb <= 3'b010; //绿色10'd241: if(char_linea[char_bit]) vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色10'd242: if(char_lineb[char_bit])vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色10'd243: if(char_linec[char_bit])vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色10'd244: if(char_lined[char_bit])vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色10'd245: if(char_linee[char_bit])vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色10'd246: if(char_linef[char_bit])vga_rgb <= 3'b100; //红色else vga_rgb <= 3'b010; //绿色default: vga_rgb <= 3'b000;endcaseendelse vga_rgb <=3'b000 ;endmodule2、验证程序`timescale 1 ns/ 1 psmodule tb_vga_char();reg t_clk_25m;reg t_rst_n;wire t_hsync;wire [1:0] t_vga_b;wire [2:0] t_vga_g;wire [2:0] t_vga_r;wire t_vsync;vga_char dut(.clk_25m(t_clk_25m),.hsync(t_hsync),.rst_n(t_rst_n),.vga_b(t_vga_b),.vga_g(t_vga_g),.vga_r(t_vga_r),.vsync(t_vsync));initialbegint_clk_25m=0;t_rst_n=1;#20;t_rst_n=0;#50;t_rst_n=1;$display("Running testbench");#1000 $stop;endalways #0.04 t_clk_25m=~t_clk_25m; endmodule3、仿真波形六、总结在本次课程设计中,对VGA显示的原理有了一定的了解,在团队的分工合作下使用Verilog语言和Modelsim仿真器完成了可显示横彩条、竖彩条、棋盘格相间的VGA控制器的设计和验证,设计并验证了可显示英语单词”HIT”的VGA控制器,并掌握了Quartus II软件和SOPC实验箱的使用。