Verilog HDL——分频 计数

2023-11-18

分频 计数
module traffic(Clk_50M, Rst, Clk30, Clk_1Hz);
input Clk_50M, Rst;
output Clk30,Clk_1Hz;


//------------分频器------------------
reg Clk_1Hz;//分频器  50M分频
reg[31:0] Cnt_1Hz;//计数
always@(posedge Clk_50M or negedge Rst)
begin
	if(!Rst)//Rst为0时  进行复位 置初值
		begin
			Cnt_1Hz <= 1;
			Clk_1Hz <= 1;
		end
	else
		begin
			if(Cnt_1Hz >= 2)//为了显示波形这里25000000临时改为2
				begin
					Cnt_1Hz <= 1;//计数器置1
					Clk_1Hz <= ~Clk_1Hz;
				end
			else
				Cnt_1Hz <= Cnt_1Hz +1;//计数
		end
end

//------------计数器------------------
reg[7:0] Cnt30;//计数器
reg Clk30;
always@(posedge Clk_1Hz or negedge Rst)
begin
	if(!Rst)
		begin
			Cnt30 <= 0;
			Clk30 <= 1;
		end
	else
		begin
			if(Cnt30 >= 30)
				begin
					Cnt30 <= 0;//计数到30清零
					Clk30 <= ~Clk30;
				end
			else
			Cnt30 <= Cnt30 + 1;
		end
end


endmodule 

仿真波形:
在这里插入图片描述

交通信号灯

在这里插入图片描述

/*
交通灯:红灯30s后转为绿灯,绿灯30s后转为红灯
*/
module traffic(Clk_50M, Rst, 
LedR_H, LedG_H, 
LedR_V, LedG_V, 
Seg7_VH, Seg7_VL, led15);
parameter S1 = 1;//x向红灯亮,y向绿灯亮
parameter S2 = 0;//x向绿灯亮,y向红灯亮
input Clk_50M, Rst;
output LedR_H, LedG_H, LedR_V, LedG_V;
output[6:0] Seg7_VH, Seg7_VL;
output led15;
reg LedR_H, LedG_H, LedR_V, LedG_V;

//------------分频器------------------
reg Clk_1Hz;//分频器  50M分频
reg[31:0] Cnt_1Hz;//计数
always@(posedge Clk_50M or negedge Rst)
begin
	if(!Rst)//Rst为0时  进行复位 置初值
		begin
			Cnt_1Hz <= 1;
			Clk_1Hz <= 1;
		end
	else
		begin
			if(Cnt_1Hz >= 25000000)
				begin
					Cnt_1Hz <= 1;//计数器置1
					Clk_1Hz <= ~Clk_1Hz;
				end
			else
				Cnt_1Hz <= Cnt_1Hz +1;//计数
		end
end

//------------计数器------------------
reg[7:0] Cnt30;//计数器
always@(posedge Clk_1Hz or negedge Rst)
begin
	if(!Rst)
		begin
			Cnt30 <= 0;
		end
	else
		begin
			if(Cnt30 >= 30)
				begin
					Cnt30 <= 0;//计数到30清零
				end
			else
			Cnt30 <= Cnt30 + 1;
		end
end

//------------BCD码转换------------------
/*
调用译码器实例
SEG7_LUT hex4(Seg7_VL, CntDis[3:0]);
SEG7_LUT hex5(Seg7_VH, CntDis[3:0]);
*/
reg[7:0] CntDis;
always@(posedge Clk_50M)//8位二进制数转换BCD码
	begin
		if(Cnt30>29)
			begin
				CntDis[7:4] <= 3;//十位
				CntDis[3:0] <= Cnt30 - 30;//个位
			end
			else if(Cnt30 > 19)
				begin
					CntDis[7:4] <= 2;//十位
					CntDis[3:0] <= Cnt30 - 20;//个位
				end
			else if(Cnt30 > 9)
				begin
					CntDis[7:4] <= 1;//十位
					CntDis[3:0] <= Cnt30 - 10;//个位
				end
			else
				CntDis <= Cnt30;//0-9
	end

	
//------------状态转换------------------
reg state;//状态转换
always@(posedge Clk_1Hz)
begin
	case(state)
		S1:
			if(Cnt30 >= 30) state <= S2;
		S2:
			if(Cnt30 >= 30) state <=S1;
		default:
			state <= S1;
	endcase
end

always@(posedge Clk_50M or negedge Rst)
begin
	if(!Rst)
		begin
			LedR_H <= 0;
			LedG_H <= 0;
			LedR_V <= 0;
			LedG_V <= 0;
		end
	else
		begin
			case(state)
				S1://横向红灯亮,纵向绿灯亮
					begin
						LedR_H <= 1;
						LedG_H <= 0;
						LedR_V <= 0;
						LedG_V <= 1;
					end
				S2://横向绿灯亮,纵向红灯亮
					begin
						LedR_H <= 0;
						LedG_H <= 1;
						LedR_V <= 1;
						LedG_V <= 0;
					end
				default:
					begin
						LedR_H <= 0;
						LedG_H <= 1;
						LedR_V <= 1;
						LedG_V <= 0;
					end
			endcase
		end
