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

网站建设 手机网站南京百度提升优化

网站建设 手机网站,南京百度提升优化,宝鸡做网站哪家好,做社区生意的网站FPGA学习(三)——LED流水灯 文章目录 FPGA学习(三)——LED流水灯一、DE2-115时钟源二、控制一个LED灯闪烁1、代码实现2、引脚配置3、实现效果 三、控制6个LED灯流水灯1、代码实现2、引脚配置3、实现效果 四、LED灯流水灯模块化代码…

FPGA学习(三)——LED流水灯

文章目录

  • FPGA学习(三)——LED流水灯
    • 一、DE2-115时钟源
    • 二、控制一个LED灯闪烁
      • 1、代码实现
      • 2、引脚配置
      • 3、实现效果
    • 三、控制6个LED灯流水灯
      • 1、代码实现
      • 2、引脚配置
      • 3、实现效果
    • 四、LED灯流水灯模块化代码
      • 1、分频模块 (fenpin.v)
      • 2、显示控制模块 (display.v)
      • 3、顶层模块 (LedBlink.v)

一、DE2-115时钟源

DE2-115板子包含一个50MHz的石英晶体振荡器,通过一个时钟缓冲器产生3路抖动低的50MHz时钟信号送到FPGA的时钟输入引脚,如下图所示:

在这里插入图片描述

对应到DE2-115板子上的引脚分配为下图所示:

在这里插入图片描述

二、控制一个LED灯闪烁

1、代码实现

module led(input clk,        // 输入时钟信号,开发板晶振频率为50MHzinput rst_n,      // 复位信号,低电平有效(下降沿触发复位)output reg ld     // 输出信号,连接到LED灯,高电平点亮
);reg [25:0] cnt;   // 26位寄存器,用于存储计数器值// 计时器模块:在时钟上升沿或复位信号下降沿触发always@(negedge rst_n or posedge clk) beginif (!rst_n) begin// 如果复位信号有效(低电平),则初始化计数器和LED状态cnt <= 26'd0;         // 初始化计数器为0ld <= 1'b1;           // 初始化LED灯为高电平(假设高电平点亮)end else if (cnt == 26'd50_000_000 - 1) begin// 当计数器达到50,000,000(即1秒)时,重置计数器并翻转LED状态cnt <= 26'd0;         // 重置计数器为0ld <= ~ld;            // 翻转LED状态(如果原来是高电平,则变为低电平,反之亦然)end else begin// 在其他情况下,继续增加计数器,并保持LED状态不变cnt <= cnt + 26'd1;   // 增加计数器ld <= ld;             // 保持LED状态不变endend
endmodule

2、引脚配置

在这里插入图片描述

3、实现效果

FPGA(三)

三、控制6个LED灯流水灯

1、代码实现

module LedBlink(input wire clk,       // 50MHz时钟输入input wire rst_n,     // 复位信号,低电平有效input wire stop_n,      //停止信号output reg [5:0] led  // 6个LED灯输出
);reg [25:0] cnt;       // 26位计数器,用于计数1秒周期// 计数器模块always @(posedge clk or negedge rst_n or negedge stop_n) begin // posedge是指clk的上升沿 negedge是指rst_n的下降沿if (!rst_n) begincnt <= 26'd0; // 复位时,计数器从0开始计数led <= 6'b000001; // 复位时,第一个LED亮endelse if (!stop_n) begincnt <= cnt;led <= led;end else if (cnt == 50_000_000 - 1) begin // 计数到50,000,000 - 1cnt <= 26'd0; // 重置计数器led <= {led[4:0], led[5]}; // 循环右移一位,保持流水灯效果end else begincnt <= cnt + 1; // 增加计数器endend endmodule

2、引脚配置

在这里插入图片描述

3、实现效果

LED流水灯

四、LED灯流水灯模块化代码

1、分频模块 (fenpin.v)

用于将输入时钟分频至每秒触发一次的信号。

module fenpin (input clk,      // 输入时钟(如50MHz)output reg tick // 每秒触发信号
);parameter MAX_COUNT = 25_000_000; // 对于50MHz时钟,计数到25M得到1Hz输出reg [24:0] count = 0;always @(posedge clk) beginif (count == MAX_COUNT - 1) begincount <= 0;tick <= ~tick; // 每秒翻转一次end else begincount <= count + 1;endend
endmodule

2、显示控制模块 (display.v)

控制6个LED依次亮起,实现跑马灯效果。

module display (input clk,          // 来自分频器的每秒脉冲output reg [5:0] led // 控制6个LED的状态
);reg [2:0] state = 0; // 状态机状态always @(posedge clk) beginstate <= state + 1; // 每秒改变状态case(state)3'b000: led = 6'b000001; // 第1个LED亮3'b001: led = 6'b000010; // 第2个LED亮3'b010: led = 6'b000100; // 第3个LED亮3'b011: led = 6'b001000; // 第4个LED亮3'b100: led = 6'b010000; // 第5个LED亮3'b101: led = 6'b100000; // 第6个LED亮default: led = 6'b000001; // 默认回到第1个LED亮endcaseend
endmodule
// 备注:根据输入信号,顺序点亮6个LED中的一个。

3、顶层模块 (LedBlink.v)

整合分频和显示控制模块。

module LedBlink (input clk,       // 输入时钟信号output [5:0] led // 输出至6个LED
);
wire tick; // 连接分频器和显示控制器的信号fenpin fenpin_use (.clk(clk),.tick(tick)
);display display_use (.clk(tick), // 使用分频后的信号作为显示控制器的时钟.led(led)
);
// 备注:顶层模块连接分频器和显示控制器,实现完整的跑马灯功能。
endmodule
http://www.dtcms.com/wzjs/3711.html

相关文章:

  • 做动态网站该看的书佛山疫情最新消息
  • 网站开发概要设计书模板如何宣传推广自己的产品
  • php制作网页教程seo自己怎么做
  • 网站开发的工作好做吗杭州seo博客有哪些
  • 两学一做学习教育网站网络营销软件站
  • wordpress菜单栏图标惠州网站seo
  • 找外包公司做个网站多少钱门户网站软文
  • 如何做免费企业网站在线检测网站安全
  • 做类似电驴网站seozou是什么意思
  • 网站建设策划方案模板广东网络优化推广
  • 饰品网站设计方案建立自己的网站平台
  • 网址搜索器seo搜索引擎优化技术
  • 邯郸专业做网站地方搜索引擎优化分析
  • 网站二维码悬浮户外广告
  • 网站正在建设中 html软文广告300字范文
  • 西安SEO网站排名站长工具ping检测
  • 长沙做痔疮东大医院de网站手机百度网盘登录入口
  • 一直免费的服务器下载seo快速排名软件案例
  • 房屋在线设计平台seo裤子的关键词首页排名有哪些
  • 电脑怎么做最新系统下载网站搜索引擎营销的模式有哪些
  • 做亚马逊外国网站需要语言好吗如何做好网站推广优化
  • 中国建设会计学会网站百度的广告怎么免费发布
  • 网站上的按钮怎么做百度竞价排名是什么意思
  • 网上开店货源的选择主要有徐州seo推广
  • 网站模板 安装推广产品的方法和步骤
  • 建筑网站编辑工作内容百度推广竞价技巧
  • 网站建设怎么寻找客户网络营销广告
  • 设计型网站百度知道在线
  • 荔湾做网站武汉搜索引擎营销
  • 湖州网站建设企业新东方在线教育平台官网