设计实例

3.1.1 流水灯设计

3.1.1 试验任务

8个LED灯依次顺序点亮,产生流水效果,相邻LED灯发光时间间隔大约为0.5s,人眼可以明显感知到这个间隔。

3.1.2 程序设计

1、设计思路

通过控制1/O口的高低电平可以实现LED发光或者熄灭,但是该怎样使用计数器实现延时呢?

实验要求相邻的LED时间间隔为0.5s,FPGA开发板的晶振为50MHz,所以有0.5s/20ns=25000000(224<25000000<225),需要25位计数位宽。当有效位计数达到最大值时,实现翻转(全1变全0,往高一位进1)。

本实验使用两个计数器。第一个计数器实现延迟间隔,计数器位宽为25bit,计数器命名为counter;第二个计数器控制哪个LED灯亮,计数器位宽为3bit,计数器命名count。

counter会一直持续计数,计数到最大值后,会翻转为0.当counter每计数至0的时候, count加1;当count计数到最大值后,也会翻转为0。

2、源代码

module LED(

input sys_clk,

input sys_rst_n,

output reg[7:0] LED

);

reg [2:0] count;

reg [24:0] counter;

always @(posedge sys_clk or negedge sys_rst_n) begin

if (sys_rst_n == 1'b0)

counter <= 25'b0;

else

counter <= counter + 25'b1;

end

always @(posedge sys_clk or negedge sys_rst_n) begin

if(sys_rst_n == 1'b0)

count  <=3'b0;

else if(counter == 25'd0)

count <= count + 3'b1;

else ;

end

always @(posedge sys_clk or negedge sys_rst_n) begin

if(sys_rst_n == 1'b0)

LED <= 8'b0;

else begin

case(count)

0:LED = 8'b00000001;

1:LED = 8'b00000010;

2:LED = 8'b00000100;

3:LED = 8'b00001000;

4:LED = 8'b00010000;

5:LED = 8'b00100000;

6:LED = 8'b01000000;

7:LED = 8'b10000000;

default:LED = 8'b00000000;

endcase

end

end

endmodule

3.2 按键控制LED实验

3.2.1 按键控制LED简介

按键是最常用的输入设备,广泛用于单片机/FPGA/DSP的输入控制,操作人员可以通过按键输人数据或者命令,实现简单的人机对话。FPGA开发板使用的按键是一种常开型的开关,通常按键的两个触点不按下时处于断开状态,按下时处于闭合状态。

本实验使用按键控制发光二极管。发光二极管输入为高时发光,按键默认未按下时由于上拉电阻原因输出高电平,所以需要将按键输入取反后赋值给发光二极管输入端,即可控制发光二极管发光。按键未按下时LED灯处于熄灭状态,按键按下时LED灯处于点亮状态。

3.2.3 实验任务

一个按键控制两个发光二极管,按下按键的可以使两个LED灯发光,未按下时两个LED灯不发光。

3.2.4 程序设计

1、设计思路

输入为4个按键,输出为8个LED,按键按下时按键输入为低电平,而LED需要驱动为高电平才能亮,所以需要对按键输入进行取反,作为LED的输入。

2、源代码

module KeyToLED(

input [3:0] key,

output wire [7:0] LED

);

assign LED = ~{key,key};

endmodule

3.3 七段数码管静态显示实验

3.3.1 数码管简介

数码管由7个条状和一个点状发光二极管制成,通过七段发光二极管亮暗的不同组合,可以显示多种数字,字母以及其他符号。

2.LED数码管分类

(1)共阴极接法(也叫共阴数码管)

把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输人高电平的段发光二极管就导通点亮,而输入低电平的段发光二极管则不点亮。

(2)共阳极接法(也叫共阳数码管)

把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V,这样阴极端输人低电平的段发光二极管就导通点亮,而输入高电平的段发光二极管则不点亮。

数码管的逻辑图如图3.8所示,全部由发光二极管组合构成。

本实验使用的是共阳极数码管,例如:假如要显示数字1,则b、c接低电平。

共阳极管的代码_《手把手教你学FPGA》第三章设计实例相关推荐

  1. python中字典的value可以为任意对象_手把手教你学Python之字典

    字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...

  2. python数据预测代码_手把手教你用Python玩转时序数据,从采样、预测到聚类丨代码...

    原标题:手把手教你用Python玩转时序数据,从采样.预测到聚类丨代码 原作 Arnaud Zinflou 郭一璞 编译 时序数据,也就是时间序列的数据. 像股票价格.每日天气.体重变化这一类,都是时 ...

  3. python股票直方图代码_手把手教你用直方图、饼图和条形图做数据分析(Python代码)...

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 导读:对数据进行质量分析以后,接下来可通过绘制图表.计算某些特征量等手段进行数据的特征分析. 其中 ...

  4. python量化策略代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...

    动量策略是右侧交易里最常见的,背后的逻辑是就现在涨的,后市还会涨,动量具有惯性的意思. 首先加载原始数据,我们用天的收盘价即可,按统一转为收益率.因为点位本身不重要,我们最后只关心变化率. 以沪深30 ...

  5. js如何运行python代码_手把手教你如何使用Python执行js代码

    前言 各位小伙伴,大家好,这次咱们来说一下关于爬虫方向的一个知识,Python如何执行js,快来看看吧!!! 为什么要引出Python执行js这个问题? 都说术业有专攻,每个语言也都有自己的长处和短处 ...

  6. python量化投资代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...

    动量策略是右侧交易里最常见的,背后的逻辑是就现在涨的,后市还会涨,动量具有惯性的意思. 首先加载原始数据,我们用天的收盘价即可,按统一转为收益率.因为点位本身不重要,我们最后只关心变化率. 以沪深30 ...

  7. python 金融分析代码_手把手教你以python为工具进行量化金融分析

    量化交易是指借助现代统计学和数学的方法,利用计算机技术进行投资交易的方式. 对于从未接触过量化的人来说,想要了解量化到底是做什么的,关键掌握四部份的内容:Python基础知识.金融知识.技术指标.量化 ...

  8. python实现人脸识别代码_手把手教你用1行代码实现人脸识别——Python Face_recogni...

    摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名.2. 接下来,你需要准备另一个文件夹,里面是你要识别的图片.3 ...

  9. 人脸识别的python实现代码_手把手教你用1行代码实现人脸识别 --Python Face_recognition...

    # filename : digital_makeup.py # -*- coding: utf-8 -*- # 导入pil模块 ,可用命令安装 apt-get install python-Imag ...

  10. python英文词云代码_手把手教你制作 中英文 词云 | python demo

     以前做词云的时候网上看的python做词云的坑都很多,耗了很多时间才高清楚wordcloud制作词云的精髓和脉络,整理如下. 相关文章 准备Mac环境下直接pip install wordclou ...

最新文章

  1. 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?
  2. GARFIELD@02-19-2005
  3. c语言函数的三种调用方式是什么?
  4. c#中Excel数据的导入、导出
  5. java class isassignablefrom_Java之——Class的isAssignableFrom方法
  6. import threading线程进程
  7. java esclient query_elasticsearch 口水篇(4)java客户端 - 原生esClient
  8. 游戏版号重新发放,开发者可以松口气了!| 畅言
  9. 一个正在被API驱动的互联网时代
  10. SQL的主键和外键详解!
  11. 凸包算法(Convex Hull Algorithm)
  12. STM32连接射频si4438模块
  13. Label mx条码软件导入Excel处理异常解决方法
  14. ubuntu14.04自定义系统默认xp字体
  15. python转码时出现'illegal multibyte sequen'错误
  16. 微软搜索战略全盘革新 计划数月内发布“Kiev”
  17. GN_1_在Ubuntu22.04安装GN
  18. Python练习题:根据一段单词,找出其中的最长单词
  19. RSA生成公私钥并加解密
  20. Java:多态乃幸福本源

热门文章

  1. MyBatis下载和使用
  2. Android adb重启手机
  3. Java常用软件安装包分享
  4. 微信小程序,模板+按钮+绑定事件
  5. 云原生技术开放日PPT大放送 | 五星级的云原生开发体验
  6. JSONObject.fromObject() Maven依赖
  7. Web前端的优点有哪些?为什么Web前端可以如此火爆?
  8. 如何在IDEA中导出jar包
  9. 浅谈-国标GB28181协议上下级对接国标编码要求(四)
  10. 川崎机器人f控制柜接线图_东莞Kawasaki机器人控制柜维修中心