verilogVGA显示一个圆
来源:互联网 发布:h3c路由器查看端口8080 编辑:程序博客网 时间:2024/06/07 12:23
/*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, //input vga_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;//---------------下面的时钟为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;endalways@(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;endalways@(posedge vga_clk or negedge rst_n)begin if(!rst_n) vga_vs<=1'b1; else if(y==0) vga_vs<=1'b0; else if(y==V_SYNC) vga_vs<=1'b1;end//----------通过横纵坐标x,y计算出显示的区域---reg [9:0] vga_x,vga_y;always@(posedge vga_clk)begin vga_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 ox=10'd320,oy=10'd240;//圆上的点距离圆心的距离integer rx,ry;always@(posedge vga_clk)begin rx=vga_x-ox; ry=vga_y-oy;endalways @(posedge vga_clk or negedge rst_n) if (!rst_n) hei; else if(rx*rx+ry*ry<=10000) hei; else bai; //----------------设置颜色------------------------ task hei;begin vga_r=10'b0; vga_g=10'b0; vga_b=10'b0;endendtasktask bai;begin vga_r=10'b1111111111; vga_g=10'b1111111111; vga_b=10'b1111111111;endendtask//----------------------结束-----------------------endmodule
阅读全文
0 0
- verilogVGA显示一个圆
- verilogVGA显示字符
- verilogVGA显示太极图案
- 显示一个圆,并可以移动
- 一个圆角显示的控件封装
- border-style之dotted显示一个圆
- 显示一个WinForms闪屏
- 一个分页显示类
- 显示一个封面
- javascript显示一个时钟
- 显示一个钟表
- 显示一个钟表
- 动态显示一个层
- 显示一个图案
- 显示一个点
- 显示一个ProgressDialog
- Toast显示一个ImageView
- javascript显示一个时钟
- 算法:php求几个数字之和刚好大于或等于某一个给定的值
- 利用加号+连接字符串详解
- 支持向量机(SVM)
- 一个错误A child container failed during start
- zookeeper 安装 windows环境
- verilogVGA显示一个圆
- [bzoj1593][Usaco2008 Feb]Hotel 旅馆 线段树
- HTML5-Cheatsheet(文字版)
- phpexcel导入excel处理大数据
- 无参构造方法
- spring boot 链接额
- Linux系统各个目录的一般作用
- 大国重器
- adb无线调试,显示:由于目标计算机积极拒绝, 无法连接. (10061)-另-调试无LOG信息,文中有提到。