基于FPGA的VGA图像显示

合集下载

基于FPGA的VGA图形显示

基于FPGA的VGA图形显示

电子信息工程专业综合设计(报告)(课程设计)题目基于FPGA的VGA图形显示二级学院电气与电子工程学院专业电子信息工程班级学生学号同组指导教师时间基于FPGA的VGA图形显示摘要:本次的题目是基于FPGA的VGA图形显示,实现VGA图像显示与控制。

本文介绍的主要容围绕着显示特定图片,且图片可受控制的相关原理与方法展开。

根据VGA显示原理,利用VHDL 作为逻辑描述手段,设计了一种基于现场可编程器件FPGA的VGA接口控制器。

实现VGA图像显示控制器是通过Altera公司的QuartusII软件环境下对VGA模块的设计和顶层逻辑框图设计。

FPGA的嵌入式系统中能代替VGA的专用显示芯片,节约硬件成本,节省计算机处理时间,加快数据处理速度并具有显示面积大,色彩丰富、承载信息量大、接口简单等优点。

除此以外FPGA 芯片和EDA设计方法的使用,可根据用户的需求,为设计提供了有针对性的VGA显示控制器,可不需要依靠计算机,它可以大大降低成本,并可以满足生产实践中不断改变的需要。

关键字:FPGA VGA 图像控制器一、前言本次课程设计主要是通过Altera公司的QuartusII软件环境下对VGA模块的设计和顶层逻辑框图设计。

VGA是IBM于1987年提出的一个使用模拟信号的电脑显示标准。

在性能上,VGA 将16色模式的分辨率提高到了640×480,同时VGA新提供了一种具有320×200分辨率、256种颜色的图形模式,且所显示的每一种颜色都可从262144(18位)种颜色中选择,VGA的这种色彩显示能力对微机图形/图象软件的发展起到了很大的促进作用先后分别经历了EGA, EGA, VGA, SVGA, XGA, SXGA, UXGA, QXGA, WQXGA, QSXGA, WQSXGA, QUXGA, WQUXGA, 1080P。

目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R,G,B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。

基于FPGA的VGA彩色图片的显示现场可编程门阵列

基于FPGA的VGA彩色图片的显示现场可编程门阵列

论文摘要:本论文依据VGA接口原理采用了Verilog HDL语言对Altera的Cyclone系列的FPGA进行了设计,通过MATLAB 二值化得到图片颜色的数据,将得到的数据存储到ROM中,然后读取ROM中的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。

此方案可以广泛应用于各种仪器,数字视频系统、高分辨率的彩色图片图像处理、视频信号再现等。

论文关键词:现场可编程门阵列,图像控制器,只读存储引言VGA接口显示器是计算机系统以及智能仪器中重要的显示终端设备。

标准的VGA接口需要提供以下几组基本的信号:行同步信号Hsync场同步信号Vsync以及红黄蓝3路模拟信号。

因此要使数字图像信息在VGA接口显示器正确、完整地显示,就涉及到了时序的构建和数字图像信息的模拟化两方面。

如果接口前端无可供利用的时序信息,那么就可参照有关标准来构造时序,这可利用可编程器件很方便地实现;另外由于VGA是一个模拟的接口标准,因此数字图像信息模拟化可用视频DA转换器来实现。

VGA标准是当前最常用的视频显示标准,还包括SVGA、XVGA等子标准。

本文主要以640×480,60Hz下VGA显示标准为例,实现一个满足多方面需求的VGA显示终端接口。

设计可应用于图像处理、视频信号再现、数据可视化分析等方面,实现方法和器件的选取以及设计应用列举都具有典型的代表意义。

理论分析VGA显示接口的硬件设计和原理(1)基本原理说明这次系统设计使用的显示器是满足VGA标准的常用的彩色显示器,由CRT(阴极射线管)构成,彩色由G、R、B(绿:Green,红:Red,蓝:Blue)三基色组成。

显示则用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB三基色,合成一个彩色像素。

硬件选用了AnalogDevice公司的ADV7123。

ADV7123由三个10位高速DAC 组成,最高时钟速率为240MHZ,即可以达到最高240MS/s的数据吞吐率。

