数逻实验7 多路选择器设计及应用
实验 7 是基于多路选择器设计了一个计分板,通过 4 个阵列按钮输入改变对应 4 位数码管的值并显示。实验 7 结合了输入、输出,掌握以后其实就可以开始着手准备大程。与组合电路不
写在前面 实验 7 是基于多路选择器设计了一个计分板,通过 4 个阵列按钮输入改变对应 4 位数码管的值并显示。实验 7 结合了输入、输出,掌握以后其实就可以开始着手准备大程。与组合电路不同,大程的难点在于有意义的状态机设计,需要考虑时序电路中的延时对输出造成的影响。如本次实验中设计的计分板稍作修改就可以用作游戏积分的显示模块。 实验七 多路选择器设计及应用1. 实验目的和要求2. 实验内容和原理2.1 实验内容2.2 实验原理 2.2.1 Mux4to1: 4选1多路选择器 图表1 4选1多路选择器真值表 图表2 4选1多路选择器逻辑电路图 扩展至16选4如下图所示: 图表3 16选4多路选择器逻辑电路图 生成元件后如下图所示: 图表4 4选1多路选择器逻辑符号 2.2.2 动态扫描显示 动态扫描显示方案 图表5 动态扫描示意图 图表6 动态扫描同步输出模块逻辑电路图 图表7 动态扫描同步输出模块逻辑电路图 图表8 动态扫描同步输出模块逻辑电路图 2.2.3 辅助模块:时钟计数分频器 32位时钟计数分频器
根据原理,设计通用计数分频模块clkdiv设计应用,并将其输出的clkdiv(18:17)作为数据选择器的位选信号;clkdiv(17)作为消抖模块的时钟信号。 图表9 时钟分频模块 2.2.4 设计按键数据输入模块 按键去抖动处理 创建数字模块
防抖动模块
2.2.5 计分板的逻辑功能 图表10 BN开关 3. 主要仪器设备4. 操作方法和实验步骤4.1 数据选择器设计 4.1.1 原理图绘制多路选择器 4.1.1.1 Mux4to1 1. 新建工程,命名为 Mux4to1,top-level source type 为 schematic 2. 新建类型为 schematic 的源文件,命名为 Mux4to1_Number 3. 用原理图方式设计,具体如下所示: 图表11 4选1多路选择器电路逻辑图 4.生成逻辑符号和.vf文件:点击 Process 窗口下 Design Utilities -> Create schematic symbol,在工程文件夹里可以找到相应的 .sym 文件。 4.1.1.2 Mux4to1b4 1. 新建工程,命名为 Mux4to1b4_sch,top-level source type 为 schematic 2. 新建类型为 schematic 的源文件,命名为 Mux4to1b4 3. 用原理图方式设计,具体如下所示: 图表12 4位4选1多路选择器逻辑电路图 4. 生成逻辑符号和.vf文件:点击 Process 窗口下 Design Utilities -> Create schematic symbol,在工程文件夹里可以找到相应的.sym文件 5. 输入仿真信号进行测试,具体代码如下:
4.2 记分板设计 4.2.1 Verilog 代码实现 clkdiv 模块设计 1. 新建工程,Top Level Source Type 为 HDL,命名为 clkdiv_Number 2. 新建类型为 Verilog Module 的源文件,命名为 clkdiv_Number 3. 用 Verilog 代码进行设计,具体实现代码如下:
4. 生成逻辑符号和.vf文件:点击 Process 窗口下 Design Utilities -> Create schematic symbol,在工程文件夹里可以找到相应的.sym文件 4.2.2 计分板实现 1. 新建工程,Top Level Source Type 为 schematic,命名为 scoreBoard_Number 2. 新建类型为 verilog module 的源文件,命名为 CreateNumber 3. 用 Verilog 代码进行设计,具体实现代码如下:
4. 新建类型为 verilog module 的源文件,命名为 pbdebounce(防抖动模块) 5. 用 Verilog 代码进行设计,具体实现代码如下:
6. Check Syntax 无误后,点击 Process 窗口下 Design Utilities -> Create schematic symbol生成逻辑符号和.vf文件 7. 新建类型为 schematic 的源文件,命名为 scoreBoard_Number,右键设置为 Top Source 8. 将 MyMC14495.v 、MyMC14495.sym 、Mux4to1.v 、Mux4to1.sym 、Mux4to1b4.v 、Mux4to1b4.sym、clkdiv.v 、clkdiv.sym 添加到工程目录,并通过 Add Source 将其添加到工程中 9. 用原理图方式实现计分板的逻辑功能,具体如下: 图表13 计分板逻辑电路图 10. 进行引脚约束,下载到 SWORD 板进行验证。 新建类型为 Implementation constraints file 的源文件,命名为 constraints,具体代码如下所示:
5. 实验结果和分析5.1 数据选择器设计 运行仿真代码后波形图如下图所示,与理论结果一致,故元件逻辑功能正确。 图表14 仿真波形5.2 计分板应用设计 将计分板下载到 SWORD 实验板上,根据相应的引脚约束进行物理验证。 引脚对应按键如下图所示: 图表15 对应引脚示意图 结果与理论预期一致,因此计分板逻辑功能正确。 6. 讨论和心得6.1 仿真激励代码 有C语言的基础学习Verilog的语法能容易一些,网上也有很多 verilog 语言的教程。思路就是赋值、延时。需要搞清楚阻塞赋值和非阻塞赋值的区别与使用环境。 6.2 原理图绘制相关 1. 希望将多条线路引到总线时,可以先实现一条线,确认总线、字线命名无误后再将其他线连上 2. 在生成元件以后,若再修改原理图,需要删除原有的 .v 文件再生成才能覆盖原结果 3. 切记线的命名要与后续引脚约束和其他元器件的代码相统一 欢迎评论区或私信讨论,感谢三连与批评指正。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |