【Verilog】big_small_cnt

通用大小计数器

`timescale 1ns / 1ps
//
// Company: 
// Engineer:    wengf
// Create Date: 
// Design Name: 
// Module Name: big_small_cnt
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// Dependencies: 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 通用的大小计数器,输入想要开始的条件,直到条件终止
//
module big_small_cnt(
clk       ,
rst       ,
clk_p     ,
start     ,//BIG_LENGTH,// 添加big_cnts  ,
small_cnts);
//    
parameter BIG_LENGTH=16'd8;
parameter SMALL_LENGTH=8'd11;
//
input clk,rst,clk_p,start;
//input [15:0] BIG_LENGTH;//添加output [15:0] big_cnts;
output [7:0] small_cnts;
//
reg [7:0] small_cnts;
always @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginsmall_cnts<=8'hff;endelse if(clk_p)beginif(start)//起始位置beginsmall_cnts<=8'd0;	endelse if((small_cnts==SMALL_LENGTH-1)&&(big_cnts<BIG_LENGTH-1))//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,自动停止beginsmall_cnts<=8'd0;		endelse if(big_cnts<=BIG_LENGTH-1)//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,结束循环,保持循环达不到的最大值beginsmall_cnts<=small_cnts +1'b1;			endelsebeginsmall_cnts<=small_cnts;		endendelsebeginsmall_cnts<=small_cnts;			end
end
//
reg [15:0] big_cnts;
always @ (posedge clk or posedge rst)
beginif(rst)beginbig_cnts<=16'hffff;endelse if((start)&&(clk_p))//起始位置 beginbig_cnts<=16'd0;	endelse if((small_cnts==SMALL_LENGTH-1)&&(clk_p))所需长度减1,最大值受最小值控制,按照最小值走几个周期即可。beginbig_cnts<=big_cnts + 1'b1;		endelsebeginbig_cnts<=big_cnts;			end
end
//endmodule

通用大小计数器,去除 clk_p

`timescale 1ns / 1ps
//
// Company: 
// Engineer:    wengf
// Create Date: 
// Design Name: 
// Module Name: big_small_cnt
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// Dependencies: 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 通用的大小计数器,输入想要开始的条件,直到条件终止
//
module big_small_cnt(clk             ,rst             ,start           ,forward_cnts    ,backward_cnts   , big_cnts        ,small_cnts      ,small_pulse_start,small_pulse_end,pulse_end
);parameter BIG_LENGTH=16'd8;
parameter SMALL_LENGTH=8'd8;
parameter COUNT = BIG_LENGTH * SMALL_LENGTH;input clk,rst,start;
output [15:0] forward_cnts,backward_cnts;
output [15:0] big_cnts;
output [7 :0] small_cnts;
output small_pulse_start;
output small_pulse_end;
output pulse_end;reg [15:0] forward_cnts,backward_cnts;
reg [15:0] big_cnts;
reg [7:0] small_cnts;
reg small_pulse_start,small_pulse_end,pulse_end;always @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginforward_cnts<=16'hffff;endelse if(start)//起始位置beginforward_cnts<=16'd0;	endelse if(big_cnts<=BIG_LENGTH-1)//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,结束循环,保持循环达不到的最大值beginforward_cnts<=forward_cnts +1'b1;			endelsebeginforward_cnts<=forward_cnts;		end
endalways @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginbackward_cnts <= 16'hffff;endelse if(start)//起始位置beginbackward_cnts <= COUNT-1'b1;	endelse if(big_cnts<=BIG_LENGTH-1)//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,结束循环,保持循环达不到的最大值beginbackward_cnts<=backward_cnts-1'b1;			endelsebeginbackward_cnts<=backward_cnts;		end
endalways @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginsmall_cnts<=8'hff;endelse if(start)//起始位置beginsmall_cnts<=8'd0;	endelse if((small_cnts==SMALL_LENGTH-1)&&(big_cnts<BIG_LENGTH-1))//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,自动停止beginsmall_cnts<=8'd0;		endelse if(big_cnts<=BIG_LENGTH-1)//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,结束循环,保持循环达不到的最大值beginsmall_cnts<=small_cnts +1'b1;			endelsebeginsmall_cnts<=small_cnts;		end
endalways @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginsmall_pulse_start<=1'b0;endelse if(start)//起始位置beginsmall_pulse_start<=1'b1;endelse if((small_cnts==SMALL_LENGTH-1)&&(big_cnts<BIG_LENGTH-1))//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,自动停止beginsmall_pulse_start<=1'b1;	endelsebeginsmall_pulse_start<=1'b0;	end
endalways @ (posedge clk or posedge rst)//小计数器
beginif(rst)beginsmall_pulse_end <= 1'b0;endelse if(start)//起始位置beginsmall_pulse_end <= 1'b0;endelse if(small_cnts==SMALL_LENGTH-2)//所需长度减1,在这里面进行循环,当big_cnt大于该长度后,自动停止beginsmall_pulse_end <=8'd1;		endelsebeginsmall_pulse_end <= 1'b0;end
endalways @ (posedge clk or posedge rst)
beginif(rst)beginbig_cnts<=16'hffff;endelse if(start)//起始位置 beginbig_cnts<=16'd0;	endelse if(small_cnts==SMALL_LENGTH-1) beginbig_cnts<=big_cnts + 1'b1;		endelsebeginbig_cnts<=big_cnts;			end
end// pulse_end
always @ (posedge clk or posedge rst)
beginif(rst)beginpulse_end<=1'b0;endelse if(start)//起始位置 beginpulse_end <= 1'b0;endelse if((small_cnts==SMALL_LENGTH-1) && (big_cnts==BIG_LENGTH-1)) beginpulse_end <= 1'b1;endelsebeginpulse_end <= 1'b0;end
endendmodule

在这里插入图片描述

wire [15:0] forward_cnts,backward_cnts;
wire [15:0] big_cnts;
wire [7:0] small_cnts;
wire small_pulse_start,small_pulse_end;
wire pulse_end;big_small_cnt
# ( .BIG_LENGTH(16'd8), .SMALL_LENGTH(16'd3))
big_small_cnt(.clk                (clk),.rst                (rst),.start              (cnts == 8'd10),.forward_cnts       (forward_cnts),.backward_cnts      (backward_cnts),.big_cnts           (big_cnts),.small_cnts         (small_cnts),.small_pulse_start  (small_pulse_start),.small_pulse_end    (small_pulse_end),.pulse_end          (pulse_end)
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“人工智能+”推进新质生产力发展论坛暨工作室实践实训基地授牌仪式圆满结束

4月27日&#xff0c;由江西财经大学现代经济管理学院主办的“人工智能”推进新质生产力发展论坛暨“江财现经管泰迪数智技术”校企工作室实践实训基地授牌仪式在江西财经大学现代经济管理学院共青城校区举行&#xff0c;学院院长王金海&#xff0c;副院长丁美东&#xff0c;副院…

项目解决方案:多台poe摄像机接到3台NVR上,如何进行统一管理

目录 一、概述 二、建设目标及需求 三、设计依据与设计原则 1、先进性与适用性 2、经济性与实用性 3、可靠性与安全性 4、开放性 5、可扩充性 6、追求最优化的系统设备配置 7、提高监管力度与综合管理水平 四、建设方案设计 &#xff08;一&#xff09;系统方案设计…

【牛客】[HNOI2003]激光炸弹

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 二维前缀和板题。 注意从&#xff08;1,1&#xff09;开始存即可&#xff0c;所以每次输入x,y之后&#xff0c;要x,y。 因为m的范围最大为…

气膜体育馆内部的采光效果如何?—轻空间

气膜体育馆内部的采光效果如何&#xff1f;这是许多人对这种创新建筑的一个关键关注点。 首先&#xff0c;气膜体育馆的采光性非常好。阳光透过屋顶时以漫射光的方式进入室内&#xff0c;这种透射方式使得室内的光线柔和而均匀。从内部观察&#xff0c;整个屋顶就像一个连续的明…

西安银行效益口碑双降:不良率连增,新董事长梁邦海能否救火?

撰稿|行星 来源|贝多财经 近日&#xff0c;西安银行&#xff08;SH:600928&#xff09;方面终于传来了新任掌门人的音讯。该行在2023年财报中正式宣布&#xff0c;董事会选举梁邦海为董事长&#xff0c;在监管部门核准梁邦海的任职资格后&#xff0c;梁邦海将不再担任该行行长…

ShowMeAI | 这是我们知道的,关于〖Suno 〗和〖AI音乐〗的一切

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; Suno 是一款AI音乐创作工具&#xff0c;可以通过提示词和设置生成一段音乐&#xff0c;而且可以包含歌词和人声 (这非常难得)。在经历了两年探索之后…

Python | Leetcode Python题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; class Solution:def minWindow(self, s: str, t: str) -> str:ans_left, ans_right -1, len(s)left 0cnt_s Counter() # s 子串字母的出现次数cnt_t Counter(t) # t 中字母的出现次数less len(cnt_t) # 有 less 种字母的出现次数…

python入门demo实例-个人信息收集页面

dd 今天是python入门day2&#xff0c;先看一下本案例demo的样子吧~ 资源下载&#xff1a; python案例demo个人信息收集页面实现资源-CSDN文库 实现上述界面需要pythonhtml实现&#xff0c;需通过在Web浏览器的地址栏中输入 http://127.0.0.1:5000/打开界面&#xff0c;127.0.…

云密码机的定义与特点

云密码机&#xff0c;作为云计算环境中保障数据安全的关键设备&#xff0c;其重要性不言而喻。它基于虚拟化技术&#xff0c;通过提供高性能的数据加解密、密钥管理等服务&#xff0c;确保云上数据的安全与隐私。下面&#xff0c;安策科技将从云密码机的定义、特点、应用场景以…

精益生产咨询公司在企业转型中发挥的作用有哪些?

在全球化竞争日益激烈的今天&#xff0c;企业转型已成为许多组织求生存、谋发展的必经之路。而在这条道路上&#xff0c;精益生产咨询公司的作用愈发凸显&#xff0c;它们如同企业转型的得力助手&#xff0c;帮助企业在复杂的商业环境中找到新的增长点&#xff0c;实现更高效、…

CRMEB 多商户 Java版 v1.5正式发布,v1.6更新预告新鲜出炉

CRMEB 多商户 Java版 v1.5正式发布啦&#xff01; 新增卡密商品、云盘商品、小程序外链生成器工具、新增商家主动退款、商品列表批量操作&#xff0c;以及后台UI的全面优化升级等。多商户Java版的用户朋友们&#xff0c;新版本可以安排起来啦&#xff01; 同时&#xff0c;多商…

WingPro for Mac注册激活版:Python开发的强大引擎

对于Python开发者来说&#xff0c;一款好的开发工具能够极大地提高开发效率。而WingPro for Mac正是这样一款强大的引擎&#xff0c;让Python开发变得更加高效和便捷。 WingPro for Mac拥有直观的用户界面和强大的调试器&#xff0c;能够快速定位问题并修复错误。它支持PEP8风格…

N7552A是德科技N7552A电子校准件

181/2461/8938产品概述&#xff1a; 更小巧轻便的 2 端口模块&#xff0c;支持 3.5 mm 或 N 型 50 Ω 连接器&#xff0c;能够将校准时间缩短一半 特点 频率范围&#xff1a;直流至 9 GHz 使用 N 型或 3.5 mm 连接器 更小巧轻便的 2 端口电子校准件&#xff08;ECal&#xff…

数仓分层——ODS、DW、ADS

一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法&#xff0c;它将数据仓库划分为不同的层次或级别&#xff0c;每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问&#xff0c;并提供一种清晰的结构来支持…

java接受入参是xml格式参数demo

java接受入参是xml格式参数demo 依赖demo1. xml入参定义2.接口定义3. postman请求4. 结果 注解说明 依赖 pom依赖 jackson-dataformat-xml <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

EPAI手绘建模APP数值几何变换

(10) 数值几何变换 图 257 数值几何变换工具栏 ① 数值几何变换和交互式几何变换都包括移动、旋转、缩放模型。但是交互式几何变换变换时的变换轴是模型自身中心为变换中心&#xff0c;以X、Y、Z方向的为变换方向&#xff0c;而数值几何变换可以指定变换中心和变换方向。另外&a…

(超简单)SpringBoot中简单用工厂模式来实现

简单讲述业务需求 业务需要根据不同的类型返回不同的用户列表&#xff0c;比如按角色查询用户列表、按机构查询用户列表&#xff0c;用户信息需要从数据库中查询&#xff0c;因为不同的类型查询的逻辑不相同&#xff0c;因此简单用工厂模式来设计一下&#xff1b; 首先新建一个…

数据结构-线性表-应用题-2.2-12

1&#xff09;算法的基本设计思想&#xff1a;依次扫描数组的每一个元素&#xff0c;将第一个遇到的整数num保存到c中&#xff0c;count记为1&#xff0c;若遇到的下一个整数还是等于num,count,否则count--,当计数减到0时&#xff0c;将遇到的下一个整数保存到c中&#xff0c;计…

CSS引用

CSS定义 层叠样式表&#xff1a;&#xff08;Cascading Style Sheets,缩写为css&#xff09;,是一种样式表语言&#xff0c;用来描述HTML文档的呈现&#xff08;美化内容&#xff09; 书写位置&#xff1a;title标签下方添加style双标签&#xff0c;style标签里写入CSS代码 在s…