输入5个数,求中值,verilog实现

1实现思路

有5个数a,b,c,d,e

将其分为3组,ab, cd, e
e留到最后再比较,
先比较ab 和 cd
设得出了ab的较小值 a a < b
设得出了cd的较小值 c c < d

第一个分支

比较ac, 设a < c
那么 a < c < d , a < b
将b,e比较 ,
1,b< e
a < c < d
a < b < e
接着对c和b比较,
c<b,则 a<c<b<e,
再比较b、d,若b<d,b是中位数,若b>d,d是中位数
若b<c,则a<b<c<d,
再比较c、e,若c<e,c是中位数,若c>e,e是中位数
2,b>e
a<c<d
a<b,e<b
比较e,c,若e<c
比较b,c,若b<c,b是中位数,否则c是中位数
若e>c,
比较d,e,若d<e,d是中位数,否则是中位数

第2个分支

若 a > c
则按照上面的步骤推即可。

verilog实现


module sort5(input       clk,input       rst_n,input [7:0] data1,input [7:0] data2,input [7:0] data3,input [7:0] data4,input [7:0] data5,output reg [7:0] max_data,output reg [7:0] mid_data,output reg [7:0] min_data
);//-----------第一步-----------
reg [7:0] min_d12;
reg [7:0] max_d12;
//对 data1 和data2 比较
always@(posedge clk or negedge rst_n)beginif(!rst_n) beginmin_d12 <= 8'd0;max_d12 <= 8'd0;endelse if(data2 < data1)  beginmin_d12 <= data2;max_d12 <= data1;endelse  beginmin_d12 <= data1;max_d12 <= data2;end
endreg [7:0] min_d34;
reg [7:0] max_d34;
//对 data3 和data4 比较
always@(posedge clk or negedge rst_n)beginif(!rst_n) beginmin_d34 <= 8'd0;max_d34 <= 8'd0;endelse if(data3 < data4) begin min_d34 <= data3;max_d34 <= data4;endelse beginmin_d34 <= data4;max_d34 <= data3;end
end//-----------第2步-----------
reg [7:0] data5_reg;
always@(posedge clk or negedge rst_n)beginif(!rst_n) data5_reg <= 8'd0; else data5_reg <= data5; 
endreg [7:0] min_data;    //求最小值
always@(posedge clk or negedge rst_n)beginif(!rst_n) beginmin_data <= 8'd0; endelse if(min_d34 < min_d12)  beginif(min_d34 < data5_reg)min_data <= min_d34; else min_data <= data5_reg; endelse  beginif(min_d12 < data5_reg)min_data <= min_d12; else min_data <= data5_reg; end
endreg [7:0] max_data;     //求最大值
always@(posedge clk or negedge rst_n)beginif(!rst_n) beginmax_data <= 8'd0; endelse if(max_d34 < max_d12)  beginif(max_d12 < data5_reg)max_data <= data5_reg; else max_data <= max_d12; endelse  beginif(max_d34 < data5_reg)max_data <= data5_reg; else max_data <= max_d34; end
end//得到5个数的中值
always@(posedge clk or negedge rst_n)beginif(!rst_n) beginmid_data<= 8'd0;endelse if(min_d12 < min_d34) begin if(max_d12 < data5_reg)  begin   if(min_d34 < max_d12)   if(max_d12 < data5_reg)mid_data <= max_d12;else mid_data <= data5_reg;else if(max_d34 < data5_reg)mid_data <= max_d34;else mid_data <= data5_reg;endelse  beginif(data5_reg < min_d34) if(max_d12 < min_d34)mid_data <= max_d12;else mid_data <= min_d34;else if(max_d34 < data5_reg)mid_data <= max_d34;else mid_data <= data5_reg;endendelse beginif(max_d34 < data5_reg)  begin   if(min_d12 < max_d12)   if(max_d34 < data5_reg)mid_data <= max_d34;else mid_data <= data5_reg;else if(max_d12 < data5_reg)mid_data <= max_d12;else mid_data <= data5_reg;endelse  beginif(data5_reg < min_d12) if(max_d34 < min_d12)mid_data <= max_d34;else mid_data <= min_d12;else if(max_d12 < data5_reg)mid_data <= max_d12;else mid_data <= data5_reg;end end
end

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Xinstall全链路解决方案,让社交App推广效果倍增!

随着互联网的飞速发展&#xff0c;社交App如雨后春笋般涌现&#xff0c;然而&#xff0c;如何在激烈的市场竞争中脱颖而出&#xff0c;成为每个推广者亟待解决的问题。今天&#xff0c;就让我们来揭秘Xinstall如何助力社交App打破运营推广瓶颈&#xff0c;让你的推广之路更加顺…

MyBatis 基本操作 - XML版

目录 配置xml文件 一&#xff0c;查询 - Select 1.1 全列查询 1.2 赋值问题 二&#xff0c;新增 - insert 2.1 使用对象插入 2.2 获取主键 三&#xff0c;删除 - delete 四&#xff0c;修改 - update 配置xml文件 <?xml version"1.0" encoding"U…

井盖状态检测数据集

井盖状态检测数据集 yolo格式 五种类别&#xff1a;broke(井盖破损)&#xff0c;good(完好)&#xff0c;circle(边圈破损)&#xff0c;lose(井盖丢失)&#xff0c;uncovered(井盖位移/未覆盖全) 训练数据已划分&#xff0c;配置文件稍做路径改动即可训练。 训练集&#xff1a;1…

k8s 中的 Ingress 简介

一、关于 Ingress Ingress 是 K8s 中的一个 API 对象&#xff0c;用于管理和配置外部对集群内服务的访问。它可定义 HTTP 和 HTTPS 路由规则&#xff0c;将请求从集群外部的负载均衡器引导到相应的服务。Ingress 的灵活性使得我们能够实现高级的应用程序路由、SSL 终端和负载均…

【代码随想录Day22】回溯算法Part01

理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 回溯算法模板框架&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&…

深兰科技荣获“2024年度人工智能最具商业合作价值企业”奖

9月19日&#xff0c;以“释放AI应用价值&#xff0c;发展新质生产力”为主题的“AIAC2024人工智能应用大会”在北京隆重举行。大会揭晓了“AI卓智奖”年度人工智能创新评选的获奖榜单&#xff0c;深兰科技荣获“2024年度人工智能最具商业合作价值企业”称号&#xff0c;同时&am…

【老板必看!】电脑怎么看使用软件时间记录?一文读懂5种超实用的方法!

在企业管理中&#xff0c;电脑虽不善言语、不会说话&#xff0c;但会留下无数线索&#xff0c;就像一场未解之谜&#xff0c;等待着各位福尔摩斯得到来&#xff0c;去揭开它的秘密面纱。 你是否曾好奇过&#xff0c;当你不在的时候&#xff0c;员工都在用电脑都在忙些什么&…

超重磅!青否交互式数字人2.0正式发布,支持流式输入!

青否交互式数字人自今年1月10日发布后&#xff0c;好评不断&#xff01;是行业内第一家支持交互式数字人源码独立部署的。 今天&#xff0c;交互式数字人2.0版本重磅发布&#xff01; 0.5秒反应速度 数字人克隆和声音克隆算法深度优化&#xff0c;支持流式输入&#xff0c;交互…

全志A133 android10 适配EC20 4G模块

一&#xff0c;移植适配 1. 驱动移植 代码路径&#xff1a;longan/kernel/linux-4.9/drivers/usb/serial/option.c diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 9f96dd2..2f25466 100644 --- a/drivers/usb/serial/option.cb/drivers/us…

12.第二阶段x86游戏实战2-CE找基地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

规模化电动汽车接入配电网调度方法

规模日益增长的电动汽车和可再生能源带来的不确定性给配电网的安全运营带来了严峻挑战。为综合考虑多重不确定性、平衡运营成本与系统可靠性,首先,提出一种基于分布鲁棒联合机会约束的电动汽车-配电网充放电调度模型。该模型将节点电压、支路功率、备用需求等通过联合机会约束建…

常用函数式接口的使用

FunctionalInterface注解 函数式接口在java中是指:有且仅有一个抽象方法的接口。 虽然知道怎么使用&#xff0c;但是没有搞懂使用场景&#xff0c;暂且记录下使用方法吧&#xff0c;不至于看到源码的时候不知所云。 要我自己写代码&#xff0c;我是想不起来这样用的&#xff0…

轻松掌控资产:企业必备的智能管理解决方案

在信息化管理日益重要的今天&#xff0c;高效管理企业的固定资产成为亟待解决的问题。我们深知企业在资产管理方面面临的挑战&#xff0c;因此推出了一款全新的资产管理解决方案&#xff0c;旨在帮助企业轻松应对资产管理中的各种难题。 特色功能 1. 资产申购 员工可通过系统便…

计算机毕业设计之:教学平台微信小程序(

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

YOLOv5的训练技巧汇总

文章目录 前言训练技巧1.训练预热 Warmup1.1 什么是训练预热 Warmup&#xff1f;1.2 常见的训练预热类型1.3 yolov5里面的warmup 2.余弦退火调整学习率 CosineAnnealingLR2.1 解释2.2 yolov5中的余弦退火 3.自适应锚框 Autoanchor3.1 什么是anchor?3.1 yolov5中的默认锚框3.3 …

【网络编程】socket套接字|sockaddr|sockaddr_in|通信过程

目录 ​编辑 源IP地址和目的IP地址 Socket 网络字节序 socket编程接口 sockaddr结构 sockaddr sockaddr_in(IPv4) sockaddr_in(IPv6) 完整的套接字&#xff08;socket&#xff09;通信过程 创建socket套接字 bind绑定套接字 listen建立监听 accept接受连接 connect…

OpenCV系列教程二:基本图像增强(数值运算)、滤波器(去噪、边缘检测)

文章目录 一、基本图像增强&#xff08;数值运算&#xff09;1.1 加法 &#xff08;cv2.add&#xff09;1.1.1 图像与标量相加&#xff08;调节亮度&#xff09;1.1.2 图像与图像相加&#xff08;两个图像shape要相同&#xff09;1.1.3 图像的加权加法&#xff08;渐变切换&…

身份证识别接口的应用场景和作用

引言 在信息化与数字化高速发展的今天&#xff0c;身份证作为个人身份的重要证明文件&#xff0c;在各行各业的应用越来越广泛。传统的身份证信息录入和审核过程通常需要人工操作&#xff0c;不仅效率低下&#xff0c;而且容易出现错误。为了解决这些问题&#xff0c;身份证识别…

C++入门基础知识八

1.介绍new与delete 1.malloc和free是函数&#xff0c;new和delete是操作符 2.malloc申请的空间不会初始化&#xff0c;new可以初始化 3.malloc申请空间失败时&#xff0c;返回的是NULL&#xff0c;因此必须判空&#xff0c;new不需要&#xff0c;但是new需要捕获异常 4.申请…

Kyutai 开源对话模型 Moshi;李飞飞空间智能公司已筹集超过 2.3 亿美元丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…