VGA协议与图像输出Verilog编程

博客介绍学习任务,包括从基于Verilog HDL的数字秒表等设计中任选一个完成,练习基于VGA的图像显示。学习内容涵盖基于Verilog HDL的数字秒表的仿真波形(异步复位、暂停、计数功能)及相关代码,还有基于VGA的图像显示中FPGA驱动VGA显示文字的字库生成、代码与时序及结果显示。

一、学习任务

1、从"实验3-基于Verilog HDL的数字秒表、波形发生器等设计" 任选一个完成;
2、练习基于VGA的图像显示,了解VGA协议,通过Verilog编程实现VGA端口生成彩条图案或者自定义的汉字图案;或者完成一个简单的类似贪吃蛇的VGA小游戏 (实际效果验证可在下次实验课检查)。

二、学习内容

1.基于Verilog HDL的数字秒表

1.1.仿真波形

1.1.1.异步复位功能

1.reset从1变为0时,hofs,sec,minute全被复位变成0.
在这里插入图片描述
2.reset从0变为1后,hofs重新计数
在这里插入图片描述

1.1.2.暂停功能

1.stop从0变为1时,hofs,sec,minute保持不变。
在这里插入图片描述
2.stop从1变成0,hofs,sec,minute继续计数。
在这里插入图片描述

1.1.3.计数功能

1.hofs从0计数到99,sec加一次。
在这里插入图片描述
2.sec从0计数到59,minute加一次。
在这里插入图片描述
3.minute从0计数到59,hofs,sec,minute全部清0,重新下一次的计数
在这里插入图片描述

1.2.相关代码

module stopwatch(
  input                      clk,
  input                      rst_n,
  input                      stop,
  output [5:0]               minute,
  output [5:0]               sec,
  output [6:0]               hofs
  );
  reg    [6:0]               counter100;//模100的计数器,用于百分秒计数和进位
  reg    [5:0]               counter60_s; //模60的计数器,用于秒计数和进位
  reg    [5:0]               counter60_m;//模60的计数器,用于分计数和清零
  //异步复位和暂停
  // counter100
  always@(posedge clk or negedge rst_n or posedge stop) begin
    if(!rst_n)  //复位功能,低电平有效
        counter100 <= 7'b0000000;
    else if(stop) //暂停功能,高电平有效,保持原值不变
        counter100 <= counter100;
    else if(counter100 < 7'b1100011)//实现模100的计数器,小于99,累加1
        counter100 <= counter100 + 1'b1;
    else
        counter100 <= 7'b0000000;
   end

 //  counter60_s
  always@(posedge clk or negedge rst_n or posedge stop) begin
    if(!rst_n)  //复位功能,低电平有效
         counter60_s <= 6'b000000;
    else if(stop) //暂停功能,高电平有效,保持原值不变
         counter60_s <= counter60_s;
    else 
         if(counter60_s < 6'b111100)
           if(counter100 == 7'b1100011)
              counter60_s <= counter60_s + 1'b1;
           else
              counter60_s <= counter60_s;
    else
        counter60_s <=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值