VerilogHDL数字设计实训教程第2章接口类实训项目

VerilogHDL数字设计实训教程第2章接口类实训项目

ID:41295090

大小:1.32 MB

页数:68页

时间:2019-08-21

VerilogHDL数字设计实训教程第2章接口类实训项目_第1页
VerilogHDL数字设计实训教程第2章接口类实训项目_第2页
VerilogHDL数字设计实训教程第2章接口类实训项目_第3页
VerilogHDL数字设计实训教程第2章接口类实训项目_第4页
VerilogHDL数字设计实训教程第2章接口类实训项目_第5页
资源描述:

《VerilogHDL数字设计实训教程第2章接口类实训项目》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VerilogHDL数字设计实训教程西安电子科技大学出版社第1章VerilogHDL数字设计实训基础第2章接口类实训项目第3章数字系统应用类实训项目第4章NiosII处理器实训项目第2章接口类实训项目2.1LED流水灯2.2数码管显示控制2.3按键处理2.4液晶显示控制2.5UART通信设计2.6小结2.1LED流水灯1.设计要求共4个LED灯,连成一排。要求实现几种灯的组合显示。具体要求如下:(1)模式1:先奇数灯即第1/3灯亮0.25s,然后偶数灯即第2/4灯亮0.25s;依次类推。(2)模式2:按照1、2、3、4的顺序依次点亮所有灯,间隔0.25s;然后再按1、2、3

2、、4的顺序依次熄灭所有灯,间隔0.25s。(3)模式3:4个LED灯同时亮,然后同时灭,间隔0.25s。(4)以上模式可以选择。2.1LED流水灯2.设计说明本节使用状态机来设计流水灯,并且将设计要求中提到的3种模式放在一个状态机中。模式1中有2种状态,模式2中有8种状态,模式3中有2种状态,所以3种模式共有12种状态。设计题目中要求led每0.25s要变换一种显示状态,系统时钟源频率为50MHz,所以首先进行要进行50MHz/4Hz=12.5M次分频,得到4Hz的频率,然后用此频率控制状态机的状态转换。2.1LED流水灯3.设计模块图2-2流水灯模块端口框图2.1LED流

3、水灯3.设计模块2个模块的功能:模块U1用于实现分频,输入clk为50MHz,输出clk_4Hz为4Hz;模块U2用于实现流水灯的控制,输出led[3:0]用于控制4个led灯。2.1LED流水灯4.代码说明模块paomadeng_top调用了2个模块,模块divf_led用于分频,对50MHz进行12500000次分频得到4Hz的频率,实现方法参见第一章。模块paomadeng用于实现led闪烁控制。在模块paomadeng中,使用含12种状态的状态机来实现设计要求中提到的三种模式的12种状态。模块paomadeng中使用了三进程状态机,使用了3个always块,第一个a

4、lways块是状态寄存器,第2个always块是产生下一个状态的组合逻辑,第3个always块是产生输出的时序逻辑。状态编码使用独热编码:本程序以及本书后续所附程序中均含有大量的注释,这些注释对读者理解设计思想和方法非常有帮助,希望读者在阅读程序时关注,后续章节对此不再说明。2.1LED流水灯5.仿真分析图2-3流水灯仿真波形图2.1LED流水灯6.硬件验证图2-4引脚锁定2.1LED流水灯7.扩展部分请读者思考并实现以下扩展功能:(1)将每种灯的显示状态之间的延时修改为1s,然后观察灯的运行情况。(2)请读者思考其他LED显示方式,并实现之。例如:先循环左移,再循环右移(

5、任一时刻只有一个LED灯亮),然后从两头至中间(任一时刻只有两个LED亮),之后不断重复以上行为。2.2数码管显示控制1.设计要求共2个数码管,连在一起,要求可以任意显示其中一个或同时显示2个数码管。具体要求如下:(1)依次选通2个数码管,并让每个数码管显示相应的值,比如:让第1个数码管显示1,第2个数码管显示2,循环显示,间隔1s。(2)要求2个数码管同时显示122.2数码管显示控制2.设计说明图2-5共阴数码管及其电路2.2数码管显示控制2.设计说明图2-62位数码扫描显示电路2.2数码管显示控制3.设计模块图2-7数码管模块端口框图2.2数码管显示控制3.设计模块3个

6、模块的功能:U1模块为分频器,得到1Hz和1kHz的频率,当两个数码管交替显示时,使用1Hz的频率,若两个数码管同时显示某个稳定的数值,则使用1kHz的频率;U2模块产生位控码和段控数据,位控码用于扫描数码管,段控数据用于U3模块;U3模块根据段控数据得到段控码,对于0~F任意数值,均可以通过该模块驱动数码管显示相应数值。2.2数码管显示控制4.代码说明(1)模块shumaguan_top调用了3个模块,模块divf_shumaguan用于分频,模块GenBS用于产生位控码和段控数据,Decode_8S根据段控数据得到段控码,并控制数码管将该数据显示出来。(2)模块GenB

7、S使用状态机来设计数码管的显示,该状态机使用了2个状态,每个状态对应着驱动一只数码管,即产生相应的位控码和段控数据。这一方法可以很容易地拓展到多只数码管。如果我们想使用8只数码管,此时可以使用含8个状态的状态机来控制数码管的显示。(3)顶层模块shumaguan_top中,调用了GenBSU2(clk_1kHz,SM_in,SM_B);语句,此时,使用1kHz的频率来扫描两个数码管,两个数码同时且稳定的显示12;若将此句替换成GenBSU2(clk_1Hz,SM_in,SM_B);则使用1Hz的频率来扫描两个数码管

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。