[求助] vivado如何把图片存进rom然后用vga显示出来

swaggy   2017-6-25 23:42 楼主

如题,用vga显示彩色条纹是可以的,但是换成显示存在rom里面的图片就不行了,求教。

想把一张40*30的图片显示出来。

代码如下:

module VGA(
    input wire clk,
    input wire rst,
   
    output wire HSYNC,VSYNC,//行和列同步信号
    output wire[3:0]red,green,
    output wire[3:0]blue
);   
  clk_40m clk40m
(
// Clock in ports
  .clk_in1(clk),      // input clk_in1
  // Clock out ports
  .clk_out1(clk40m),     // output clk_out1
  // Status and control signals
  .reset(rst), // input reset
  .locked(locked));      // output locked
  
  man_test man (
    .clka(clk40m),    // input wire clka
    .ena(en_rom),      // input wire ena
    .addra(addr),  // input wire [16 : 0] addra
    .douta(rom_dout)  // output wire [11 : 0] douta
  );
  
    wire en_rom;
    wire [17:0] addr;
    wire [11:0] rom_dout;
   
    wire clk40m,locked;
  
    parameter hpixels=1056;//行同步列像素1056
    parameter vlines=628;  //场同步行数628
    parameter hfp=40;//行同步前沿front porch
    parameter hbp=88;//行同步后沿back porch
    parameter hsp=128;//行同步脉冲sync pulse
    parameter vfp=1;//场同步前沿
    parameter vbp=23;//场同步后沿
    parameter vsp=4;//场同步脉冲
   
   
   
    reg[10:0]cnt_h;//行扫描计数器
    reg[9:0]cnt_v;//场扫描计数器
   
   
    assign HSYNC = (cnt_h<=hsp)? 1'b0 : 1'b1;//行同步信号
    assign VSYNC = (cnt_v<=vsp)? 1'b0 : 1'b1;//场同步信号

always@(posedge clk40m or posedge rst)
    if(rst)
        cnt_h <=11'd0;
    else if(cnt_h == hpixels)
        cnt_h <=11'd0;
    else
        cnt_h <= cnt_h +11'd1;
   
always@(posedge clk40m or posedge rst)
    if(rst)
        cnt_v <= 10'd0;
    else if (cnt_v == vlines)
        cnt_v <= 10'd0;
    else if (cnt_h == hpixels)
        cnt_v <= cnt_v +10'd1;

    assign {red,green,blue} =((cnt_h >= 11'd300) && (cnt_h <= 11'd340) && (cnt_v >= 10'd400) && (cnt_v <= 10'd430))?  rom_dout : 12'b0000_0000_0000;
    assign en_rom  =((cnt_h >= 11'd300) && (cnt_h <= 11'd340) && (cnt_v >= 10'd400) && (cnt_v <= 10'd430))? 1 : 0;
    assign addr    = (en_rom)? (cnt_v - 10'd401) * 40 + (cnt_h - 11'd301) : 17'bzzzzzzzzzzzzzzzzz;
   
    endmodule


求大神解决

回复评论 (3)

路过,帮你顶一下
点赞  2017-6-26 20:36
需要把图片按VGA的取色位数进行转换,转换为mif文件或者hex文件,初始化到rom中,通过控制读rom地址读出ROM的数据,发送给VGA进行显示。
点赞  2017-6-28 19:58
你的代码中VGA应该是16bit的位深数据
点赞  2017-6-28 19:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复