• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

LCD显示屏通过VGA显示字符设计Verilog代码Quartus AX301开发板

10/12 10:58
846
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24111219395E95.docx

共1个文件

名称:LCD显示屏通过VGA显示字符设计Verilog代码Quartus  AX301开发板

软件:Quartus

语言:Verilog

代码功能:

实验通过字符转换工具将字符转换为 8 进制 mif 文件存放到单端口的 ROM IP 核中,再从 ROM 中把转换后的数据读取出来显示到 VGA 上。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:

AX301开发板.png

设计文档:

字符显示实验

1 实验简介

在上一个实验中讲解了 VGA 显示原理和显示方式,本实验介绍如何使用 FPGA 实现字符显示,通过这个实验更加深入的了解 VGA 的显示方式。

2 实验原理

实验通过字符转换工具将字符转换为 8 进制 mif 文件存放到单端口的 ROM IP 核中,再从ROM 中把转换后的数据读取出来显示到 VGA 上。

3 程序设计

针对 VGA 的时序,行同步和场同步各使用一个计数器,行同步计数器用于产生行同步,行有效像素,场同步计数器用于产生场同步,场有效像素。

在“timing_gen_xy”模块是根据 VGA 时序标准定义了“x_cnt”和“y_cnt”两个计数器并由这两个计数器产生了 VGA 显示的“x”坐标和“y”坐标。程序中用“vs_edge”和“de_falling”分别表示场同步开始信号和数据有效结束信号。

其原理如下图所示:

信号名称

方向

说明

rst_n

in

异步复位输入,低复位

clk

in

外部时钟输入

i_hs

in

行同步信号

i_vs

in

场同步信号

i_de

in

数据有效信号

i_data

in

color_bar 数据

o_hs

out

输出行同步信号

o_vs

out

输出场同步信号

o_de

out

输出数据有效信号

o_data

out

输出数据

x

out

生成 X 坐标

y

out

生成 Y 坐标

timing_gen_xy 模块端口

“osd_display”模块是用来读取存储在 Rom ip 核里转换后的字符信息,并在指定区域显示。 首先需要生成能够被 FPGA 识别的 mif 文件。

1.在软件工具及驱动文件夹下找到“FPGA 字模提取”工具。

2.双击.exe 文件打开工具

3.在提取工具的“字符输入”框中输入需要显示的字符,字体和字符高度可以自定义选择。

设置完成后点击“转换”按钮,在界面左下角可以看到转换后的字符点阵大小,点阵的 宽和高在程序中是需要用到的

4.点击“保存”按钮,将文件保存到本例程源文件目录下,需要注意的是在保存类型下应 该选择 Altera(*.mif),点击“保存”按钮。

5.回到字符提取工具界面出现如下对话框表示保存完成,点击确定,退出即可

回到“osd_display”模块程序中,根据字符点阵的宽和高设定了字符的显示大小,可以通过

“timing_gen_xy”模块生成的 X 坐标和 Y 坐标将字符显示在显示屏的任意位置:

always@(posedge pclk) begin

if(pos_y >= 12'd9 && pos_y <= d9="" osd_hegiht="" -="" d1="" pos_x="">= 12'd9 && pos_x <= 12'd9 +

OSD_WIDTH - 12'd1)

region_active <= 1'b1;

region_active <= 1'b0;

end

另外,在前面已经介绍将字符转换后是成点阵的方式存储到 Rom IP 核里,找到生成的 mif 文 件打开后可以看到如下:

转换后的字符已经成了 8bit 的数值文件,所以在从 Rom IP 核中读取 mif 文件时设置如下:

always@(posedge pclk) begin

if(region_active_d0 == 1'b1)

if(q[osd_x[2:0]] == 1'b1)

v_data <= 24'hff0000;

else

v_data <= pos_data;

v_data <= pos_data;

end

调用单端口 Rom IP 核的过程和调用其他 IP 核一样,打开“IP Catalog”找到单端口 ROM:

部分代码展示:

//////////////////////////////////////////////////////////////////////////////////
//  ov5640 lcd display                                                          //
//                                                                              //
//  Author: meisq                                                               //
//          msq@qq.com                                                          //
//          ALINX(shanghai) Technology Co.,Ltd                                  //
//          heijin                                                              //
//     WEB: http://www.alinx.cn/                                                //
//     BBS: http://www.heijin.org/                                              //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd                        //
//                    All rights reserved                                       //
//                                                                              //
// This source file may be used and distributed without restriction provided    //
// that this copyright statement is not removed from the file and that any      //
// derivative work contains the original copyright notice and the associated    //
// disclaimer.                                                                  //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//================================================================================
//   Description:  pwm model
//   pwm out period = frequency(pwm_out) * (2 ** N) / frequency(clk);
//
//================================================================================
//  Revision History:
//  Date          By            Revision    Change Description
//--------------------------------------------------------------------------------
//  2017/5/3     meisq          1.0         Original

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1353

  • 2-24111219395E95.docx
    下载

相关推荐