电子设计自动化课程设计报告
eda花样彩灯课程设计报告

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. 第三课时:花样彩灯设计原理及实践操作指导。
eda课程设计

eda课程设计EDA课程设计EDA(Electronic Design Automation)是电子设计自动化的缩写,是指利用计算机技术和软件工具来辅助电子设计的过程。
EDA课程设计是指在电子设计自动化领域中,为学生提供相关的课程内容和实践机会,以培养学生的电子设计能力和创新能力。
EDA课程设计的目的是为了让学生掌握电子设计自动化的基本理论和方法,了解EDA软件工具的使用和应用,培养学生的电子设计能力和创新能力。
在EDA课程设计中,学生需要学习电路设计、PCB 设计、仿真分析、布局布线等相关知识,掌握EDA软件工具的使用和应用,完成电子设计项目的实践任务。
EDA课程设计的内容包括电路设计、PCB设计、仿真分析、布局布线等方面。
在电路设计方面,学生需要学习电路基本理论、电路分析方法、电路设计流程等知识,掌握常用的电路设计软件工具,如Protel、Altium Designer等。
在PCB设计方面,学生需要学习PCB设计的基本原理、PCB设计流程、PCB设计软件工具的使用等知识,掌握常用的PCB设计软件工具,如PADS、Altium Designer等。
在仿真分析方面,学生需要学习仿真分析的基本原理、仿真分析的流程、仿真分析软件工具的使用等知识,掌握常用的仿真分析软件工具,如SPICE、PSpice等。
在布局布线方面,学生需要学习布局布线的基本原理、布局布线的流程、布局布线软件工具的使用等知识,掌握常用的布局布线软件工具,如PADS、Altium Designer等。
EDA课程设计的实践任务包括电子设计项目的设计和实现。
学生需要根据实际需求,设计并实现一个电子产品,包括电路设计、PCB 设计、仿真分析、布局布线等方面。
在电路设计方面,学生需要根据实际需求,设计一个符合要求的电路,包括电路原理图、电路元器件的选型和布局等。
在PCB设计方面,学生需要根据电路设计的要求,设计一个符合要求的PCB板,包括PCB板的布局、布线、元器件的安装等。
《电子设计自动化》---电子灭蚊拍电路的设计设计报告

《电子设计自动化》---电子灭蚊拍电路的设计设计报告一、设计目的与要求1.本次课程设计的目的让学生熟悉电子电路及电路板PCB设计基本方法、步骤及设计原则;通过完成一个电路的设计,理解并掌握自动化实践活动中涉及的工程管理与经济决策基本知识;通过设计与仿真,能够合理分析实验参数或结果,发挥学生的创造力,使得学生初步具有电路板设计的能力,为今后工作打下坚实的基础;同时,通过视频学习、上机实践、电路设计、电路仿真使学生掌握Altium Designer软件的使用,培养学生主动查阅书籍、参考资料、产品手册、工具书的习惯和上网查寻获取有用信息的能力,通过自主学习,适应发展;撰写课程设计报告,通过口头或书面方式表达复杂自动化工程问题并回应指令,使学生具备电子电路及电路板PCB设计能力,培养学生解决实际工程技术问题的能力。
2.本次课程设计的要求(1)采用Altium Designer软件,完成指定电子电路的原理图和PCB图绘制。
(2)选择设计题目,制定设计方案,利用仿真软件进行电路仿真,调试电路各模块功能,测试电路性能,性能需要满足题目要求。
对所设计的电路进行元器件选择,并根据具体要求绘制电子原理图和PCB图。
(3)完成《电子设计自动化》课程设计报告,报告包括封面、设计目的与要求、具体设计任务、课程设计内容(含设计方案与分析、仿真电路图设计、仿真调试及结果分析、电路原理图与PCB图设计、元器件清单、设计心得等)、答辩记录等部分。
二、具体设计任务每人从给出的设计题目中选定一题,按题目要求完成设计方案与分析、仿真电路图设计、仿真调试及结果分析、电路原理图与PCB图设计、元器件清单等环节,并按规范撰写本次课程设计报告。
题目:电子灭蚊拍电路的设计设计一款电子灭蚊拍电路,具体要求为:(1)使用可充电的3V 电池组进行供电,需要设计出3V 充电电路。
(2)采用高压电网灭蚊三课程设计内容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课程设计报告

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)工具的使用以及实际电路的设计与测试展开,以培养学员的电子设计能力和创新思维。
预期成果是学员能够熟练运用所学知识独立完成电子电路的设计与制作,并具备进一步学习电子工程相关领域知识的能力。
课程背景是基于当前电子技术的快速发展和在各个行业的广泛应用。
在智能制造、物联网、可穿戴设备等领域,电子技术都扮演着核心角色。
通过本课程的学习,学员不仅能够理论联系实际,而且能够紧跟科技发展的步伐,为社会主义现代化建设贡献力量。
二、学习者分析:目标受众为大学本科电子信息工程及相关专业的学生,他们通常对电子技术和电路设计有一定的兴趣和好奇心,年龄在18-22岁之间,已经完成了基础的物理和数学课程,具备一定的理论基础。
先备知识方面,学员应已掌握基本的电路理论、模拟电路和数字电路知识,对微电子学有一定的了解,同时熟悉计算机操作和编程,能够使用常见的电子设计软件。
三、学习目标:1.认知目标:学员应掌握电子元件的工作原理、电路分析方法、常见的电子电路设计流程,以及电子设计自动化工具的使用。
2.技能目标:学员应能够使用EDA工具进行电路图设计、PCB布局,并能够进行电路仿真。
此外,学员还应具备实际操作能力,能够进行电路焊接、调试和故障排查。
3.情感目标:通过课程学习,学员应培养对电子技术的兴趣和热情,形成创新设计的思维习惯,增强解决实际工程问题的信心和责任感。
四、课程内容:1.模块/单元划分:本课程分为五个主要模块,分别是电子元件基础、电路分析原理、EDA工具使用、电路设计实践以及项目实战。
2.内容描述:每个模块下细分为多个子主题,如在电子元件基础模块中,将涵盖电阻、电容、电感以及二极管、晶体管等的基本特性及应用。
电路分析原理模块将深入讲解交流/直流电路分析、信号传输等内容。
eda课程设计报告速度表设计