end
	assign led15 = state;
endmodule 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog HDL——分频 计数 的相关文章

  • 基于单光子探测的多脉冲周期符合远距离测距

    激光测距技术通过发射主动激光信号对目标进行探测 接收由目标漫反射回来的回波信号并进行统计 处理及换算 从而得到目标的距离 速度信息 实现对目标距离信息的探测 凭借其系统简单 操作灵活 高精度等特点 被广泛运用于民用 科研及军事等各类场合 基
  • DDR的VTT有源端接和无源端接(slua886a笔记)

    DDR的VTT有源端接和无源端接 slua886a笔记 背景 对于DDR的VTT端接 一直有说法是有源端接可降低功耗 之前一直没仔细理解其中原因 现在找了些相关的资料来介绍和对比有源和无源端接 理解有源端接的优点和降低功耗的原理 主要基于读
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • Verilog HDL——分频 计数

    分频 计数 module traffic Clk 50M Rst Clk30 Clk 1Hz input Clk 50M Rst output Clk30 Clk 1Hz 分频器 reg Clk 1Hz 分频器 50M分频 reg 31 0
  • Verilog HDL运算符

    一 逻辑运算符 逻辑与 逻辑或 逻辑非 二 关系运算符 逻辑相等 逻辑不等 全等 不全等 和 可以比较含有x和z的操作数 在模块的功能仿真中有着广泛的应用 三 位运算符 非 与 或 异或 同或 四 拼接运算符 s1 s2 sn 五 一元约简
  • FPGA学习笔记_ROM核调用与调试

    FPGA学习笔记 ROM核调用与调试 1 ROM存储器IP核的使用 2 创建 mif文件 3 In system memory content editor内存查看工具的使用 4 Signal tapII工具使用 5 Verilog 代码
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • 手把手教你Modelsim仿真【2020.4版本】

    首先新建一个文件夹 test5 打开Modelsim 依次选择 File gt Change Directory 把目录选择到创建的 test5 文件夹 创建库 依次选择 File gt New gt Library 一般我们选择第三个 库
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • 用Vscode编辑verilog代码配置

    这篇教程感觉很详细了 我这里分享一下vscode和插件的安装包链接 都是官网下载的 放心食用 用VSCode编辑verilog代码 iverilog编译 自动例化 自动补全 自动格式化等常用插件 链接 https pan baidu com
  • MOS管的知识,看这一篇就可以了

    转载 21ic电子网 2020 11 15 18 19 以下文章来源于记得诚电子设计 作者记得诚 记得诚电子设计 分享电子硬件知识 永远相信美好的事情即将发生 今天的文章简单总结一下MOS管 如下是本文目录 场效应管分类 场效应管分为结型
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • 数码管电子时钟

    文章目录 前言 一 回顾数码管 二 任务描述 三 系统框图 四 模块调用 五 模块原理图 六 工程源码 6 2 时钟计数模块代码 6 2 数码管驱动模块代码 6 3 顶层模块代码 七 仿真测试 7 1 测试代码 7 2 仿真结果 八 管脚信
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • 画时序图软件——TimeGen和Timing Designer下载

    在写实验报告的时候需要画波形图 但是手头没有很好的软件 就上网搜了一些 分享出来 这里分享的是TimeGen和Timing Designer两个软件 资源均来自网上 有侵权请联系 TimeGen使用和安装都比较简单 我发的应该里面有破解方法
  • 串口通信知识点总结

    串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串口按电气标准及协议来划分
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明