基于FPGA的VGA显示详解(附VHDL代码)

基于FPGA的VGA显示详解(附VHDL代码)

基于FPGA的VGA显示(后附VHDL代码)整个VGA的时序操作很简单,就是形成一个具有一定占空比的电平周期。

只是整个VGA的操作涉及到一些专有名词,理解上比较困难,一旦明白了这些是什么意思后,操作即将变得很简单。

VGA工作流程:常见的彩色显示器,一般由CRT (阴极射线管)构成,彩色是由R、G、B(红、绿、蓝)三基色组成,CRT用逐行扫描或隔行扫描的方式实现图像显示,由VGA控制模块产生的水平同步信号和垂直同步信号控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。

扫描从屏幕的左上方开始,由左至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起始位置,在回扫期间,CRT对电子束进行消隐,每行结束是用行同步信号HS进行行同步;扫描完所有行,再由场同步信号VS进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。

行同步信号HS 和场同步信号VS是两个重要的信号。

注意点:什么时候消隐?为什么要消隐?当一行扫描完毕后然后电子枪又转到下一行的这段时间或是扫描完所有的行后电子枪回到第一行的这段时间,这两段时间都要消隐。

在消隐的时间内,数据是无效的。

这样就保证电子枪的回扫的个动作不干扰显示,因为回扫这个动作是很频繁的,若在这个时间段内数据有效,那么就回在显示屏上出现电子枪回扫的轨迹。

消隐的时候我们干什么?消隐这个动作是显示屏(CRT)执行的,我们在编程时只要注意有这么个东西就行。

同步信号(包括HS和VS)是什么?这个就相当于一个数据起始信号,表明数据马上就要开始了。

如果撇开具体的设备,那么这个信号和AD、DA中常用的Sync(同步)、CS(片选)信号相当。

该信号一般为负电平,但对于有的显示器可不关心该信号的极性,因为它内部可自动转换正负逻辑。

对于普通的VGA显示器,需要引出5个信号:R,G,B:三原色;HS:行同步信号;VS:场同步信。

华科基于FPGA的VGA显示实验

华科基于FPGA的VGA显示实验

电子线路测试与实验报告基于FPGA的VGA显示实验姓名:专业班级:光电1208学号:U2012一、实验要求功能要求:利用Basys2实验板实现图片在VGA接口显示器上的显示。

基本要求:1)实现240*160以上像素的图片在VGA接口显示器上的显示;2)利用算法实现特定图片在VGA接口显示器上的放大、缩小旋转及其他动作的自动变换。

二、实验具体目标1.首先实现特定图片在显示器上的显示;2.图片自动旋转90度;3.实现图片的放大与缩小,同样通过一个按键实现;4.添加复位键,按下复位键后图片返回最初的状态。

三、实验原理1.VGA的显示原理在基于FPGA的VGA控制中,只需考虑行同步信号(HS),场同步信号(VS),以及红绿蓝三基色(R、G、B)这五个信号,即可实现对VGA显示的控制。

2.对图片的旋转与缩放操作对图片的旋转操作在本质上是对IP核ROM的输入地址addr进行变换的过程。

在这里,假定显示的坐标分别为x_vdn以及y_vdn,由于图片是160*40的,在正常的显示时,addr 与x_vdn以及y_vdn的对应关系应该为:addr=x_vdn+y_vdn*160即依次取像素点,图片正常显示。

要把图片顺时针旋转90度,那么相当于显示的图片是40*160的,重新考虑addr与两个坐标之间映射关系。

容易得到,此时:addr=(39-x_vdn)*160+y_vd对图片的缩放操作对图片的缩放操作则只考虑以下两种变化,即放大一倍,此时图片的大小为320*80;缩小一倍,此时图片的大小为80*20。

对于图片的放大一倍,则要考虑不同的像素点对显示信号的共用(在这里即为m信号)。

由通常的规则,按照顺序,构成一个正方形的每四个相邻的像素点共用一个m信号。

同时,在这里对x_vdn以及y_vdn的最后一位判断,并且形成不同的映射规则。

具体的映射规则在源代码中给出。

对于图片的缩小,则相对简单的多。

