//必须在有效区域下显示颜色才有颜色

显示字符可以在设定一个有效区域内显示

另加两个wire 求出新的x,y
module vga_fpga(
 clk,rst_n,
 vga_b,vga_g,vga_r,rom_data,rom_addr,
 VGA_HS,VGA_VS,
 VGA_BLANK_N,VGA_SYNC_N,VGA_CLK
);
input   clk,rst_n;
output  [4:0]  rom_addr;
output  [127:0]rom_data;
output  [7:0]  vga_b;
output  [7:0]  vga_g;
output  [7:0]  vga_r;
output         VGA_BLANK_N ;
output         VGA_HS;
output         VGA_SYNC_N;
output         VGA_VS;
output         VGA_CLK;
/*********************************/
//扫描x,y;
reg [10:0] count_x;//计数列
reg [10:0] count_y;//计数行
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  count_x <= 1'd0;
 else if(count_x == 11'd1056)
  count_x <= 1'd0;
 else
  count_x <= count_x + 1'b1;
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  count_y <= 1'd0;
 else if(count_y == 11'd625)
  count_y <= 1'd0;
 else if(count_x == 11'd1056)
  count_y <= count_y +1'd1;
 else 
  count_y <= count_y;
  
/************************************/
//行列同步
assign VGA_VS       = (count_y <= 11'd3) ? 1'b0 : 1'b1;
assign VGA_HS       = (count_x <= 11'd80)? 1'b0 : 1'b1;
assign VGA_SYNC_N   = (count_y <= 11'd3) ? 1'b0 : 1'b1;
assign VGA_BLANK_N  = (count_x <= 11'd80)? 1'b0 : 1'b1;
/**************************************/
//是否行列有效
reg isready;
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  isready <= 1'b0;
 else if((count_x > 11'd240 && count_x < 11'd1040)&&(count_y > 11'd24 && count_y < 11'd624))
  isready <= 1'b1;
 else
  isready <= 1'b0;
/************************************/
//x,y坐标
wire [10:0]loca_x;
wire [10:0]loca_y;
assign loca_x = isready ? count_x-11'd240 : 11'd0;
assign loca_y = isready ? count_y-11'd24  : 11'd0;
/*****************************************/
//显示 从第一百行 第一百列开始
//在小矩形框内显示
reg isvalid;
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  isvalid <= 1'b0;
 else if((loca_x > 7'd99 && loca_x < 8'd228)&&(loca_y > 7'd99 && loca_y < 8'd132))
  isvalid <= 1'b1;
 else isvalid <= 1'b0;
wire [7:0] valid_x;
wire [7:0] valid_y;
assign valid_x = isvalid ? loca_x - 8'd100 :1'd0;
assign valid_y = isvalid ? loca_y - 8'd100 :1'd0;
/*****************************************/
reg [5:0] l;//行
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  l <= 1'd0;
 else if(isready && (valid_y < 7'd32))
  l <= valid_y;
// else
 // l <= 1'd0;
reg [7:0] h;
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  h <= 1'd0;
 else if(isready && (valid_x < 8'd128))
  h <= valid_x;
 //else
 // h <= 1'd0;
//显示颜色
reg [23:0] vga_s;
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  vga_s <= 24'd0;
 else if( rom_data[7'd127 - h] && isvalid)
  vga_s <= 24'hfffafa;  //baise
 else if(!rom_data[7'd127 - h] && isvalid)
  vga_s <= 24'h008b00;  //绿
 else
  vga_s <= 24'hffec8b;//huang
  
/**********************************************/

vga_rom (
 .address (rom_addr ),
 .clock ( clk ),
 .q ( rom_data )
 );

assign  rom_addr     = l;
assign  VGA_CLK  = clk;
assign  vga_b        = isready ?  vga_s[7:0]  :8'd0;
assign  vga_g        = isready ?  vga_s[15:8] :8'd0;
assign  vga_r        = isready ?  vga_s[23:16]:8'd0;
endmodule

fpga之显示字符串的更多相关文章

  1. 强化学习实战 | 自定义gym环境之显示字符串

    如果想用强化学习去实现扫雷.2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来.上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过 ...

  2. x8086汇编在显存中显示字符串

    题目:在屏幕中间显示绿色,绿底红色,白底蓝色的字符串‘welcome to masm!’ 80X25彩色字符模式显示缓冲区的结构: 在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80 ...

  3. fpga vga 显示

    VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得到了广泛的应用.不支持热插拔, ...

  4. 嵌入式中 动态阿拉伯语字符串 转换 LCD显示字符串【感谢建国雄心】

    本文参考CSDBN:建国雄心 的博客,这里找不到该帖子,放一个类似的仅供参考https://blog.csdn.net/qiaojiongzeng6321/article/details/748572 ...

  5. 让QtCreator在调试时显示字符串 Qt调试助手 QtDebuggingHelper qtc-debugging-helper

    When starting gdb with application message “Debugging Helper Missing” is displayed [Solved] http://q ...

  6. 应中DOS中断显示字符串(摘自《汇编语言》王爽)

    data segment s1 db 'Good,better,best,$' s2 db 'Never let it rest,$' s3 db 'Till good is better,$' s4 ...

  7. php 每隔30s在页面显示字符串

    例子 // 30秒执行一次 ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(); // 执行时间为无限制, ...

  8. 编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!'

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. C# 字符串多行显示、文本换行

    以textbox为例 ①:先设置textbox的属性Multiline为true ②:组织好显示字符串:FistLine(第一行要显示的字符).SecondLine(第二行要显示的字符)....... ...

随机推荐

  1. Web API实现POST报文的构造与推送

    ASP.NET Web API实现POST报文的构造与推送   毕设和OAuth协议相关,而要理解OAuth协议就必须理解HTTP GET/POST方法.因此研究了一下如何使用Web API或MVC构 ...

  2. 解决Xcode升级7.0后,部分.a静态库在iOS9.0的模拟器上,link失败的问题

    简单描述一下这个问题:我们项目中使用了Google大神开发的LevelDB键值对数据库,在Xcode6,iOS8的环境下,编译好的.a静态库是可以正常使用的.但是升级后,发现在模拟器上无法link成功 ...

  3. 第一章 CLR 的执行模型

    CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命 ...

  4. Html Agility Pack解析HTML页

    文章来源:Html Agility Pack解析HTML页 现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分 ...

  5. hdu 2159

    二维背包,dp[i][j]表示忍耐度为i,且还可以杀j个怪时能获得的最大经验值 dp[i][j]=max(dp[i][j],dp[i-r[k]][j-1]+e[k]),r[k]为杀死第k种怪掉的忍耐度 ...

  6. Solr与MongoDB集成,实时增量索引

    Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...

  7. [转]How WebKit’s Event Model Works

    原文:https://homes.cs.washington.edu/~burg/projects/timelapse/articles/webkit-event-implementation/ Fi ...

  8. 指定url和深度的广度优先算法爬虫的python实现

    本文参考http://zoulc001.iteye.com/blog/1186996 广度优先算法介绍 整个的广度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的"子节点"( ...

  9. 用django搭建一个简易blog系统(翻译)(三)

    06. Connecting the Django admin to the blog app Django 本身就带有一个应用叫作Admin,而且它是一个很好的工具 在这一部分,我们将要激活admi ...

  10. C#制作高仿360安全卫士窗体3

    C#制作高仿360安全卫士窗体(三)   距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作 ...