eda课程设计报告速度表设计一、课程目标知识目标:1. 学生能理解速度表的基本原理和设计理念,掌握速度的计算公式。
2. 学生能了解并运用电子设计自动化(EDA)软件进行速度表电路的设计与仿真。
3. 学生掌握速度表在实际应用中的相关技术参数和性能指标。
技能目标:1. 学生能够运用EDA软件进行电路图绘制,具备基本的电路设计能力。
2. 学生能够通过小组合作,进行速度表的设计、搭建与调试,培养实际操作能力。
3. 学生能够运用所学知识解决实际生活中的速度测量问题,提高创新能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对电子设计自动化技术的兴趣,激发创新精神。
2. 学生在小组合作中,培养团队协作意识,提高沟通与交流能力。
3. 学生能够认识到速度表在交通安全中的作用,增强社会责任感和遵守交通规则的意识。
本课程针对学生年级特点,注重理论与实践相结合,以EDA软件为工具,培养学生电子设计能力。
课程目标具体、可衡量,旨在使学生在掌握基本知识的同时,提高实际操作和创新能力,培养良好的团队协作意识和价值观。
二、教学内容1. 速度表原理及计算公式:讲解速度表的基本工作原理,引导学生掌握速度的计算公式,理解速度与时间、路程的关系。
2. EDA软件应用:介绍EDA软件的基本功能与操作方法,使学生能够运用软件进行电路设计与仿真。
3. 速度表电路设计:依据教材相关章节,指导学生进行速度表电路的绘制,包括传感器、放大器、显示电路等组成部分。
4. 电路搭建与调试:学生分组进行速度表的搭建和调试,掌握电路故障排查方法,提高实际操作能力。
5. 速度表在实际应用中的案例分析:分析速度表在交通安全、运动监测等领域的应用案例,让学生了解速度表的实际意义。
教学内容安排和进度:第一课时:速度表原理及计算公式第二课时:EDA软件应用与电路设计第三课时:速度表电路搭建与调试第四课时:案例分析及总结教学内容与课本紧密关联,注重科学性和系统性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子设计自动化课程设计报告电子设计自动化课程设计报告学生姓名:学号:课设题目: 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 蓝基色 blue4 地址码 ID Bit5 自测试 (各家定义不同)6 红地7 绿地8 蓝地9 保留(各家定义不同)10 数字地11 地址码12 地址码13 行同步14 场同步15 地址码 (各家定义不同)通过模拟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种显示变化的图像。
1 行彩条1:白黄青绿品红蓝黑2:黑蓝红品绿青黄白2 竖彩条1:白黄青绿品红蓝黑2:黑蓝红品绿青黄白3 棋盘格1:棋盘格显示模式1 2:棋盘格显示模式2颜色黑蓝红品绿青黄白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-479 assign 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-639wire[9:0] y_dis; //竖坐标显示有效区域相对坐标值0-479//assign x_dis = x_cnt - 10'd142;assign y_dis = y_cnt - 10'd33;//--------------------------------------------------//--------------------------------------------------// VGA色彩信号产生/*RGB = 000 黑色R GB = 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实验箱的使用。