此时的映射关系为:addr=y_vdn*320+x_vdn*2;3.工程结构与解读如图,下图为系统的结构框图。

基于FPGA的VGA显示控制器设计 (2)

基于FPGA的VGA显示控制器设计 (2)

页眉内容课程设计开课学期:第六学期课程名称:FPGA课程设计学院:专业:班级:学号:姓名:任课教师:2015 年7 月20日基于FPGA的VGA显示控制器设计一、设计方案1.设计的主要内容此设计要求实现某一分辨率下(如640*480@60Hz)的VGA显示驱动,能简单显示彩条和图像等。

能够熟悉VGA接口协议、工作时序及VGA工作原理,并计算出合适的时序,对原始时钟进行分频处理以获取符合时序要求的各率,此外须要显示的图像等可存储于外部存储器,运行时,从外部存储器读取显示数据。

将图像控制模块分为这样几部分;二分频电路、地址发生器、VGA时序控制模块、图像数据存储器读出模块.如图1-1所示:图1-1VGA显示控制系统框图2.设计原理显示控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。

利用VHDL硬件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层VGA显示控制器的模块实体仿真综合得以顺利通过。

其中二分频把50MHZ实在频率分成25Mhz并提供给其它模块作为时钟;VGA时序控制模块用于产生640X480显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号HS和垂直同步时序信号VS的值;存储器读出模块提供给SRAM地址并按地址读出八位数据(灰度值Y),然后得到R、G、B的值(若Y>中间值,则R=G=B=1;否则R=G=B=0),并把R、G、B的值通过VGA接口传送给VRT显示器[9]。

地址发生器接收所要显示的数据读取控制信号,产生与图像数据ROM模块对应得地址,根据VGA显示的像素分布,确定读取对应数据的地址,由于所显示的图形每行需256个像素,而ROM 中每个地址存储的数据时64位,故每4个地址取出的数据用于一行的显示。

VGA显示控制模块:主要分为时序信号和数据颜色的控制,imgrom模块即图像数据ROM模块,在这一模块中需要解决的是图像数据BMP位图文件的来源及转换成HEX文件,利用Image2lcd 对本次设计图片处理得到BMP文件,最终在QuartusII得到HEX文件,在已设置LPM_ROM 进行加载图像数据。

基于FPGA实现VGA的彩色图片显示

基于FPGA实现VGA的彩色图片显示

基于FPGA实现VGA的彩色图片显示
0 引言
视频图形阵列显示接口是微机系统使用的一种通用显示接口,广泛应用于智能控制系统中,作为系统的显示终端。

对于由嵌入式微处理器构成的
图像处理系统来说,采用VGA显示输出具有兼容性强、显示内容丰富的优势。

同时,VGA显示接口具有结构简单、性能可靠、兼容性强、时序容易控
制的特点。

因此,结合FPGA的VGA图像控制器在嵌入式的图像处理系统中有广泛的应用前景。

目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转
变为R、G、B三原色信号和行场同步信号,信号通过电缆传输到显示设备中。

1 VGA显示
常见的VGA接口的彩色显示器,一般由cRT(阴极射线管)构成,
色彩由R、G、B(红:Red,绿:Green,蓝:Blue三基色组成。

显示采用逐。

华科 基于FPGA的VGA显示实验

华科 基于FPGA的VGA显示实验

电子线路测试与实验报告基于FPGA的VGA显示实验姓名:专业班级:光电1208学号:U2012一、实验要求功能要求:利用Basys2实验板实现图片在VGA接口显示器上的显示。

基本要求:1)实现240*160以上像素的图片在VGA接口显示器上的显示;2)利用算法实现特定图片在VGA接口显示器上的放大、缩小旋转及其他动作的自动变换。

二、实验具体目标1.首先实现特定图片在显示器上的显示;2.图片自动旋转90度;3.实现图片的放大与缩小,同样通过一个按键实现;4.添加复位键,按下复位键后图片返回最初的状态。

三、实验原理1.VGA的显示原理在基于FPGA的VGA控制中,只需考虑行同步信号(HS),场同步信号(VS),以及红绿蓝三基色(R、G、B)这五个信号,即可实现对VGA显示的控制。

