/*
2017.9.19 gy DE2
vga  640x480   60hz
ADV7123 D/A
输入时钟50MHz 低电平复位时序:水平同步参数h 行扫描同步 后沿 有效视屏 前沿  总
时间us    3.8   1.9    25.4     0.6   31.7
计数      96    48    640(l)    16    800垂直同步参数v 列扫描          同步 后沿 有效视屏 前沿  总
行数      2    33     480(w)    10    525
时间us = 行数X扫描一行所需要的时间像素时钟25MHz yue=800x525x60
总时间 =31.7usX525X60 yue=1s
计一个数的时间为 1/25MHz or 3.8/96
*/
module vga(clk,rst_n,                         //inputvga_sync,vga_blank,vga_clk,        //output ADV7123 vga_r,vga_g,vga_b,vga_hs,vga_vs    //output VGA
);
input clk,rst_n;
output reg [9:0] vga_r,vga_g,vga_b;
output reg vga_clk,vga_hs,vga_vs;
output vga_blank,vga_sync;
//-------------------分频-------------------------
always @(posedge clk or negedge rst_n)if (!rst_n)vga_clk<=1'b0;else vga_clk<=~vga_clk;
//---------------时序参数800x525------------------
parameter H_SYNC=10'd96;
parameter H_BACK=10'd48;
parameter H_LENGTH=10'd640;
parameter H_FRONT=10'd16;parameter V_SYNC=10'd2;
parameter V_BACK=10'd33;
parameter V_WIDTH=10'd480;
parameter V_FRONT=10'd10;reg [9:0] x,y;
//不用SOG(sync on green 同步信号只在绿色信号中出现)
assign vga_sync=1'b0;
//---------------------计数-----------------------
always@(posedge vga_clk or negedge rst_n)
begin if(!rst_n) x<=10'd0;else if(x==800) x<=0;else x<=x+1'b1;
end
always@(posedge vga_clk or negedge rst_n)
begin if(!rst_n) y<=10'd0;else if(y==525) y<=0;else if(x==800) y<=y+1'b1;
end
//------------通过计的数字输出同步信号---------
always@(posedge vga_clk or negedge rst_n)
begin if(!rst_n) vga_hs<=1'b1;else if(x==0) vga_hs<=1'b0;else if(x==H_SYNC) vga_hs<=1'b1;
end
always@(posedge vga_clk or negedge rst_n)
beginif(!rst_n) vga_vs<=1'b1;else if(y==0) vga_vs<=1'b0;else if(y==V_SYNC) vga_vs<=1'b1;
end
//--------------以上为了时序用vga_clk 以下为了计算精确用clk这个时钟-----------------------//----------通过横纵坐标x,y计算出显示的区域---
reg [9:0] vga_x,vga_y;
always@(posedge clk)
beginvga_x=x-H_SYNC-H_BACK;vga_y=y-V_SYNC-V_BACK;
end
//---------------进行同步时消隐------------------
assign vga_blank=vga_x<H_LENGTH && vga_y<V_WIDTH;
//----------通过vga_x,vga_y显示一个太极----------
//圆心坐标
parameter ox1=10'd320,oy1=10'd190;
parameter ox=10'd320,oy=10'd240;
parameter ox2=10'd320,oy2=10'd290;
//圆上的点距离圆心的距离
integer rx1,ry1;
integer rx,ry;
integer rx2,ry2;
always@(posedge clk)
beginrx1=vga_x-ox1;ry1=vga_y-oy1;rx=vga_x-ox;ry=vga_y-oy;rx2=vga_x-ox2;ry2=vga_y-oy2;
end
//先画小圆后画大圆
always @(posedge clk or negedge rst_n)if (!rst_n) hei;else if(rx1*rx1+ry1*ry1<=100) bai;else if(rx2*rx2+ry2*ry2<=100) hei;else if(rx1*rx1+ry1*ry1<=2500) hei;else if(rx2*rx2+ry2*ry2<=2500) bai;else if(rx*rx+ry*ry<=10000) beginif(vga_x<320) bai;else hei;end else if(vga_x<320) hei;else bai;
//----------------设置颜色------------------------
task hei;
beginvga_r=10'b0;vga_g=10'b0;vga_b=10'b0;
end
endtask
task bai;
beginvga_r=10'b1111111111;vga_g=10'b1111111111;vga_b=10'b1111111111;
end
endtask
//----------------------结束-----------------------
endmodule 

