「已注销」 2021-11-19 16:10 采纳率: 100%
浏览 202
已结题

为什么fpga驱动vga显示无信号

第一次搞vga,我直接抄的书上的代码,可是不知道哪里有问题,仿真时序也是正确的,一驱动vga显示屏就显示无信号,(不驱动的时候显示屏还会亮,一驱动就直接无信号然后黑了
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2021/10/24 19:10:24
// Design Name:
// Module Name: v1
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////

module v1(
input clk,
input [7:0]sw,
output [7:0]led,
output Hsync,//水平同步输出接口
output Vsync,//垂直同步输出接口
output [3:0]vgaRed,
output [3:0]vgaGreen,
output [3:0]vgaBlue
);

parameter ta=96,tb=48,tc=640,td=16,te=800,to=2,tp=33,tq=480,tr=10,ts=525;
// parameter ta=80,tb=160,tc=800,td=16,te=1056,to=3,tp=21,tq=600,tr=1,ts=625;

reg [10:0]x_counter=0;//当前水平扫描速度
reg [10:0]y_counter=0;//当前垂直扫描速度
reg [2:0]colour;
wire clk_vga;//对clk处理后的输出线

assign led=sw;

//调用ip核输出25MHz的时钟
clk_wiz_0 uut_clk
(
.clk_in1(clk),
.clk_out1(clk_vga)
);

//行场同步信号发生
always @(posedge clk_vga)
begin
begin
if(x_counter == te-1)//799
begin
x_counter=0;
if(y_counter == ts-1)//524
y_counter=0;
else
y_counter=y_counter+1;
end
else
begin
x_counter=x_counter+1;
end
end
end

//赋予颜色信息
always@(x_counter or y_counter)
begin
if(x_counter<224) colour<=3'b001;//蓝色
else if(x_counter<304) colour<=3'b010;//绿色
else if(x_counter<384) colour<=3'b011;//青色
else if(x_counter<464) colour<=3'b100;//红色
else if(x_counter<544) colour<=3'b101;//粉色
else if(x_counter<624) colour<=3'b110;//黄色
else if(x_counter<704) colour<=3'b111;//白色
else colour<=3'b000;//黑色
end
//完成颜色信号的硬件驱动
assign vgaRed={4{colour[2]}};
assign vgaGreen={4{colour[1]}};
assign vgaBlue={4{colour[0]}};

//行场同步信号发生
//当水平扫描值x_counter<ta时,水平同步信号为0
assign Hsync=!(x_counter<ta);//96
//当垂直扫描值y_counter<to时,垂直同步信号为0
assign Vsync=!(y_counter<to);//2
ila_0 U3(
.clk(clk),
.probe0(Hsync),
.probe1(Vsync),
.probe2(vgaRed),
.probe3(vgaBlue),
.probe4(vgaGreen)
);
endmodule
约束文件也是对照着书上写的,还求各位大神指点😢😢😢😢😢😢

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2021-11-19 16:35
    关注

    代码有些小问题,但是不会不亮。
    查下硬件原理图与管脚约束,整错了就可能不亮。
    如果有示波器,可以看看 HSYNC VSYNC 的信号出来了没。信号对不对。

    细心检查下,调试查错才能加深学习理解。

    VGA 的逆程消隐是黑色,你的代码没这个消隐。
    你的代码大部分的显示器是不会有问题的,可以亮的。
    可以按下面的代码改下。

    //赋予颜色信息
    always@(x_counter or y_counter)
    begin
        if(y_counter<35 || y_counter >= 515 ) colour<=3'b000;//黑色
        else
        begin
            if(x_counter<144) colour<=3'b000;//黑色
            else if(x_counter<224) colour<=3'b001;//蓝色
            else if(x_counter<304) colour<=3'b010;//绿色
            else if(x_counter<384) colour<=3'b011;//青色
            else if(x_counter<464) colour<=3'b100;//红色
            else if(x_counter<544) colour<=3'b101;//粉色
            else if(x_counter<624) colour<=3'b110;//黄色
            else if(x_counter<704) colour<=3'b111;//白色
            else colour<=3'b000;//黑色
        end
    end
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号