2.对图片的旋转与缩放操作对图片的旋转操作在本质上是对IP核ROM的输入地址addr进行变换的过程。

在这里,假定显示的坐标分别为x_vdn以及y_vdn,由于图片是160*40的,在正常的显示时,addr与x_vdn以及y_vdn的对应关系应该为:addr=x_vdn+y_vdn*160即依次取像素点,图片正常显示。

要把图片顺时针旋转90度,那么相当于显示的图片是40*160的,重新考虑addr与两个坐标之间映射关系。

容易得到,此时:addr=(39-x_vdn)*160+y_vd对图片的缩放操作对图片的缩放操作则只考虑以下两种变化,即放大一倍,此时图片的大小为320*80;缩小一倍,此时图片的大小为80*20。

对于图片的放大一倍,则要考虑不同的像素点对显示信号的共用(在这里即为m信号)。

由通常的规则,按照顺序,构成一个正方形的每四个相邻的像素点共用一个m信号。

同时,在这里对x_vdn以及y_vdn的最后一位判断,并且形成不同的映射规则。

具体的映射规则在源代码中给出。

对于图片的缩小,则相对简单的多。

此时的映射关系为:addr=y_vdn*320+x_vdn*2;3.工程结构与解读如图,下图为系统的结构框图。

基于FPGA的VGA图像显示系统的设计

基于FPGA的VGA图像显示系统的设计

基于FPGA的VGA图像显示系统的设计杜宗展;王振河;冯迎春【期刊名称】《现代电子技术》【年(卷),期】2015(38)16【摘要】As a standard display interface,VGA(video graphics array)has been widely used. According to the principles of VGA and FPGA(field programmable gate array),the designed VGA interface based on FPGA can send the data to the dis-play directly,and grayscale of the output image was added to this design. Compared to the traditional design,there is no com-puter processing procedure in the design,which can save the expense of hardware and enhance the speed of data processing. It is widely used to the domain of video display.%VGA(视频图形阵列)是一种标准的显示接口,被广泛应用.根据VGA,FPGA(现场可编程门阵列)的作用原理,设计的基于FPGA的VGA 接口可以直接将数据送至显示器,同时增添了关于输出图像灰度等级的设计.与传统设计相比,该设计没有计算机的处理过程,可节省硬件成本,加快数据处理速度,被广泛应用到视频显示领域.【总页数】5页(P95-99)【作者】杜宗展;王振河;冯迎春【作者单位】山东大学电气工程学院,山东济南 250061;山东电力集团公司检修公司,山东济南 250061;山东电力集团公司检修公司,山东济南 250061【正文语种】中文【中图分类】TN919-34;TP391.8【相关文献】1.基于FPGA的VGA图像显示系统的设计与实现 [J], 周卓然;徐道连;吕凤飞;付少华2.基于FPGA的VGA图像显示控制的设计和实现 [J], 李云;刘桂华3.基于FPGA的VGA图像显示及控制系统的设计与实现 [J], 李营;吕兆承;陈帅;权循忠4.基于FPGA的VGA图像显示设计 [J], 桂淮濛5.基于FPGA的UART控制VGA图像显示器设计 [J], 李营; 范静静; 权循忠; 吕兆承; 陈帅因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的VGA图像显示1、VGA显示原理VGA标准是一种计算机显示标准,最初是由IBM公司在1987 年提出的,分辨率是640*480。

VGA 接口也叫做D_Sub 接口,是显卡上输出模拟信号的接口。

目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的D/A 转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。

常见的彩色显示器一般由阴极射线管(CRT) 构成,彩色由GRB(Green Red Blue) 基色组成。

显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB 基色,合成一个彩色像素。

扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。

要实现VGA显示就要解决数据来源、数据存储、时序实现等问题,其中关键还是如何实现VGA时序。

VGA的标准参考显示时序如图1所示。

行时序和帧时序都需要产生同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d)四个部分。