随机推荐

  • 【ssh】xshell的替代--WindTerm

    目录 WindTerm WindTerm 简介 如何关闭锁屏密码 3 功能 3 1 选中自动复制 右键粘贴复制的内容 3 2 打开软件自动连接 3 4 设置文件下载初始目录 4 可直接编辑bash命令行 5 界面管理 资源管理器 文件管理器
  • C++中struct的用法

    废话 struct是个很有用的东西呢 进入正题 struct的用处是定义一个新的类型 而这个类型里面可以是各种各样的东西 比如 struct node 定义一个新的类型叫node int a int b 110 char c double
  • ARM - UART4/串口软件实现字符串/字符的收发

    实验任务 1 在键盘输入一个字符 字符 1 并且打印在串口工具上 键盘输入 a gt 串口工具打印 b 2 串口工具输入一个字符串 按下回车键 会显示输入的字符串 头文件 ifndef UART4 H define UART4 H incl
  • 《MySQL是怎样运行的》——读书笔记

    MySQL是怎样运行的 小孩子4919 MySQL B 树 1 数据页 数据页之间双向链接 数据页内record单向链表 数据页内record分为多个组 每个组的最大记录组成数据槽 数据槽采用数组方式在页内存储 2 索引 索引记录为页的最小
  • nacos 安装并配置外部数据库

    参考链接 nacos 安装并配置外部数据库 亲测2 0 1 2 0 3 有效 zwb 121 博客园 Nacos 快速开始 下载链接 https github com alibaba nacos releases 启动服务器 Linux U
  • RocketMQ 消息过滤

    1 简介 RocketMQ分布式消息队列的消息过滤方式有别于其它MQ中间件 是在Consumer端订阅消息时 再做消息过滤的 RocketMQ这么做是在于其Producer端写入消息和Consumer端订阅消息采用分离存储的机制来实 现的
  • 拉格朗日函数(多个约束条件的极值问题)

  • Jetpack DataBinding(数据绑定库)笔记

    官方文档地址 https developer android google cn topic libraries data binding 作用或目的 将数据直接绑定到布局里面 减少了Activity Fragment的绑定控件操作 听说有
  • Nodejs net 接受包 并解码,第一次使用了 protobuf

    第一次使用 net 模块的 buffer 类型 对 buffer copy 开始不了解 走了弯路 调用的对象是 sourece 一直以为是 dest 对包进行分割 包的结构为 包内容长度 byte0 byte1 包内容 protobuf a
  • MacBook Pro 外接显示器设置竖屏

    调整步骤 系统设置偏好 gt 显示器 gt 点击排列 gt 镜像显示器 的 打上 然后切换回 显示器 此分类 gt 看到下面 的旋转了么 调整旋转90度 转自 http uiq me article 380
  • 用lingo解决易拉罐下料问题

    易拉罐下料问题 如下 程序如下 这里的xi 以万次为单位 yi 以万件为单位 model 易拉罐下料问题 max 0 100 y1 0 2226 x1 0 1833 x2 0 2618 x3 0 1695 x4 0 1571 y2 0 01
  • k8s集群搭建【1个master_1个node】 亲测成功!

    k8s集群搭建 k8s 1个master 1个node 集群搭建 步骤小结 1 安装docker 2 安装kubeadm kubectl kubelet 3 创建master节点的集群 并安装网络插件calico 4 添加node节点到集群
  • 在group by中用count(*)获取的是各个分组的条数

    第一种 在group by 中用count 获取条数 你会很神奇的发现你获取的 不是总条数 而是每个组的条数 这很有作用 但是如果你要获取总条数的话就会很麻烦 我在网上搜了说用子查询 select count 1 from select f
  • 脉冲信号参数测量仪

    脉冲信号参数测量仪 1 任务 设计并制作一个数字显示的周期性矩形脉冲信号参数测量仪 其输入阻抗为50 同时设计并制作一个标准矩形脉冲信号发生器 作为测试仪的附加功能 2 要求 1 测量脉冲信号频率 频率范围为10Hz 2MHz 测量误差的绝
  • Java设计模式——状态模式

    定义 状态模式主要用来解决对象在多种状态转换时 需要对外输出不同的行为的问题 状态模式将每个状态的行为封装到对应的一个类中方便维护 减少if else 符合 开闭原则 容易增删状态 但是会产生很多类 每个状态都要一个对应的类 当状态过多时会
  • jenkins修改镜像源

    进入 Manage Jenkins Manage Plugin gt Advanced 最下面有 Update Site 设置为 http mirrors tuna tsinghua edu cn jenkins updates updat
  • 你遇到过的测试难题(6)记一次xxl-job的故障失败没有重试机制

    你遇到过的测试难题 6 记一次xxl job的故障失败没有重试机制 你遇到过的测试难题 6 记一次xxl job的故障失败没有重试机制 业务背景 线上故障表现 故障结论 测试过程 总结 你遇到过的测试难题 6 记一次xxl job的故障失败
  • neo4j start error:系统找不到指定的路径。 Unable to create logger at ‘‘

    项目场景 Neo4j 4 3 3 community windows 这是代码文件 启动时需要进入文件夹下的bin目录 输入neo4j start 然后转入http localhost 7474 出现可供使用的图形界面 此时如果在当前目录下
  • 算法学习01-选择、冒泡、插入排序

    1 选择排序 选择排序 0到n 1位置 找到最小值 放到0位置 1到n 1位置 找到最小值 放到1位置 i到n 1位置 找到最小值 放到i位置 以此类推 public class SelectionSort public static vo
  • Verilog HDL——分频 计数

    分频 计数 module traffic Clk 50M Rst Clk30 Clk 1Hz input Clk 50M Rst output Clk30 Clk 1Hz 分频器 reg Clk 1Hz 分频器 50M分频 reg 31 0