verilogVGA显示太极图案相关推荐

  1. Java黑皮书课后题第6章:*6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n)

    *6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n) 题目 题目概述 破题 代码 运行示例 题目 题目概述 *6.6(显示图案)编 ...

  2. HTML5 Canvas组件绘制太极图案

    一实现思路: 实现原理主要是利用HTML5的Canvas组件提供的path函数功能来绘制圆,首先绘 制两个半圆,分别为黑色和白色,组成一个圆,绘制完成以后再分别绘制一个黑色 和白色的圆在绘制好的黑白圆 ...

  3. CSS3使用一个盒子实现太极图案

    使用一个盒子实现太极图案 代码如下: <body><div></div> </body> * {margin: 0;padding: 0; } body ...

  4. CSS3 实现太极图案

    CSS3实现太极图案 分析图片组成(如下图所示): 先给出html代码: <div class="box"><div class="content&qu ...

  5. 使用Java 2D绘制黑白太极图案

    一:基本原理 利用Java 2D的Area对象对绘制形状几何操作的支持,完成太极图案的绘制,使用Paint来 完成对不同颜色的填充.Java 2D图形API Area对Shape支持四种几何操作: - ...

  6. 汇编语言显示“*”符号图案(2)

    用汇编语言编写程序,在屏幕上显示图案. 要求在屏幕上显示如下图案: * * * * * * *     * * * * *      * * *        * 其中第一行"*" ...

  7. c语言 编程显示图案*,C语言中怎么编程在计算机屏幕上显示如下图案?

    满意答案 aggaskd2a 2013.07.14 采纳率:41%    等级:11 已帮助:5656人 #include int main() { int i, j; for(i = 0; i &l ...

  8. ArcGIS标注符号显示动物图案及文字

    首先,类型要选择"字符标记符号" 一.在文本符号,esri Covervation中,可以找到鸟.羊.鹿等动物符号样式: 二.在[candara].[windings Latin- ...

  9. 记录一下HarmonyOS开发app时Image标签无法显示圆形图案的问题

    目录 解决方案 环境 图片文件 layout配置 预览效果 解决方案     不废话,我就是换成了图片为圆形的PNG的图片,然后配置后面贴一下. 环境     DevEco Studio 3.0.0. ...

  10. 汇编语言显示“*”符号图案(1)

    现有程序: .MODEL  SMALL .STACK  100H .DATA .CODE MAIN    PROC     MOV   CL, 1     MOV   BL, 1     MOV   ...

最新文章

  1. 10个可以快速用Python进行数据分析的小技巧
  2. 混合多云每个人都应避免的3个陷阱(第2部分)
  3. mysql 搭建日志服务器_一、架构01-搭建日志服务器Rsyslog
  4. linux的基础知识——IP,UDP和TCP
  5. Spring的@Resource注解报java.lang.NoSuchMethodError
  6. python 批量处理文件
  7. mysql+影响的行数+获取_CI中获取读操作的结果集行数+获取写操作的影响行数
  8. 流量 起伏大_广西崇左的德天跨国大瀑布,一半是中国一半是越南,天下奇观!...
  9. 摘自缪雪峰的博客的JavaScript个人笔记(3)
  10. 当try和finally都包含return时
  11. 性能分析:处理器、磁盘I/O、进程、网络分析方法 http://www.cnblogs.com/fnng/archive/2012/10/30/2747246.html...
  12. 正向代理和反向代理详解(纯小白必看 最好懂的白话文教程)
  13. 网站的版面设计,商业Web站点设计策略,网站CI形象设计,网页色彩的搭配
  14. PQ 8.05中文版硬盘物理分区与删除分区(图文详解)
  15. 多线程编程实例(使用CompletableFuture)
  16. 小程序源码:求职招聘微信小程序源码下载v4.1.78
  17. CMD控制台提示“telnet不是内部或外部命令,也不是可运行的程序或批处理文件”
  18. HTML5之游戏DEMO - Yorhom's Game Box
  19. 51单片机c语言程序是一个灯亮灭,单片机实现8个灯每两个灯一亮在后面两个灯一亮直到最后8个灯全亮...
  20. 浪漫程序员会表白之抖音旋转立方体照片墙

热门文章

  1. 每日一生信--blast2go本地化(终极版)
  2. mysql 允许局域网连接_设置Mysql允许局域网或外部连接
  3. 递归与自我指涉标识牌Top 5
  4. Camera 图像处理原理分析- 色彩篇 一
  5. 陈强教授《机器学习及R应用》课程 第七章作业
  6. 【机器视觉硬件】机器视觉硬件学习笔记2——工业相机
  7. finereport帮助文档中期学习总结
  8. mysql的tps是什么意思_Mysql数据库的QPS和TPS的意义和计算方法
  9. 【渝粤题库】陕西师范大学163104 景区管理 作业 (高起专)
  10. python 报错 TypeError: tuple indices must be integers or slices, not tuple