2、方案设计由VGA的显示原理可知,该任务的关键是VGA时序控制部分和汉字图形显示部分:(1)VGA时序控制部分,采用FPGA本地50MHz时钟,根据所需时序要求,经Verilog语言编写的计数模块分频而得到,该部分十分重要,如果产生的时序有偏差,那么就会使汉字图形无法显示或显示结果混乱;(2)汉字图形显示部分,有2种方法可以实现:第1 种是在对像素进行行计数、场计数的时候,就把字库信息直接赋值给颜色信号R、G、B,这种方法虽然简单,但是控制很不灵活,需要对汉字的显示像素一一判定对应的位置,容易出现错误,不易修改,所以本次采用的是第2 种方法,第2 种方法是使用FPGA内部的一种资源来存储汉字的字库信息,然后由程序将其提取出来作为显示信号发送到VGA 接口,以实现汉字图形的显示,这样就克服了第一种方法易出错又不易修改的缺点。

在FPGA 中可以作为存储器件的资源主要有块RAM,本次任务就采用块RAM 来存储汉字图形的信息。

块RAM 是FPGA 内部的一种专用的资源,多数是分布在FPGA 边缘,因此叫做块RAM。

目前大多数的FPGA 都有内嵌的块RAM。

块RAM 是一种可同步配置的块,它的使用大大扩展了FPGA 的应用范围和灵活性。

FPGA 内嵌的块RAM 一般可以灵活的配置成单口RAM(single port RAM,SPRAM)、双口RAM (double port RAM,DPRAM)、内容寻址存储器(content addressable memory,CAM)以及先进先出存储器(first in first out,FIFO)等常用的存储结构。

3、VGA显示控制器“VGA显示控制器”接收时序控制信号、行列控制信号,根据显示内容需要产生相应的ROM 数据读取控制信号,发送给ROM地址发生器,用于产生相应的地址数据,并将收到的R、G、B分量的串行数据发送给对应的VGA引脚,用于汉字图形的显示,同时还可以控制显示图形的颜色(共8种)。

4、ROM地址发生器“ROM地址发生器”接收所要显示的数据读取控制信号,产生对应得ROM地址,根据VGA 显示的像素分布,确定读取对应数据的地址,由于所显示的图形每行需256个像素,而ROM 中每个地址存储的数据时64位,故每4个地址取出的数据用于一行的显示。

5、ROM存储器“ROM存储器”为FPGA内部块RAM配置成的单端口ROM,用于存储汉字图形的字模数据,根据ROM地址将相应的显示内容的数据传送给数据并串转换模块。

为了便于控制显示图形和容易编程,现制定显示区域为512行256列,每列为1bit,共为数据为512x256=131072bit,因此ROM的设定应该是:设定WORD为64bit ,则深度为:131072/64=2048=2^12,所以ROM的地址线为12根,建立的ROM与.mif文件。

6、数据并串转换模块因为从ROM中直接读出的数据是64bit的,而用于每一个像素显示的数据需要1bit的串行输出,因此需加入该模块进行将64位的显示数据转换成R、G、B三个分量各自对应的数据串行输出到VGA显示控制器,用于图像的实际显示。

