本次学习如何通过vga发送数字、文字、字母,

首先利用建模软件,将想要发送的数据通过数学建模转换,这里我用的软件是PCtoLCD,具体效果如下

这里可以看出,建模将数据装换成0和1,一个字母用16x8的像素点构成,然后将前景表现 为1,背景表现为0,

这样子就可以直接用fpga通过对0和1的判断,直接赋予该像素点一种颜色,这里我将字母设置为红色,背景为绿色

主要代码:

//这里我要显示我的名字myz的参数
parameter line0 = 24'h000000,
line1 = 24'h000000,
line2 = 24'h000000,
line3 = 24'h000000,
line4 = 24'h000000,
line5 = 24'h000000,
line6 = 24'h000000,
line7 = 24'hfee77e,
line8 = 24'h494244,
line9 = 24'h492408,
line10 = 24'h492410,
line11 = 24'h491810,
line12 = 24'h491822,
line13 = 24'hed107e,
line14 = 24'h001000,
line15 = 24'h006000;

reg [4:0] bit_cnt;

always @(posedge clk_25 or negedge rst)
begin
if(!rst)
bit_cnt <= 5'h1f;
else if(x_cnt == 10'd442)
bit_cnt <= 5'd23;
else if(x_cnt > 10'd442 && x_cnt < 10'd446)
bit_cnt <= bit_cnt - 1'b1;
end

reg [7:0]vga_rgb;

always @(posedge clk_25)
begin
if(!valid)
vga_rgb <= 8'd0;
else if(x_cnt > 10'd442 && x_cnt < 10'd467)begin
case(y)
10'd231: if(line0[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_11100; //绿色
10'd232: if(line1[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd233: if(line2[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd234: if(line3[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd235: if(line4[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd236: if(line5[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd237: if(line6[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd238: if(line7[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd239: if(line8[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd240: if(line9[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd241: if(line10[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd242: if(line11[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd243: if(line12[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd244: if(line13[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd245: if(line14[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
10'd246: if(line15[bit_cnt]) vga_rgb <= 8'b111_000_00; //红色
else vga_rgb <= 8'b000_111_00; //绿色
default: vga_rgb <= 8'h00;
endcase
end
else
vga_rgb <= 8'h00;
end

基于fpga的vga学习(3)的更多相关文章

  1. 基于fpga的vga学习(2)

    本次学习主要向配合basys2实行. 上次学习vga的rgb三个output都是1位的,但是我看了basys2的rgb分别是332位,这里让我卡顿了很久, 之后通过查资料才知道,rgb的不同大小表示的 ...

  2. 基于fpga的vga学习(1)

    这次学习我主要掌握了vga的基本运行原理. vga基本概念: VGA时序主要包括两条信号线(HS,VS)的输出——行扫描和场扫描.VGA采用逐行扫描,每个像素对应的点扫描.行与行之间存在消隐以及显示时 ...

  3. 基于FPGA的VGA显示设计(二)

    上一篇:基于FPGA的VGA显示设计(一)     参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码  的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层 ...

  4. 基于FPGA的VGA可移植模块终极设计【转】

    本文转载自:http://www.cnblogs.com/lueguo/p/3373643.html 略过天涯   基于FPGA的VGA可移植模块终极设计 一.VGA的诱惑 首先,VGA的驱动,这事, ...

  5. 基于FPGA的VGA显示实验设计

    基于FPGA的VGA显示实验设计 成果展示(优酷视频): 视频: 基于FPGA的VGA显示技术(手机控制) http://v.youku.com/v_show/id_XNjk4ODE3ODUy.htm ...

  6. 基于FPGA的VGA显示静态图片

    终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...

  7. [置顶] 基于FPGA的VGA简易显存设计&NIOS ii软核接入

    项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...

  8. 基于FPGA驱动VGA显示图片的小问题

    学习VGA显示图片的过程中,遇到了一个小问题,我在显示屏上开了一个60x60的框,放了一张图片进去显示,但是最终的结果如下图所示. 出现了一个竖黑边,看了看代码,分析了一下逻辑没问题,然而看这个显示那 ...

  9. 基于FPGA的VGA显示设计(一)

    前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...

随机推荐

  1. Mysql数据存在更新,不存在则插入的实现

    有些情况下,我们需要对数据库进行插入或更新操作的时候需要先根据特定的字段去判断是否已存在,然后做出不同的插入或者跟新操作. replace函数: 我们要在需要判断的字段上建立一个唯一索引,且这个字段不 ...

  2. 关于Collections.sort()排序方法的源码探索

    /**下面在自己代码中使用Collections.sort()方法去比较Student对象,通过在自己写的类里面通过匿名内部类实现Comparator接口,这个接口是让你自己实现比较器的规则*/ // ...

  3. Ganglia监控扩展实现机制

    Ganglia监控扩展实现机制 默认安装完成的Ganglia仅向我们提供基础的系统监控信息,通过Ganglia插件可以实现两种扩展Ganglia监控功能的方法.1.添加带内(in-band)插件,主要 ...

  4. python--第十六天总结(bootstrap)

    一. 实现原理 网格布局是通过容器的大小,平均分为12份(可以修改),再调整内外边距,和表格布局有点类似但是也存在区别. 实现步骤如下: (1) 数据行.row 必须包含在容器.container 中 ...

  5. hibernate多生成一个外键以及映射文件中含有<list-index>标签

    (原文地址: http://blog.csdn.net/xiaoxian8023/article/details/15380529) 一.Inverse是hibernate双向关系中的基本概念.inv ...

  6. 2019-04(1)(Python学习)

    9.1 迭代器 创建迭代器的3种方法: 方法一: 容器对象添加 __iter__() 和 __next__() 方法(Python 2.7 中是 next()):__iter__() 返回迭代器对象本 ...

  7. LinkedStack

    public class LinkedStack<T> { private static class Node<U>{ U item; Node<U>next; N ...

  8. mysql5.7.21安装要点记录

    下载的是Zip解压缩版,Windows系统,因为很久没有在Windows上安装过,这次安装发现了几处和以前安装不一样的地方,特记录如下,供大家参考 MySQL配置文件位置 bin目录下的mysql_c ...

  9. Unity3D 物体移动方法总结

    1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在 ...

  10. CentOS查询端口占用和清除端口占用的程序

    1.查询端口号占用,根据端口查看进程信息 [root@server2 ~]# lsof -i: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd ...