Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)
1.同步动态扫描
多个数码管的显示采用的是同步动态扫描方法,同步动态扫描指的是:行信号和列信号同步扫描,是一种并行操作。
2.数码管驱动电路实现思路

如果要求数码管显示我们想要的数字,首先需要写一个数据接收模块,这个模块接收数据之后需要做什么样的处理呢?这时候我们会想到两个数码管,其中一个显示十位数字,另一个显示各位数字,即把这个数据的十位传给其中一个数码管,各位数字传给另一个数码管来显示。这样我们就会明确了:数据接收模块需要将接收的数据进行拆分,分别输出其十位数据与个位上的数据

程序风格:
1.always块语句中,总是先写出复位信号到来时候的情况,即输出全部置零。
2.always块语句中的变量都是reg型,因此在写always块语句前需要事先定义好,定义好reg型变量的位宽与名字。
3.尽管always块语句里面是对输出量的处理,但reg型的变量名最好不用输出量的名字,应先用其它的变量名代替,最后通过assign语句传递给输出量。(以后的工作中需要弄清楚为什么是这种编码风格)。
注意:
1.给变量赋值时,应带上数据的位宽与进制,总之,在编码的过程中,时刻注意变量的位宽与进制。多敲代码,养成良好的编码习惯。
2.写条件语句时,注意里面的代码,通常是以begin开头,end结尾,很重要,即使逻辑正确,少了这些,都无法通过编译。
当我们获得输入数据的十位与个位信号后,我们并不能直接传输给数码管,让其显示。当然八段数码管的显示方式并不陌生,因此十位与个位信号需要经过一个翻译的过程,把这两个信号翻译成数码管能识别的代码,这是一个加码的过程。


以上为八段数码管的显示编码,在程序中以参数的形式给出,方便以后调用。其中,当复位信号到来时,给输出信号赋值为“8’b1111_1111”此时八段数码管处于熄灭状态。
注意:似乎有大量参数的程序,都会用到case/endcase程序段,类似一个查表的过程,当case(输入量),在以下的代码中找到相匹配的输入量后,执行对应的语句(对输出量进行操作,赋值等)。

在我们获得了数码管的显示代码后,为什么不直接传给数码管呢,直接显示应该没问题呀,但为什么需要加一个行扫描模块与列扫描模块,希望有看到这篇博客的人能告诉为原因。

先说说列扫描,扫描频率制定为50Hz,即周期为0.02s,即从左至右,把两个灯扫一遍需要20ms,分配给两个灯,一个灯亮10ms,即每隔10ms换一个数码管使能。列扫描的工作机制如下:无需额外的输入,内部需要计数器,产生10ms的时间,然后通过内部逻辑控制数码管的使能。输出的列扫描信号即为数码管的片选信号,在实际的引脚分配中要注意。
以下为计数器的典型写法。
写完计数器之后,就应该写对输出语句的操作了。结合两个always块语句来看,前一个always块语句里面的变量t用在了下一个always块语句里面的case里面。
这其中涉及到一个状态机的编码技巧(哈哈,前几天看视频才弄明白的)。
分析:
输出信号有两种状态0:rColumn_Scan <= 2’b10; 个位数码管使能
1: rColumn_Scan <= 2’b01;十位数码管使能
前一个always块语句专门用来控制状态变量t的跳变,即在什么条件下由一个状态跳变到另外一个状态中呢?绘制如下状态图:


状态机与相应的操作分开写,会让程序更加清晰。
最后是行扫描模块,数码管的十位与个位显示代码是传给行扫描模块的,最后模块输出一个行扫描信号。行扫描模块的工作机制如下:
因为行扫描与列扫描是同步进行的,因此也需要一个10ms的计数器,假设初始时间是0,过了10ms后,十位的数码管被使能,这时候,行扫描模块应该把十位上的数据传给十位数码管,再过10ms,个位的数码管被使能,这时候,行扫描模块应该把个位上的数据传给个位数码管。这其中也有一个状态的跳变过程,需要写状态机。

至此,数码管驱动电路各个模块已经完成,最后只需要通过一个顶层文件用wire将各个模块连接起来。
Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)的更多相关文章
- Verilog HDL那些事_建模篇笔记(实验一,实验二)
实验一:永远的流水灯 扫描频率配置为100Hz,即是说扫描周期为10ms.这里需要注意的是扫描周期的概念.流水灯嘛,顾名思义,扫描周期指的是流水灯扫一轮所需要的时间.听到说周期,就应该想到在建模的时候 ...
- Verilog HDL那些事_建模篇笔记(实验九:VGA驱动)
1.了解VGA协议 VGA协议有5个输入信号,列同步信号(HSYNC Signal),行同步信号(VSYNC Signal),红-绿-蓝,颜色信号(RGB Signal). 一帧屏幕的显示是由行从上至 ...
- Verilog HDL那些事_建模篇笔记(实验八:键盘解码)
1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右. ...
- Verilog HDL那些事_建模篇笔记(实验三:按键消抖)
实验三:按键消抖 首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块.电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止 ...
- 【黑金教程笔记之008】【建模篇】【Lab 07 数码管电路驱动】—笔记
实验七的目的是设计实现最大为99数字在2个数码管上.采用同步动态扫描.即行信号和列信号同步扫描.这里数码管是共阳极的.选择端口也是共阳极的. 模块: /************************ ...
- 基于Verilog HDL 的数字时钟设计
基于Verilog HDL的数字时钟设计 一.实验内容: 利用FPGA实现数字时钟设计,附带秒表功能及时间设置功能.时间设置由开关S1和S2控制,分别是增和减.开关S3是模式选择:0是正常时钟 ...
- 【黑金教程笔记之003】【建模篇】akuei2的Verilog hdl心路
Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计 ...
- 【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis) ...
- Verilog HDL实用教程笔记
Verilog HDL实用教程笔记 DRC - Design Rule Check 几何规则检查ERC - Electrical Rule Check 电学规则检查自动参数提取LVS - Logic ...
随机推荐
- Android 与Unity交互之Toast消息
Toast.makeText(MainActivity.this,message.obj.toString(),Toast.LENGTH_SHORT).show();这一句代码不能直接放在 publi ...
- 生成highcharts报表时对数据没有用= eval('([' + seriesArray+ '])')处理生成数组,而是简单的拼成字符串,结果导致大量的场景出现
<script type="text/javascript"> //异步初始周达成率趋势图信息 function goFinishQuery() { var yearN ...
- debug、 release两个版本中正确运行的一些经验
在Qt编程中,默认的是debug版本,在编译器中可以正常的使用,但是单独运行.exe可执行文件时却发现系统提示缺少文件.其实就是缺少必要的.dll动态库文件.根据提示添加需要的.dll动态库文件即可. ...
- 学习SVG系列(2):SVG图形系列
SVG形状: 矩形 <rect> 圆形 <circle> 椭圆 <ellipse> 线 <line> 折线 <polyline> 多边形 & ...
- java开发命名规范
使用前注意事项: 1. 由于Java面向对象编程的特性, 在命名时应尽量选择名词 2. 驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首 ...
- Cisco ASA 配置案例---anyconnect拨通后所有流量从服务器端出去
一.目的: 1.Cisco ASA之Lan端能正常上网. 2.anyconnect端所有流量从Cisco ASA的Outside出去. 3.anyconnect端能访问Cisco ASA的Inside ...
- IOS-当遇到tableView整体上移时的解决方案
方案一在使用了navigationController后,当界面进行跳转往返后,时而会出现tableView或collectionView上移的情况,通常会自动上移64个像素,那么这种情况,我们可以关 ...
- Lua小技巧
来公司以后,业务逻辑都用lua写.写了好长时间了,到最近才觉得有点掌握了Lua的灵活.最近用Lua写了个类似集合一样的东西,如果两次向集合里放入同一个元素,就会报错,方便检查配置.代码如下: -- k ...
- The import javax.servlet cannot be resolved
在STS中,突然把配置的Tomcat删除,换另外一个Tomcat使用时,出现:The import javax.servlet cannot be resolved.这个错误可能是服务器自带的serv ...
- android 手机屏幕有关的几个工具(屏幕宽高,dp和px互相转换)
平时适配页面时经常会需要根据屏幕的宽高来设置控件的大小,很多时候在代码中还会需要dp和px互相转换. 今天把最常用的几个记录一下,经测试包括2.3 ~ 5.0之间的版本都可用,其他版本未测,不过应该也 ...