《fpga全程进阶---实战演练》第五章基于74hc595的led操作

raymon_tec raymon_tec     2022-07-30     701

关键词:

1基础理论部分

1.1分频

  分频,是的,这个概念也很重要。分频是指将一单一频率信号的频率降低为原来的1/N,就叫N分频。实现分频的电路或装置称为“分频器”,如把33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的信号,10分频得到3.3MHZ的信号。

  分频主要是相对于主晶振来说,用不到那么高的频率,开发板一般根据具体需要会加入晶振,一般若是功耗较高可选用50MHz,其他情况可以相对调整,如24MHz等等。那么分频的典型应用,二分频,四分频,八分频,还有任意分频。

  对于分频,我们可以利用quartus ii 自带的PLL进行分频,这样会占用一定的资源,也可以利用计数器实现一定的分频,注意,FPGA中不同于其他的CPU,没有计时器的概念,只有计数器。

1.2 LED

  LED(light emitting diode),发光二极管,简称LED,是一种能够将电能转化成可见光的固态的半导体器件,可以直接把电转换成光。可以用在电路及仪器中作指示灯,或者组成文字或数字显示等。有不同化合物制成的二极管如砷,镓,磷等化合物制成,不同的化合物组合会显示不同颜色的光。

  在设计LED的驱动电路时,不能直接接到3.3V或者5V来点亮,LED有额定电流,超过这个额定电流,LED就会烧掉,反接也会烧掉。一般的LED的额定电流从10mA~1A不等。FPGA开发采用的LED主要是贴片0805或者0603等,额定电路一般从10mA~30mA.

1.3 74HC595

  开发板上面的LED控制是用串入并出/串出的移位寄存器74HC595芯片,芯片在电路中的接入情况如图5.1所示,实物图如图5.2所示。其中MR引脚直接接高电平,不进行复位。串出引脚9不接,不进行串出引脚的使用。输出使能引脚13直接接地,手册上建议。11和12引脚分别为移位寄存器时钟输入和存储时钟输入,分别引出。

wps769.tmp

图5.1 LED部分电路图

wps9EB.tmp

图5.2 实物图

2 verilog代码实现部分

2.1 74HC595 控制部分

wps9FB.tmp

  14行定义了一个全局参数WIDTH = 8,用来控制程序下面所有的有关于数量的使用。

wpsA0C.tmp

  59行和60行分别定义了时钟信号和时钟使能信号,其中时钟信号sclk时钟周期前半段为低电平,后半段为高电平,可以实现对数据的中间采样,时钟使能信号led_time可以控制数据和时钟对齐。48行的state是一个状态改变的寄存器,只要数据一更新,state就有效。

wpsA1C.tmp

  75行定义了update_input信号用来检测输入数据的变化。

wpsA2D.tmp

  状态转换部分,在case语句中先检测state的初始位,然后进入循环操作,检测update_input是否使能,使能更新state,不使能保持state,更新后开始输出位数计数器led_cnt的计数

wpsA4D.tmp

  在121到123行,对输出的三路信号进行了约束限制,这种方法值的借鉴,在用不到时不输出信号,用到时输出信号,最大量的节省时钟。Led_data_out是先从高位输出到低位。

2.2 LED数据产生部分

wpsB68.tmp

  在模块声明处,仍旧使用全局定义变量,控制模块中常量的使用。

wpsB78.tmp

  计数模块,产生时钟使能信号。

wpsBB8.tmp

  Reg型变量Led_out_cnt是用来控制LED变化, 每当时钟信号使能开始计数,板卡上面一共有8个LED,所以计数8个即可。

wpsBC8.tmp

  LED解码部分,通过上面的led_out_cnt信号进行解码,控制LED的流水操作。

3 modelsim验证部分

3.1 led_generate 模块仿真

wpsBD9.tmp

  43行产生时钟信号,通过PERIOD进行周期控制。49~51产生复位信号,当时钟两次下降沿后复位信号拉高。56行用来监测led_out输出的时间,生成的脚本文件如图5.3所示。

wpsBEA.tmp

图5.3仿真波形

  图5.4是利用脚本文件生成,可以观察到实现了流水功能,且时间间隔1s;

wpsC0A.tmp

图5.4 脚本生成文件

3.2 led_74HC595 模块仿真

wpsC0B.tmp

  前半部分和上述都一样,可以作为固定部分,大家可以自行复制即可。59行到63行增加了系统输入信号初始化部分。在输入信号输入前,最好最安全就是进行一次初始化。

wpsC1B.tmp

  75行到87行是对输入进行模拟输入,并监测led_data-out信号,输出的结果如图5.5所示,由图可以看到时间间隔为120ns。

  图5.6是仿真波形,可以看到时钟led_sclk每次采样在输入信号的正中间位置,最大程度保证采样可靠。

wpsC4B.tmp

图5.5 脚本文件

wpsC4C.tmp

图5.6 仿真波形

第五章装饰器进阶(代码片段)

1.对大批量函数添加装饰器,而且不定期的开关          #多个装饰器,添加批量管理的开关importtimeFLAG=Falsedefouter(flag):deftimer(f1):definner(*args,**kwargs):ifflag==True:start_time=time. 查看详情

react进阶(十一)实战演练之button组件(1)

参考技术Abutton作为最常见的页面元素,几乎所有的UI库都会将其封装为一个基础组件。 查看详情

机器学习实战第五章logistic回归(代码片段)

defgradAscent(dataMatIn,classLabels):dataMatrix=mat(dataMatIn)#converttoNumPymatrixlabelMat=mat(classLabels).transpose()#converttoNumPymatrixm,n=shape(dataMatrix)alpha=0.001maxCycles=500weights=ones(( 查看详情

spring实战第四版第五章pom.xml

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"& 查看详情

2017.2.20《activiti实战第五章--用户与组及部署管理》用户与组

学习资料:《Activiti实战》 第五章用户与组及部署管理(一)用户与组内容概览:讲解activiti中内置的一套用户、组的关系,以及如何通过API添加、删除、查询。5.1用户与组5.1.1用户1publicclassIdentityServiceTest{2@Rule3publicActivitiRule... 查看详情

kvm虚拟化实战精讲[第五章利用virsh对虚拟机管理]

650)this.width=650;"src="http://s3.51cto.com/wyfs02/M02/89/41/wKiom1gNwm7ThEqhAAM9UfYsuuE552.jpg-wh_500x0-wm_3-wmp_4-s_1450775902.jpg"style="float:none;"title="KVM虚拟化实战精讲[第五章利用virsh对虚拟机管理]"alt="wKiom1 查看详情

2017.2.28activiti实战--第五章--用户与组及部署管理部署流程资源

学习资料:《Activiti实战》 第五章用户与组及部署管理(二)部署流程资源内容概览:讲解流程资源的读取与部署。 5.2部署流程资源5.2.1流程资源流程资源常用的有以下几种:1流程定义文件:拓展名为bpmn20.xml和bpmn2流程... 查看详情

第五章调优案例分析与实战

案例1:15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU、16GB物理内存,操作系统为64位CentOS5.4,Resin作为Web服务器。整个服务器暂时没有部署别的应用,所有硬件资源都可以提供给这访问量并不算太大的网站... 查看详情

《spring实战》学习笔记-第五章:构建springweb应用程序

5.1 SpringMVC起步5.1.1 跟踪SpringMVC的请求  每当用户在Web浏览器中点击链接或提交表单的时候,请求就开始工作了。对请求的工作描述就像是快递投送员。与邮局投递员或FedEx投送员一样,请求会将信息从一个地方带到另一个... 查看详情

第五章相关分析第七组作业

...硕、颜洋洋 小组成员任务余富强:负责制作幻灯片,全程督导组员完成任务金硕:负责幻灯片讲解以及软件操作颜洋洋:负责幻灯片讲解以及软件操作陈洋:负责收集所需资料单兰东:负责资料整理,提交给组长并协助制作... 查看详情

tensorflow实战google深度学习框架第五章5.2.1minister数字识别源代码(代码片段)

1importos2importtab3importtensorflowastf45print"tensorflow5.2"67fromtensorflow.examples.tutorials.mnistimportinput_data89‘‘‘10mnist=input_data.read_data_sets("/asky/tensorflow/mnist_data",one_hot=True 查看详情

第五章网络与并发编程(代码片段)

第五章网络与并发编程  1.网络编程    1.1网络编程定义      基于多台机器之间的通信需要基于网络编程    1.2web程序的架构      C/S架构:client(客户端)/server(服务端)  所有需要安装的.exe文件都属... 查看详情

第五章查询处理和执行

sqlserver2012深入解析与性能优化(第3版)第五章查询处理和执行1.sqlserver通过四个步骤处理一个查询,分析,algebrizing,优化,执行。2.分析是分析语法错误生成分析树,绑定部分有,名字解析,类型推倒,聚合绑定,组合绑定。查... 查看详情

第五章相关分析来自212独立团团长关育顺的小组作业

...sp;小组成员任务关育顺:负责幻灯片讲解以及软件操作,全程督导组员完成任务刘嘉雯:负责制作幻灯片李泽霖、徐小川:负责收集所需资料郭倚天:负责资料整理,提交给刘嘉雯并协助制作幻灯片二、小组PPT内容展示 幻灯... 查看详情

第五章业务架构,5.4智慧供应链(作者:昏河)

...点是借助天猫电子商务交易平台,实现供应链交易过程的全程电子化。在这个阶段,天猫利用其供应链将上 查看详情

flinksql实战演练之kafkatohive

参考技术A实时数仓的构建一般是基于kafka的,一般分为ods层、dwd层和dws层。基于成本考虑,当前大数据架构多采用kappa架构,故kafka流表中每一层的数据都需要落地到hive中。并在后台启动元数据服务,启动命令:nohuphive--servicemeta... 查看详情

[8421论坛]2019socket网络编程入门到进阶与实战完整视频教程

第一章 课程介绍及java语言简介第二章 快速入门Socket网络编程第三章 快速入门Socket UDP第四章 快速入门Socket TCP第五章 UDP辅助TCP实现点对点传输案例第六章 简易聊天室案例第七章 服务器传输优... 查看详情

zabbix专题:第五章zabbix添加触发器triggers

...://zhang789.blog.51cto.com本节目录大纲触发器(triggers)是什么?实战创建监听80端口的触发器报警级别介绍zabbix触发器依赖关系详解zabbix专题:第五章zabbix添加触发器Triggers触发器(triggers)是什么?触发器使用逻辑表 查看详情