实验程序如下:(此程序运行需要设置ROM,并要生成.mif文件)如有问题可联系QQ:472373532module VGA_DIS(clk,rst,hsync,vsync,r,g,b,ROM_DATA,ROM_ADDR);input clk; //50M时钟input rst; //复位信号output hsync;//行同步信号output vsync;//场同步信号output [10:0] ROM_ADDR;input[63:0] ROM_DATA;//三原色接口信号output r;output g;output b;reg[10:0] x;//行坐标reg[10:0] y;//列坐标always @(posedge clk or negedge rst)beginif(!rst)x<=10'd0;else if(x==11'd1056)x<=10'd0;elsex<=x+1'b1;endalways @(posedge clk or negedge rst)beginif(!rst)y<=10'd0;else if(y==11'd628)y<=10'd0;else if (x==11'd1056)y<=y+1'b1;endwire valid;assign valid = (x>11'd216)&&(x<11'd1016)&&(y>11'd27)&&(y<11'd627); wire [10:0]x_valid,y_valid;assign x_valid=x-11'd216;assign y_valid=y-11'd27;reg hsync_r,vsync_r;always@(posedge clk or negedge rst)if(!rst)beginhsync_r<=1'b0;vsync_r<=1'b0;endelsebeginhsync_r<=(x<=10'd160);vsync_r<=(y<=10'd5);endassign hsync=hsync_r;//行同步信号assign vsync=vsync_r;//场同步信号//--------------------------------------------------// VGA色彩信号产生reg[7:0] m;reg[3:0] X=4'd1 ;//这里X,Y定义了汉字显示的坐标reg[3:0] Y=4'd0;reg flag;//设置标志位用来使不显示汉字以外为通一背景色reg flag1;reg [3:0] temp;wire [3:0] temp1;always @(posedge clk or negedge rst)if(!rst)m<=8'd0;else if(valid&&(x_valid-256*X)<=256&&(x_valid-256*X)>=0)//列变量 beginflag<=1'b1;m<=x_valid[7:0];temp<=m/64;endelse// m<=6'd0;flag<=1'b0;reg[8:0] n;always @(posedge clk or negedge rst)if(!rst)n<=9'd0;else if(valid&&(y_valid-512*Y)<=512&&(y_valid-512*Y)>=0)//行变量beginn<=y_valid[8:0];flag1<=1'b1;endelse// n<=6'd0;flag1<=1'b0;assign temp1=m/64;assign ROM_ADDR=4*n+temp1;assign r=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0; assign g=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0; assign b=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0;//assign r=valid ?d_rec :1'b0;//assign g=valid ?~(u_rec |d_rec) : 1'b0;//assign b=valid ? u_rec : 1'b0;endmoduleQQ:472373532module VGA_DIS(clk,rst,hsync,vsync,r,g,b,ROM_DATA,ROM_ADDR); input clk; //50M时钟input rst; //复位信号output hsync;//行同步信号output vsync;//场同步信号output [10:0] ROM_ADDR;input[63:0] ROM_DATA;//三原色接口信号output r;output g;output b;reg[10:0] x;//行坐标reg[10:0] y;//列坐标always @(posedge clk or negedge rst)beginif(!rst)x<=10'd0;else if(x==11'd1056)x<=10'd0;elsex<=x+1'b1;endalways @(posedge clk or negedge rst)beginif(!rst)y<=10'd0;else if(y==11'd628)y<=10'd0;else if (x==11'd1056)y<=y+1'b1;endwire valid;assign valid = (x>11'd216)&&(x<11'd1016)&&(y>11'd27)&&(y<11'd627); wire [10:0]x_valid,y_valid;assign x_valid=x-11'd216;assign y_valid=y-11'd27;reg hsync_r,vsync_r;always@(posedge clk or negedge rst)if(!rst)beginhsync_r<=1'b0;vsync_r<=1'b0;endelsebeginhsync_r<=(x<=10'd160);vsync_r<=(y<=10'd5);endassign hsync=hsync_r;//行同步信号assign vsync=vsync_r;//场同步信号//--------------------------------------------------// VGA色彩信号产生reg[7:0] m;reg[3:0] X=4'd1 ;//这里X,Y定义了汉字显示的坐标reg[3:0] Y=4'd0;reg flag;//设置标志位用来使不显示汉字以外为通一背景色reg flag1;reg [3:0] temp;wire [3:0] temp1;always @(posedge clk or negedge rst)if(!rst)m<=8'd0;else if(valid&&(x_valid-256*X)<=256&&(x_valid-256*X)>=0)//列变量beginflag<=1'b1;m<=x_valid[7:0];temp<=m/64;endelse// m<=6'd0;flag<=1'b0;reg[8:0] n;always @(posedge clk or negedge rst)if(!rst)n<=9'd0;else if(valid&&(y_valid-512*Y)<=512&&(y_valid-512*Y)>=0)//行变量beginn<=y_valid[8:0];flag1<=1'b1;endelse// n<=6'd0;flag1<=1'b0;assign temp1=m/64;assign ROM_ADDR=4*n+temp1;assign r=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0; assign g=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0; assign b=valid ? ~ROM_DATA[6'd63-(m-64*temp1)]&&flag&&flag1 : 1'b0;//assign r=valid ?d_rec :1'b0;//assign g=valid ?~(u_rec |d_rec) : 1'b0;//assign b=valid ? u_rec : 1'b0;endmodule。

相关文档
最新文档