1、桂林电子科技大学实训(论文)报告用纸第1页共2页CRT字符控制器设计摘要本论文介绍了基于ALTERA公司的CYCLONEII系列FPGA的CRT字符控制器设计,利用FPGA芯片实现对CRT显示器扫描轨迹控制,采用VGA接口和电阻网络D/A转换进行系统互联,在CRT显示器上能够显示基本的ASCII字符、汉字、图像、图形和16位色彩。同时能够通过指令端口设置显示汉字、图像等大小和对应所在显示器上的位置,该功能包括了对图形、图像的动态显示与控制,完全实现仿点阵液晶的中级显示。毕设的重心放在了显示控制器的系统层面的设计,采用了自顶向下的思路进行设计,系统的核心为有限状态机。论文中给出了完整的设计思路和
2、过程,并将系统分模块进行了详细的设计,给出了VHDL语言描述。完成了状态机和核心模块以及系统整体的仿真验证。然后在计算机的QUARTUSII110软件平台上完成设计电路的编辑、编译、仿真,编程下载到特定目标芯片,最终下载到硬件电路板上测试通过。关键词FPGA;VHDL;VGA接口;状态机;16位色彩;显示汉字;图形和图像动态显示桂林电子科技大学实训(论文)报告用纸第2页共2页ABSTRACTTHISPAPERDESCRIBESTHECRTBASEDONALTERASCYCLONEIIFPGASERIESCHARACTERDESIGN,CRTMONITORSSCANPATHCONTROLUSIN
3、GFPGACHIP,D/ACONVERSIONSYSTEMWITHVGAINTERFACEANDTHERESISTANCENETWORKINTERCONNECTION,ONCRTMONITORSCAPABLEOFDISPLAYINGBASICASCIICHARACTERS,CHARACTERS,IMAGES,GRAPHICS,AND16BITCOLORWHILEPORTISSETTODISPLAYCHINESECHARACTERS,THROUGHINSTRUCTIONONDISPLAYASTHEIMAGESIZEANDPOSITION,WHICHINCLUDESTHEDYNAMICDISPLA
4、YOFGRAPHICS,IMAGEANDCONTROL,THEFULLREALIZATIONOFIMITATIONOFTHEINTERMEDIATEDOTMATRIXLCDDISPLAYSETFOCUSONTHEDISPLAYCONTROLLERFORSYSTEMLEVELDESIGN,USINGTOPDOWNDESIGN,THESYSTEMCOREFORFINITESTATEMACHINESPAPERGIVESTHECOMPLETESETOFDESIGNANDPROCESS,DETAILEDDESIGNANDSYSTEMMODULES,DESCRIBEDINVHDLLANGUAGEAREGI
5、VENCOMPLETEDSTATEMACHINEANDSIMULATIONOFTHECOREMODULEANDTHESYSTEMASAWHOLEANDTHENINTHEQUARTUSIISOFTWAREPLATFORM11DESIGNWASCOMPLETEDONTHECOMPUTEREDITING,COMPILATION,SIMULATIONOFACIRCUIT,CHIPDOWNLOADPROGRAMMINGTOASPECIFICDESTINATION,ULTIMATELYDOWNLOADEDTOTHEHARDWARECIRCUITBOARDTESTPASSEDKEYWORDSFPGAVHDL
6、VGAINTERFACE16BITCOLORDISPLAYCHINESECHARACTERSDYNAMICDISPLAYOFGRAPHICSANDIMAGES桂林电子科技大学实训(论文)报告用纸第1页共1页目录摘要1ABSTRACT2引言11FPGA和VGA概述111FPGA的概念112FPGA的发展213FPGA的工作原理214VGA基本概念315VGA显示原理4151VGA接口定义4152VGA时序控制42系统设计621设计思路622系统功能结构设计623系统层次模块划分7231顶层模块7232各部分控制模块7233用户模式底层模块924系统硬件语言描述11241VHDL描述思路11242
7、总体电路的描述11243分块电路的描述1525系统仿真验证283结果与分析3031实现功能说明3032器件资源分析3133故障与问题分析324总结33谢辞34参考文献35附录36桂林电子科技大学实训(论文)报告用纸第1页共36页引言随着科技的发展,VGA汉字显示系统的应用范围越来越广泛,传统的VGA字符显示方案是通过通用处理器控制VGA接口显示字符信息的,这种显示方案是以通用处理器为核心的处理系统,整个系统体积大、可靠性不高且灵活性差,不适合便携设备的设计。而FPGA芯片具有可靠性高、编程灵活和体积小等特点,因此用FPGA技术来实现VGA汉字显示可以有效解决传统技术中的缺点。显示绘图阵列VID
8、EOGRAPHICARRAY,VGA接口,它作为一种标准的显示接口得到了广泛的应用。VGA接口大多应用在显示器与显卡之间;同时还可以应用在彩色等离子电视输入图像的模数转换上;VGA接口同样也是LCD液晶显示设备的标准接口。可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。早期的器件只能存储少量的数据,完成简单的逻辑功能;发展到现在,可以完成复杂的逻辑功能,速度更快,规模更大,功耗更低。目前可编程逻辑器件主要有两类复杂可编程逻辑器件COMPLEXPROGRAMMABLELOGICDEVICE,CPLD和现场可编程逻辑器件FIELDPROGRAMMABLEGATEARRAY,FPGA。FPG
9、A的运行速度快,管脚资源丰富,容易实现大规模的系统设计,有大量的软核可用,便于进行二次开发。另外,由于FPGA具有可重构能力、抗干扰性强等特点,因此,FPGA在工业控制等领域越来越受到重视。利用FPGA完成VGA显示控制,可以使图像和汉字的显示脱离PC机控制,形成体积小、功耗低的各式嵌入式系统便携式设备或手持设备,应用于地面勘测、性能监测等方面,具有重要的现实意义。1FPGA和VGA概述11FPGA的概念FPGA是英文FIELDPROGRAMMABLEGATEARRAY的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC
10、)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA(现场可编程门阵列)是专用集成电路(ASIC)中集成度最高的一种,用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑,因而也被用于对CPU的模拟。用户对FPGA的编程数据放在FLASH芯片中,通过上电加载到FPGA中,对其进行初始化。也可在线对其编程,实现系统在线重构,这一特性可以构建一个根据计算任务不同而实时定制的CPU,这是当今研究的热门领域。桂林电子科技大学实训(论文)报告用纸第2页共36页12FPGA的发展和其他可编程逻辑器件一样,FPGA也由未完成的逻辑阵列所
11、组成,通过将这些逻辑阵列连接到一起来完成一定的功能。像PAL一样,各个阵列单元之间的相互连接是可以编程的。下面介绍FPGA的发展过程。1985年,XILINX公司推出了世界上第一款FPGA。推出的这款FPGA包括两个器件和支持布同布线的设计工具。FPGA的发展非常快,在不到10年的时间里,时钟频率就从不到10MHZ提高到100MHZ设计规则已经达到亚微米级别,FPGA芯片的规模也从几千门增加到2万多等效门。大量功能强大易用的软件工具也相继推出,使得FPGA很快占领了电子设计领域很大的一块市场。20世纪80年代推出的FPGA可以说是INTEL公司于1971年推出第一款商用微处理器的延续。那个时期
12、,典型的微处理器系统包含微处理器、存储器和一些特殊功能的中小规模(MSI/SSI)器件。为追求更佳的件能、更小的尺寸、更低的成本、更快的错误恢复能力、高可靠性以及更快更易使用的原型,集成电路的设计者都意识到一定会有一种器件要取代当时的中小规模电路。这个概念的第一个尝试是SIGNETICS公司于1975年推出的83S100FPLA(现场可编程逻辑阵列)。这款可编程器件实际上是一款PLA结构的器件。它由16个输人、48个乘积项与阵列、8个输出、48个乘积项或阵列构成,通过NICR熔丝实现连续的断开或连接。这种方法在以降低速度和增加功耗为代价的前提下,给了设计师们很大的电路设计空间。但是这款可编程器
13、件需要人工来设置熔丝的断或合,因此很复杂而且容易出错。13FPGA的工作原理为了能让不太熟悉FPGA的读者能够对FPGA有一个整体印象,这里以XILINX4000系列的FPGA为例简单说明它的设汁能力。XC4025包含大约1024个CLB,它们按3232的矩阵形式排列在FPGA芯片里,这相当于25000个等效门。这款FPGA包含422KBIT的RAM,主要用于编程。一个CLB的运行频率可达250MHZ,但如果将互连线网络引入的延迟以及像加法器这样更复杂的逻辑考虑进去,还可以获得2050MHZ的时钟频率。直观地讲,加法器这样的逻辑是由大量的CLB来构成的,例如一个32BIT的加法器要用掉62个C
14、LB。FPGA采用了逻辑单元阵列LCA(LOGICCELLARRAY)这样一个新概念,内部包括可配置逻辑模块CLB(CONFIGURABLELOGICBLOCK)、输出输入模块IOB(INPUTOUTPUTBLOCK)和内部连线(INTERCONNECT)三个部分。FPGA的基本特点主要有1、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2、FPGA可做其它全定制或半定制ASIC电路的中试样片。3、FPGA内部有丰富的触发器和IO引脚。桂林电子科技大学实训(论文)报告用纸第3页共36页4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5、FPG
15、A采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PR
16、OM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。14VGA基本概念像素和分辨率目前的显示器基木都采用APAALLPOINTADDRESSABLE即全点、了址方式。显示器上输出的一切信息,包括数值、文字、表格、图像、动画等等,都是由光点(即像素)构成的。显示的最小单位就
17、是像素,像素之间的最小间距就是点距。越小像素越密,则画面越清晰和细腻。而分辨率的则指整个屏幕的像素得多少。可以通过显示器的实际尺寸除以像距近似得到。扫描频率显示器采用光栅扫描方式,即轰击荧光屏的电子束在CRT屏幕上从左到右(受水平同步信号HSYNC控制)、从上到下(受垂直同步信号VSYNC控制)做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。电子束采用光栅扫描方式,从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后,又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描后,形成一帧。此后,电子束又回到左上方起点,开始下一帧的扫描。这种方法也就是常说的逐行扫描显
18、示。而隔行扫描指电子束在扫描时每隔一行扫一线,完成一屏后再返回来扫描剩下的线,这与电视机的原理一样。隔行扫描的显示器比逐行扫描闪烁得更厉害,也会让使用者的眼睛更疲劳。目前微机所用显示器几乎都是逐行扫描。完成一行扫描所需时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描所需的时间称为垂直扫描时间,其倒数为垂直扫描频率,又称刷新频率,即刷新一屏的频率。常见的有60HZ、75HZ等,标准VGA显示的场频60HZ,行频为315KHZ。显示卡一个像素点有多个颜色,由表示该点的二进制的位数决定也称为位宽。像素位宽为8BIT,则每个像素有28256种颜色;位宽为16BIT则有21665536种桂林
19、电子科技大学实训(论文)报告用纸第4页共36页颜色,位宽为24BIT则有224即一千七百多万种颜色。显示卡内的D/A(数模)转换电路将每个像素的位宽(二进位整数)转换成对应亮度的R、G、B(红、绿、蓝)模拟信号,控制屏幕上相应的三色荧光点发光,产生所要求的颜色。随着技术的进步显示卡的功能也不断增加。15VGA显示原理VGA标准是一种计算机显示标准,最初是由IBM公司在1987年提出的,分辨率是640480。VGA接口也叫做DSUB接口,是显卡上输出模拟信号的接口。目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的DA转换器转变为R、
20、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。151VGA接口定义VGA接口负责向显示器输出相应的显示信号。VGA接口是一种D型接口,上面共有15个针孔,非对称地分成3排,每排5个,其排列及接口定义如图1所示。图1VGA接口在基于FPGA的VGA控制中,只需要考虑行同步信号HS、场同步信号VS、蓝基色R、绿基色G、红基色B这5个信号。如果能从FPGA发出这5个信号到VGA接口,就可以实现对VGA的控制。152VGA时序控制VGA工业标准中,像素的输出频率为25175MHZ,行频率是31496KHZ,场频率是5994HZ。如果显示器发这种标准频率输出,其分辨率为640480,即
21、每行显示640个像素,每场显示480行。事实上,这640480是显示器的有效显示区除了这一区域之外,还有行消隐区以及场消隐区,以实现行列的同步操作,VGA接口实际输出的像素是800525。对于行同步信号,由于每行实际的像素数是800,所以行频率是25175MHZ桂林电子科技大学实训(论文)报告用纸第5页共36页80031469KHZ,行周期是131469KHZ3178US。在这800个像素当中,640点是有效显示区,160点是消隐区即非显示区。行同步信号HS每行有一个脉冲,其低电平的宽度是3178US96800381PS,有96个脉冲。行扫描时序要求如表1所示,时序图如图2所示。表1行扫描时序
22、要求单位像素图2行扫描时序图对于场同步信号,每场实际的行数是525行,行频率是31469KHZ,所以场频率是31469KHZ5255994HZ,场周期是15994HZ16683MS。这525行当中,有480行是有效显示区,45行是场消隐区。场同步信号每场有一个脉冲,其低电平宽度是16683MS252563US两行。场扫描的时序要求如表2所示,时序图如图3所示。表2场扫描时序要求单位行图3场扫描时序图桂林电子科技大学实训(论文)报告用纸第6页共36页2系统设计21设计思路CRT字符控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。利用VHDL硬
23、件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层VGA显示控制器的模块实体仿真综合得以顺利通过。第一步系统功能结构设计VGA显示控制器实现的主要功能是向CRT显示器发出图形、图像控制信号,产生相应的图形、图像显示。由此,容易得到系统功能结构框图,有关系统功能分析和输入输出约束,详述于22小节中。第二步系统层次模块划分从系统逻辑结构出发,将系统设计为3层。顶层用于描述整个系统的功能和运行;第二层承接顶层,负责实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。每个层次可用一个或多个具体模块加以实现,层次模块划分详述于
24、23小节中。控制器部分是系统的核心部分,负责协调和控制各子模块的工作。控制器设计采用有限状态机的方法,详述于23小节中。第三步系统硬件语言描述在前述工作的基础上,采用VHDL语言对VGA显示控制器的三个层次依次进行描述,具体描述出每个模块,生成具体电路视图。详述于24小节中。第四步系统仿真验证经过前三步之后,系统设计基本完成,需要对系统主要功能进行仿真验证,更进一步分析状态机、电路逻辑和时序配合等是否正确。详述于25小节中。22系统功能结构设计CRT显示器VGA显示控制器用户输入接口桂林电子科技大学实训(论文)报告用纸第7页共36页图4VGA显示控制器系统功能结构框图VGA显示控制器的输入是用
25、户控制信息,如显示模式的切换命令、汉字、图形和图像移动的控制命令等。控制器根据用户的输入信息,决定工作模式功能,这里定义为汉字模式、图像模式、色彩模式、用户模式的功能。用户模式中,还应根据用户的输入控制图形的运动方向。而颜色信息的产生、显示器扫描同步信号等由VGA控制器产生,其输出为CRT显示器。如图4所示。23系统层次模块划分系统划分为三层,自顶向下分别是顶层模块、各部分控制模块、用户模式底层模块。顶层描述了整个系统的功能和运行;各部分控制模块实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。每个层次可用一个或多个具体模块加以实现。然后
26、从逻辑上划分出各层次的具体模块,分别如下。231顶层模块作用为集成子模块功能,控制子模块的连接和耦合信号。定义实体为VGACONTROLLER,在其中例化子模块。顶层模块VGACONTROLLER在数字系统中属于控制器模块,其设计是数字系统设计的核心。子模块中包括二层和三层设计中的八个模块,各模块间存在信号的传递,其中时钟信号由CLOCK产生,驱动其他各个模块,像素位置信号由PIXELCNT产生,输出到VGACOLOR、VGASIG、HANZIMODE、IMAGEMODE以及USERMODE模块,作为产生颜色图像信号和扫描同步消隐信号的依据,VGAMODE模块决定当前的模式状态,输出当前需要显
27、示的颜色图像信号。顶层模块和子模块的耦合关系,一方面,VGACONTROLLER获取输入信号,传递给子模块,其中输入控制信号SW0和SW1传递给VGAMODE用以控制状态的转移,S0、S1状态分别控制显示汉字模式HANZIMODE和图像动态显示模式IMAGEMODE,SW2SW17传递给VGACOLOR用以控制产生纯色彩,BT0BT4传递给USERMODE用以控制用户自定义图形图像。另一方面,VGAMODE将当前颜色图像信号、VGASIG将行场同步和消隐信号输出到VGACONTROLLER,控制器再输出到VGA接口,以控制CRT显示器。当然,以上信号的传递是基于逻辑和系统设计的角度加以分析的,
28、顶层设计实际是逻辑概念,并非有实实在在的电路,实际生成电路时信号是直接连线的传递的。232各部分控制模块桂林电子科技大学实训(论文)报告用纸第8页共36页具体实现顶层模块的描述,包括的功能主要是产生时钟信号,状态机的定义和状态的转移,产生像素位置信号,并根据不同的状态和像素位置产生RGB颜色信号。由此,可定义如下模块VGAMODE、CLOCK、PIXELCNT、VGASIG、VGACOLOR、HANZIMODE、IMAGEMODE。1、顶层状态机模块VGAMODE该模块定义了顶层状态机,有四种状态分别为汉字模式S0、图像模式S1、色彩模式S2、用户模式S3。根据拨码开关SW0和SW1的四种组合
29、选择各模式,完成状态的转移。根据当前状态选择VGACOLOR模块送入的多个颜色图像信号,发送给VGA接口RGB端口。输入拨码开关SW0、SW1的值。输出送往VGA接口的RGB颜色信号。2、时钟控制模块CLOCK作分频,由50MHZ的板级输入得到系统所需的25MHZ、100HZ和1HZ时钟信号。输入50MHZ晶振信号。输出25MHZ、100HZ、1HZ时钟信号。3、像素控制模块PIXELCNT产生像素位置信号。为VGACOLOR模块产生颜色和图像作定位参考。输入25MHZ时钟信号。输出行和列像素位置信号。4、同步信号控制模块VGASIG根据行列像素位置输出VGA接口标准中定义的行列同步负脉冲信号
30、和行列消隐信号,两种信号输入到VGA接口中可控制CRT显示器的扫描。输入行和列像素位置信号。输出VGA扫描同步信号和消隐信号。5、颜色信号控制模块VGACOLOR产生所有状态的颜色和图像信号,输出到VGAMODE模块进行选择后送VGA接口。为实现汉字模式S0、图像模式S1、用户模式S3状态下复杂的用户图像输出,定义了子模块HANZIMODE、IMAGEMODE、USERMODE,专门负责用户自定义颜色和图像的产生。输入行和列像素位置信号,用户颜色控制信号SW2SW17。输出S0、S1、S2、S3状态的颜色图像信号,16位色共65536种色彩。其中S2是色彩模式状态,由拨码开关SW2SW17分别
31、代表RGB三基色,每个R、G基色5个比特,B基色6个比特,只要在VGACOLOR中读取出这5个比特组合成为颜色码输出到VGA接口即可。因而是容易实现的。6、汉字显示控制模块HANZIMODE将需要显示的汉字或图像信号发送到VGA接口,有2种方法一是对像素进行计数后,将计数数值像素信息直接赋值给RGB颜色信号;二是使用FPGA内部的存储资源LPM_ROM来存储显示内容的像素信息,之后,经过程序将显示信号发送到VGA接口,实桂林电子科技大学实训(论文)报告用纸第9页共36页现汉字或图像的显示。在汉字模式下,主要是先将多个一定大小字体的汉字以扫描图片的方式取模,生成MIF文件供LPM_ROM使用,由
32、VGACOLOR模块传送过来的HPOS行计数器值、VPOS列计数器值及相关控制信号计算出正确的内存地址ROMADDR,再从ROM中取出所需要的像素点的三基色数据。7、图像显示控制模块IMAGEMODE图像模式跟汉字模式显示原理一样,在640480分辨率的显示器上开辟一6464的显示区域来显示图片,因为显示的图片的大小为6464。在此区域以外显示指定颜色,例如黑色、蓝色等,作为一个背景色显示。此外在本模块中,通过对ROM内存地址的控制,实现了图片的动态显示功能。汉字模式和图像模式均以图片形式嵌入,其实现思路大体一致,差别仅仅在于图像模式多了动态显示的功能,其控制相对复杂一些,以下通过一段关键代码
33、详细讲解其实现原理。ROMADDR_CONTROLCLK50M,CLK25MCLK25M,CLK100HZCLK100HZ,CLK1HZCLK1HZPIXELCNT_PORT_MAPPIXELCNTPORTMAPCLK25MCLK25M,HCNTOUTHCNT,VCNTOUTVCNTVGASIG_PORT_MAPVGASIGPORTMAPCLK25MCLK25M,HCNTHCNT,VCNTVCNT,HSYNCHS,VSYNCVS,HENABLEHEN,VENABLEVENVGAEMODE_PORT_MAPVGASMODEPORTMAPCLK25MCLK25M,CLK1HZCLK1HZ,HENH
34、EN,VENVEN,COLORS0COLORS0,COLORS1COLORS1,COLORS2COLORS2,COLORS3COLORS3,COLORSCOLORS,SWSW1DOWNTO0VGACOLOR_PORT_MAPVGACOLORPORTMAPCLK25MCLK25M,CLK100HZCLK100HZ,CLK1HZCLK1HZ,HPOSHCNT,VPOSVCNT,HPOS1HCNT,VPOS1VCNT,SWSW17DOWNTO2,BUTTONBT,COLORS0COLORS0,COLORS1COLORS1,COLORS2COLORS2,COLORS3COLORS3ENDARCH图6是
35、QUARTUSII生成的总体电路图,定义的第二层5个模块均对应生成了器件,由于HANZIMODE、IMAGEMODE、USERMODE模块是在VGACOLOR模块里进行的例化,故系统综合时将其归并在了VGACOLOR模块内。QUARTUSII生成的电路图和23节中模块设计图一致,设计是正确的。桂林电子科技大学实训(论文)报告用纸第15页共36页图6QUARTUSII生成的总体电路图243分块电路的描述本节给出分块电路的硬件描述,对关键部分进行了分析。由于代码长度较长,只给出部分代码。1、VGAMODE模块的描述定义状态机的描述如下。TYPESTATESISS0,S1,S2,S3SIGNALST
36、ATESTATESS0该模块主要描述状态机的转移,转移条件是SW1和SW2的组合值,描述如下。PROCESSCLK1HZDETECTINGSW1ANDSW0ANDDECIDETHESTATEBEGINIFRISING_EDGECLK1HZTHENCASESWISWHEN“00“STATESTATESTATESTATECOLORSTMPCOLORSTMPCOLORSTMPCOLORSTMP64088ANDHCNT48082ANDVCNT640ORVCNT480THENHENABLE0ENDIFENDIFENDPROCESS以下是列像素计数器描述。PROCESSCLK25MVERTICALCOUN
37、TERBEGINIFRISING_EDGECLK25MTHENIFHCNT6408THENIFVCNT0ENDIFENDIFENDIF桂林电子科技大学实训(论文)报告用纸第20页共36页ENDPROCESS5、CLOCK模块的描述CLOCK模块主要描述分频。25MHZ分频描述如下,从50MHZ分频到25MHZ分频只要检测上升沿即可。PROCESSCLK50MTIMEDIVISIONPROCESS25MHZBEGINIFRISING_EDGECLK50MTHENCLK25MTYLONGTHENQOUT_TEMPTXANDHCNTTXANDHCNTTY1ANDVCNTTYLONG1ANDVCNTT
38、YANDVCNTTX1ANDHCNTTXWIDE2ANDHCNT111110THENZ0IFM640WIDETHENT480LONGTHENMUSERSTATEUSERSTATEUSERSTATEHMOV30ANDHPOSVMOV30ANDVPOS0桂林电子科技大学实训(论文)报告用纸第25页共36页VCLK0ENDIFENDIFENDPROCESS下面给出US1子模式的描述。两个进程分别负责左右、上下两组边界的判断,置边界标志取反,用以控制反弹时的反向。以下只给出左右边界的判断和方向取反的描述。PROCESSCLK100HZUSERSTATEUS1BEGINBOUNCEATFOURBORDE
39、RSIFRISING_EDGECLK100HZTHENIFUSERSTATEUS1THENIFHMOVUS1610ORHMOVUS1610THENHMOVUS1450THENVMOVUS1610ORVMOVUS2450ORHMOVUS2HMOVUS2HMOVUS2VMOVUS2VMOVUS2NULLENDCASEENDIFENDIFENDIF桂林电子科技大学实训(论文)报告用纸第28页共36页ENDPROCESS最后再利用选择器对三种子模式的行列位置控制信号进行选择,完成模式的选择,同时避免多驱动问题。PROCESSCLK100HZBEGINIFRISING_EDGECLK100HZTHENC
40、ASEUSERSTATEISWHENUS0VMOVVMOVVMOVVMOVUS2HMOVHMOVUS2ENDCASEENDIFENDPROCESS25系统仿真验证系统仿真分为两个步骤进行,首先是关键模块的仿真,验证子系统功能的正确性,然后是综合仿真,验证整个系统的功能。仿真环境是QUARTUSII110。在QUARTUSII菜单的ASSIGNMENTS下的SETTINGS中依次指定各个子模块为TOPLEVELENTITY,编译后建立仿真文件,可完成各子模块的仿真。对关键模块的仿真结果和分析如下。首先是CLOCK模块的仿真,由于50M分频难以仿真,故将输入时钟CLK50M设置为50KHZ,分频得
41、到CLK25M实际为25KHZ,1HZ和100HZ分频结果不改变。如图9和图10所示。仿真结果表明分频模块满足设计要求。图9CLOCK模块仿真图(25MHZ分频)桂林电子科技大学实训(论文)报告用纸第29页共36页图10CLOCK模块仿真图(1HZ和100HZ分频)由于像素位置信息对于多个模块中的计数判断有重要作用,故进行仿真验证。如图11和图12分别为PIXELCNT模块的列像素计数和行像素计数器的仿真波形。图11PIXELCNT模块仿真图(列计数VCNT值)图12PIXELCNT模块仿真图(行计数HCNT值)从图11和图12不难看出像素计数值的变化和清零正确,符合VGA标准的定义参数要求。
42、对关键的模块进行仿真以后,进一步对系统整体进行仿真验证。首先仿真的是系统的核心状态机。图13为顶层状态机的仿真,此时直接引入枚举类型变量STATE进行仿真。仿真波形出现了未定状态。但实际下载到电路板实验时没有错误发生。初步的原因分析,主要是顶层状态机的转移是“异步”的转移,是根据SW1和SW0两个按键的四种状态直接决定当前状态的。单纯由按键直接控制下一状态和MEALY与MOORE型状态机的定义存在很大差别,其状态转移是强制的,且与当前状态无关,而仅与输入状态相关。但进一步细致的仿真让我发现了问题的根源。当引入S0、S1、S2、S3三个独立的状态仿真时,编译显示警告信息“WARNINGCANTD
43、ISPLAYSTATEMACHINESTATESREGISTERHOLDINGSTATEMACHINEBIT“|VGACONTROLLER|VGASMODEVGAEMODE_PORT_MAP|STATES0“WASSYNTHESIZEDAWAY”。得到的仿真结果如图14所示。图中显示的状态机转移正常,但由于S0被综合优化掉了,故没有显示。综合器对状态机的识别和优化可能超出了系统设计者的预期,这也是硬件设计中应该注意的问题,而且不同的综合软件可能出现不同的综合结果。桂林电子科技大学实训(论文)报告用纸第30页共36页图13顶层状态机仿真波形图图14顶层状态机仿真波形图而图15给出的底层用户模式下
44、的状态机的仿真,由于其状态转移是以按键为条件的,为典型的MEALY型状态机,故以时序逻辑实现其状态转移,状态机的行为可仿真。仿真结果说明状态机工作正常。图15用户模式USERMODE状态机的仿真仿真的重点在于控制器部分的状态仿真。对于子模块USERMODE,由于其图形是动态的,且包含了3种子模式US0、US1、US2,仿真出波形难以观察出有效信息。实际的仿真波形波形冗长,给截图带来不便,无法在本报告列出有信息量的波形图。对于动态图形的显示,关键列出像素信息的不等式,然后依据一定的条件控制图形参考坐标的移动。只要像素控制模块PIXELCNT和行列同步与消隐信号正常(实际上前述仿真已能够说明其正确
45、性),即可很容易画出动态的图形。比较好的调试方法是下载到板上通过CRT显示器直接观察,然后处理相应的问题与错误。3结果与分析31实现功能说明本毕设完成的CRT字符控制器设计,完成了毕设要求的大部分功能,并在此基础上,设计完成了图像模式和用户模式,实现了图像和三种用户子模式图形的动态显示,达到了预定的效果。桂林电子科技大学实训(论文)报告用纸第31页共36页由于顶层设计采用了有限状态机和子系统分模块描述的方法,使得控制器具有很好的扩展性。可以在不改变系统框架和模块间电路连接关系、不增加模块的情况下对图像模块IMAGEMODE、用户模块USERMODE或者颜色信号控制模块VGACOLOR进行任意的
46、有效修改,实现其他功能。事实上例如增加游戏模式,在反弹球和受控运动的基础继续增加图形和显示控制的复杂性,都是较容易实现的。限于毕业时间紧张,也因为设计的重点不在于显示图形多么复杂,没有再进一步深入设计用户子模块。另外,增加读取外部RAM存储的图像的模块,即可实现更多汉字和照片显示的功能。如果做出拥有更多逻辑资源的电路板,可以支持编写更为复杂的图形,如圆形或者是菱形等,所要做的只是给出坐标方程即可。但从系统设计的角度来讲,没有必要过多关注控制器以外的功能的实现。数字系统的设计,例如VGA显示控制器的设计,重点不在于把子系统或者子模块中的数学表达式写得有多么复杂,图形有多么绚丽,也不在于可以在子系
47、统或者子模块中实现复杂运动模式的控制。而真正的重点在于把系统层面的设计做好,把系统状态机设计完整,系统架构清晰,层次明确,稳定性好,可扩展和可移植性好,这样的系统给到用户,只要添加用户模块或者稍作修改即可完成非特定的功能。32器件资源分析在设计阶段,对系统描述采用过多种方式,尝试了多种描述,代码的长度在增加,模块在增多,但系统稳定性和可扩展性也在增强,层次结构和模块设计也更加完善。设计之初对资源使用没有多少概念,时常以软件的思想描述硬件,在描述中使用乘法等资源耗费严重的操作,也曾使用过嵌套多层的IFELSE语句,产生很长的选择器,降低了模块的可靠性,增加处理延时。随着设计的深入,加上反复求精的
48、过程磨练,逐步对硬件描述综合出的实际电路形式有了更多的理解,对延时和资源占用有了初步概念。一个显见的结论是描述代码的长度和综合后的电路形式与资源占用无必然联系。需要关注编译器在综合时如何将VHDL行为级描述转化为结构化的门级电路,才能分析清楚资源占用率和电路结构。行为级描述可能与实际综合的电路产生不一致,需要谨慎对待。图16是QUARTUSII编译工程后的综合报告。逻辑单元占用率14。桂林电子科技大学实训(论文)报告用纸第32页共36页图16QUARTUSII编译综合报告再进一步从图17进行分析,可以看出,资源占用最多的是IMAGEMODE、USERMODE子模块,这是很容易理解的,这些模块定
49、义了6464的图片和6060的正方形色块,仅正方形色块这一个定义就采用了四个与操作,每个与操作块内部又有10位的比较器,运动图形的产生运用了多处算术运算与比较,消耗的器件资源是很可观的。其余子模块占用资源数都是很少的。图17QUARTUSII编译综合后各实体占用资源详表33故障与问题分析毕设中由于仔细设计了状态机、详细划分了子模块、各模块的实现都仔细进行了描述,故没有出现太多的故障。由于以前对VHDL语言的理解停留在很低的层次,甚至和C语言等软件语言混为一谈,没有很好地理解状态机、硬件并发性、数字系统设计的方法,主要的麻烦产生在VHDL描述上。在查阅了诸多相关资料后对VHDL的语法基本熟悉,和老师交流后对状态机的设计有了更加明确的概念,参考了资料手册中关于模块的划分和实现之后对子系统的概念逐步建立。在此基础上,先后进行了三次代码的描述,从最初的类似C语言的风格到模块初步成型、状态机引入,再到最后全模块化,自顶向下设计系统,完成VHDL描述。最深的感受在于,开始时一心专注于代码的编写和语法的使用,忽视了系统设计,导致设计结果不令人满意,后来逐步采用自顶向下的设计思路,先从逻辑上把系统的功能和子系统的划分描述清楚,然后设计各个模块的接口和定义,最后分别去描述底层各个模块的功能和实现,清晰明了。这也是系统没有多少故障的主要原因。在中期检查