(一)60秒倒计时电路Logisim电路原理图和Verilog HDL 描述+ DE2-70开发板

2024-03-04 20:50

本文主要是介绍(一)60秒倒计时电路Logisim电路原理图和Verilog HDL 描述+ DE2-70开发板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,感谢MOOC华中科技大学谭志虎老师的计算机硬件设计课程!这套课程学习下来,帮助我理解了当时学习数字逻辑课程中存在的许多困惑!!
硬件菜鸡一枚,本人硬件课程设计遇到的,特此记录下来,作为自己的学习记录,同时希望给还在挠头的同学一点参考,起到抛砖引玉的效果。废话少说!!正文来了!!!!

第一步:先在logisim这个软件中用画电路原理图的方式,来看看它的电路原理图是啥样的吧!
在这里插入图片描述
讲解一下原理图,因为我要在数码管上显示0059到0000所以,60秒倒计时的时间输出数据为16位二进制,因此我在设计倒计时模块的时候,采用了4个计数器(前面的高两位计数器其实没有起作用,使能信号始终为0,仅仅用来占位),第3个计数器可以从5到0进行倒数,第4个计数器可以从9到0倒数,每当从9数到0时,立马输出一个借位信号,将这个借位信号,传给第三个计数器,让第三个计数器可以减1。当第三个计数器和第四个计数器的借位信号输出都为1时,代表倒计时已经为0000,此时通过与非门将所有计数器的使能信号全部置0,(使能信号为0,停止计数)。

第二步,将倒计时电路进行封装,然后测试结果是否正确。
在这里插入图片描述
测试结果:如上面的测试结果图,按下倒计时的mode1,倒计时就开始了。当到0000时,自动停止。

第三步:将60秒倒计时用Verilog HDL硬件描述语言进行描述

module time_60(CK,CD,mode1);
input CK;
input mode1;
output[15:0]CD;
reg [15:0]cd=60;        //初值设为60,可以设为任意,代表任意时间的倒计时
always@(posedge CK)
beginif(mode1)begin if(cd > 0)cd = cd-1;  //60开始一直减下去,到0就不减了endendassign CD = cd;
endmodulemodule disp_dec(hex,dispout);   //将十进制数转为BCD码
input[15:0] hex;
output[15:0] dispout;
reg [15:0] hex_;
reg [15:0] dec;
always@(*)beginhex_[15:0]=hex[15:0];dec[3:0]=hex_%10;dec[7:4]=(hex_%100-dec[3:0])/10;dec[11:8]=4'b0000;dec[15:12]=4'b0000;endassign dispout = dec;
endmodulemodule timeback(clk,en,distime); //顶层模块,调用上面两个模块
input clk;
input en;
output [15:0]distime;
wire [15:0]s1;           //十进制时间的输出与BCD码转换器的输入之间的连线time_60 m2(.CK(clk),.CD(s1),.mode1(en));
disp_dec m1(.hex(s1),.dispout(distime));
endmodule

第四步:将上的倒计时电路下载到DE2-70开发板上
给60秒倒计时电路,接上数码管驱动模块,分配好引脚,下载到板子上就可以了,倒计时的Verilog HDL顶层模块图
在这里插入图片描述
4位的数码管译码电路Verilog HDL代码

//一位的七段译码模式
module seg_decode1(iflag,ia,oy); //高有效,不带小数点的数码管显示驱动input iflag; //共阴、共阳输出控制模块input [3:0] ia; //4位二进制的输入output reg [7:0]oy;//数码管的显示输出always@(iflag,ia)begincase(ia)  //当iflag=1,共阴极输出,ia的取值对应输出4'b0000:oy=8'h3f;  //04'b0001:oy=8'h06;  //14'b0010:oy=8'h5b;  //24'b0011:oy=8'h4f;  //34'b0100:oy=8'h66;  //44'b0101:oy=8'h6d;  //54'b0110:oy=8'h7d;  //64'b0111:oy=8'h27;  //74'b1000:oy=8'h7f;  //84'b1001:oy=8'h6f;  //9endcaseif(!iflag)  //iflag=0,共阳极输出oy=~oy;  endendmodule //四位的七段译码模块
module seg_decode4(iflag,dec1,dec2,dec3,dec4,men_one,men_ten,fen_one,fen_ten);input iflag;input[3:0] dec1;    //放置各个数码管的输入数据input[3:0] dec2;input[3:0] dec3;input[3:0] dec4;output [7:0] men_one;  //个位output [7:0] men_ten;  //十位output [7:0] fen_one;  //百位output [7:0] fen_ten;  //千位,  数码管输出显示seg_decode1 u1(iflag,dec1,men_one);seg_decode1 u2(iflag,dec2,men_ten);seg_decode1 u3(iflag,dec3,fen_one);seg_decode1 u4(iflag,dec4,fen_ten);endmodule //顶层模块,显示数据        
module shumaguanqudong(Din,men_one,men_ten,fen_one,fen_ten);   //码表显示驱动,合并上面的4个数码管驱动的输入与输出input  [15:0]Din;       //16位输入数据output [7:0] men_one;  //个位output [7:0] men_ten;  //十位output [7:0] fen_one;  //百位output [7:0] fen_ten;  //千位,  数码管输出显示seg_decode4 c2(.iflag(1'b0),.dec1(Din[3:0]),.dec2(Din[7:4]),.dec3(Din[11:8]),.dec4(Din[15:12]),.men_one(men_one),.men_ten(men_ten),.fen_one(fen_one),.fen_ten(fen_ten));  endmodule

原理图中,引脚分配情况
在这里插入图片描述
SW0是倒计时的使能信号mode1,高有效。
KEY0是倒计时的时钟信号
下板子的结果:
在这里插入图片描述在这里插入图片描述
到此结束!!!!!

这篇关于(一)60秒倒计时电路Logisim电路原理图和Verilog HDL 描述+ DE2-70开发板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774400

相关文章

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

用Python编写倒计时程序:详细教程

目录 引言 环境准备 基本概念 代码实现 步骤一:导入必要的库 步骤二:获取用户输入 步骤三:实现倒计时逻辑 步骤四:整合代码 运行程序 高级功能 扩展功能示例:支持分钟和小时输入 扩展功能示例:图形用户界面 (GUI) 总结 引言 倒计时程序是一个非常常见的小工具,广泛用于各种应用场景中,例如考试时间提醒、烹饪计时器、会议倒计时等。Python 作为一种

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器,按芯片来分,有以下几种: CH340PL2303CP2104FT232 一般来说,采用 CH340 芯片的适配器,性能比较稳定,价

70-java write类应用场景

在Java中,我们可以使用java.io包中的FileWriter和BufferedWriter类来写入数据到文件。以下是一个简单的例子,展示了如何使用FileWriter和BufferedWriter来写入数据到文件: import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;pub

数字电路专题:verilog 阻塞赋值和非阻塞赋值

verilog 阻塞赋值 和 非阻塞赋值 “=”阻塞赋值, ”<=”非阻塞赋值。阻塞赋值为执行完一条赋值语句,再执行下一条,可理解为顺序执行,而且赋值是立即执行; 非阻塞赋值可理解为并行执行,不考虑顺序,在 always 块语句执行完成后,才进行赋值。 如下面的阻塞赋值: //代码如下:module top(din,a,b,c,clk);input din;input clk;out

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt