当前位置: 首页 > news >正文

FPGA_工程_基于rom的vga显示

一 框图

二 代码修改

module Display
#(parameter H_DISP = 1280,parameter V_DISP = 1024,parameter H_lcd = 12'd150,parameter V_lcd = 12'd150,parameter LCD_SIZE = 15'd10_000
)
( input  wire	 		clk,	input  wire			rst_n,	input  wire	[11:0]	lcd_xpos,	//lcd horizontal coordinateinput  wire	[11:0]	lcd_ypos,	//lcd vertical coordinateoutput wire  [23:0]	lcd_data	//lcd data
);wire        [23:0] pic_data;
wire          lcd_valid;
reg         [14:0] rom_addra;
reg          [23:0] data_lcd;assign lcd_data = (lcd_valid == 1'b1) ?  pic_data : data_lcd;
assign lcd_valid = ((lcd_xpos >=(((H_DISP-H_lcd)/2))))&&((lcd_xpos >=(((H_DISP-H_lcd)/2)+H_lcd)))&&((lcd_ypos >=(((V_DISP-V_lcd)/2))))&&((lcd_ypos >=(((V_DISP-V_lcd)/2)+V_lcd)));   always@(posedge clk or negedge rst_n)if(rst_n==1'b0)rom_addra <= 15'd0;else  if(rom_addra == LCD_SIZE - 1'b1)rom_addra <= 15'd0;else  if(lcd_valid == 1'b1)rom_addra <= rom_addra+1'b1;`ifdef VGA_HORIZONTAL_COLOR
always@(posedge clk or negedge rst_n)
beginif(!rst_n)lcd_data <= 24'h0;elsebeginif	(lcd_ypos >= 0 && lcd_ypos < (V_DISP/8)*1)data_lcd <= `RED;else if(lcd_ypos >= (V_DISP/8)*1 && lcd_ypos < (V_DISP/8)*2)data_lcd <= `GREEN;else if(lcd_ypos >= (V_DISP/8)*2 && lcd_ypos < (V_DISP/8)*3)data_lcd <= `BLUE;else if(lcd_ypos >= (V_DISP/8)*3 && lcd_ypos < (V_DISP/8)*4)data_lcd <= `WHITE;else if(lcd_ypos >= (V_DISP/8)*4 && lcd_ypos < (V_DISP/8)*5)data_lcd <= `BLACK;else if(lcd_ypos >= (V_DISP/8)*5 && lcd_ypos < (V_DISP/8)*6)data_lcd <= `YELLOW;else if(lcd_ypos >= (V_DISP/8)*6 && lcd_ypos < (V_DISP/8)*7)data_lcd <= `CYAN;elsedata_lcd <= `ROYAL;end
end
`endif`ifdef VGA_VERTICAL_COLOR
always@(posedge clk or negedge rst_n)
beginif(!rst_n)lcd_data <= 24'h0;elsebeginif	(lcd_xpos >= 0 && lcd_xpos < (H_DISP/8)*1)data_lcd <= `RED;else if(lcd_xpos >= (H_DISP/8)*1 && lcd_xpos < (H_DISP/8)*2)data_lcd <= `GREEN;else if(lcd_xpos >= (H_DISP/8)*2 && lcd_xpos < (H_DISP/8)*3)data_lcd <= `BLUE;else if(lcd_xpos >= (H_DISP/8)*3 && lcd_xpos < (H_DISP/8)*4)data_lcd <= `WHITE;else if(lcd_xpos >= (H_DISP/8)*4 && lcd_xpos < (H_DISP/8)*5)data_lcd <= `BLACK;else if(lcd_xpos >= (H_DISP/8)*5 && lcd_xpos < (H_DISP/8)*6)data_lcd <= `YELLOW;else if(lcd_xpos >= (H_DISP/8)*6 && lcd_xpos < (H_DISP/8)*7)data_lcd <= `CYAN;elsedata_lcd <= `ROYAL;end
end
`endif`ifdef VGA_GRAFTAL_GRAPH
always@(posedge clk or negedge rst_n)
beginif(!rst_n)lcd_data <= 24'h0;elselcd_data <= lcd_xpos * lcd_ypos;
end
`endif`ifdef VGA_GRAY_GRAPH
always@(posedge clk or negedge rst_n)
beginif(!rst_n)lcd_data <= 24'h0;elsebeginif(lcd_ypos < V_DISP/2)lcd_data <= {lcd_ypos[7:0], lcd_ypos[7:0], lcd_ypos[7:0]};elselcd_data <= {lcd_xpos[7:0], lcd_xpos[7:0], lcd_xpos[7:0]};end
end
`endifvga_Demo_ip vga_inst (.addra(addra),.clka(clk),.doa(pic_data));endmodule

对工程中的数据生成模块进行了修改,例化了rom ip ,增添了逻辑语句,用于输出图像数据。

http://www.lryc.cn/news/300622.html

相关文章:

  • 代码随想录算法训练营第31天|● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
  • 无人机地面站技术,无人机地面站理论基础详解
  • 2024.2.13
  • 论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走
  • .NET Core WebAPI中封装Swagger配置
  • 28. 找出字符串中第一个匹配项的下标
  • 宿舍|学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)
  • CVE-2022-25487 漏洞复现
  • C#面:强类型和弱类型
  • nodejs和npm和vite
  • 相机图像质量研究(24)常见问题总结:CMOS期间对成像的影响--摩尔纹
  • Redis -- 数据库管理
  • 蓝桥杯(Web大学组)2023省赛真题:视频弹幕
  • 真假难辨 - Sora(OpenAI)/世界模拟器的技术报告
  • Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试
  • ctfshow-web21~28-WP
  • 鸿蒙开发系列教程(二十四)--List 列表操作(3)
  • 线性代数笔记2--矩阵消元
  • 透光力之珠——光耦固态继电器的独特特点解析
  • C#系列-​​​​​​​EntityFrameworkCore.Transactions.Abstractions应用场景+实例(38)
  • PMDG 737
  • 深入探索Midjourney:领航人工智能的新征程
  • ChatGPT高效提问—prompt实践(漏洞风险分析-重构建议-识别内存泄漏)
  • 【AIGC】Stable Diffusion 的提示词入门
  • 力扣---通配符匹配
  • Rust 原生类型
  • 09、全文检索 -- Solr -- SpringBoot 整合 Spring Data Solr (生成DAO组件 和 实现自定义查询方法)
  • C# CAD SelectionFilter下TypedValue数组
  • python 爬虫篇(3)---->Beautiful Soup 网页解析库的使用(包含实例代码)
  • 第十二周学习报告