OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7046|回复: 3

[ALTERA] 在彩条显示实验中,我把驱动模块单独仿真了一下,但是仿真图输出的为什么都是0,有大佬可以解释下吗

[复制链接]

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2020-4-3
在线时间
12 小时
发表于 2020-4-4 10:57:38 | 显示全部楼层 |阅读模式
1金钱
驱动模块代码如下:
module vga_driver(
    input        vga_clk,               //vga驱动时钟
        input        sys_rst_n,             //复位信号
        //VGA端口      
        output       vga_hs,                //行同步信号
        output       vga_vs,                //场同步信号
        output [15:0] vga_rgb,              //三原色输出
       
        input  [15:0] pixel_data,           //像素点数据
        output [9:0]  pixel_xpos,           //像素点横坐标
        output [9:0]  pixel_ypos            //像素点纵坐标
        );
       
parameter h_sync = 10'd96;              // 行同步
parameter h_back = 10'd48;              //行显示后沿
parameter h_disp = 10'd640;             //行有效数据
parameter h_front = 10'd16;             //行显示前沿
parameter h_total = 10'd800;            //行扫描周期

parameter v_sync = 10'd2;               //场同步
parameter v_back = 10'd33;              //场显示后沿
parameter v_disp = 10'd480;             //场有效数据
parameter v_front = 10'd10;             //场显示前沿
parameter v_total = 10'd525;            //场扫描周期

//rgb define
reg  [9:0]  cnt_h;
reg  [9:0]  cnt_v;

//wire define
wire vga_en;
wire data_req;

//vga场同步信号
assign vga_hs = (cnt_h <= h_sync - 1'b1) ? 1'b0 : 1'b1;
assign vga_vs = (cnt_v <= v_sync - 1'b1) ? 1'b0 : 1'b1;

//使能565输出
assign vga_en = (((cnt_h >= h_sync+h_back) && (cnt_h < h_sync+h_back+h_disp))&&
                 ((cnt_v >= v_sync+v_back) && (cnt_v < v_sync+v_back+v_disp)))
                                 ? 1'b1 : 1'b0;

//565数据输出                         
assign vga_rgb = vga_en ? pixel_data : 16'd0;

//请求像素点数据输入
assign data_req = (((cnt_h >= h_sync+h_back-1'b1) && (cnt_h < h_sync+h_back+h_disp-1'b1))&&
                 ((cnt_v >= v_sync+v_back) && (cnt_v < v_sync+h_back+v_disp)))
                                 ? 1'b1 : 1'b0;
                                 

//像素点坐标                                 
assign pixel_xpos = data_req ? (cnt_h-(h_sync+h_back-1'b1)) : 10'd0;
assign pixel_ypos = data_req ? (cnt_v-(v_sync+v_back-1'b1)) : 10'd0;

//行计数器对像素点计数
always @(posedge vga_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
            cnt_h<=10'd0;
        else begin
            if (cnt_h<h_total-1'b1)
                    cnt_h<=cnt_h+1'b1;
                else
                    cnt_h <= 10'd0;
        end
end

//场计数器对行计数
always @(posedge vga_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
            cnt_v<=10'd0;
        else if  (cnt_h==h_total-1'b1) begin
            if (cnt_v<v_total-1'b1)
                    cnt_v<=cnt_v+1'b1;
                else
                    cnt_v <= 10'd0;
        end
end
endmodule



仿真1.png

行场信号为什么都是0

行场信号为什么都是0

最佳答案

查看完整内容[请看2#楼]

图片里的仿真波形都是刚复位后的数据,可以把仿真的时间设置长一点,就能看到数据了。另外可以把cnt_h和 cnt_v加进来看一下有没有变化
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-4 10:57:39 | 显示全部楼层
图片里的仿真波形都是刚复位后的数据,可以把仿真的时间设置长一点,就能看到数据了。另外可以把cnt_h和 cnt_v加进来看一下有没有变化
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-4-12
在线时间
2 小时
发表于 2020-4-12 16:29:38 | 显示全部楼层
你好,我想问下这个实验源代码在哪里获取呀
回复

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2020-4-3
在线时间
12 小时
 楼主| 发表于 2020-4-27 19:02:14 | 显示全部楼层
Zoean1 发表于 2020-4-12 16:29
你好,我想问下这个实验源代码在哪里获取呀

论坛上有专门下载资料的地方
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 11:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表