输入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.mzph.cn/web/53193.shtml

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

相关文章

2024年超好用的公司加密软件分享|十款企业防泄密软件推荐

在数字化时代&#xff0c;企业数据的安全性变得尤为重要。随着网络攻击和数据泄露事件的频发&#xff0c;企业需要采取有效的措施来保护敏感信息。加密软件作为一种重要的数据保护工具&#xff0c;能够帮助企业防止数据泄露和未经授权的访问。本文将为您推荐十款2024年超好用的…

【梯度下降算法学习笔记】

梯度下降单参数求解 经过之前的学习我们来引入梯度下降的理念 α \alpha α为学习率 w 1 w 初 − α ∂ J ( w ) ∂ w w_1w_初-\alpha\frac{\partial J(w)}{\partial w} w1​w初​−α∂w∂J(w)​ w 2 w 1 − α ∂ J ( w 1 ) ∂ w 1 w_2w_1-\alpha\frac{\partial J(w_1)}…

【车载以太网】【SOME/IP】Wireshark 解析

目录 ​​​​​​​Wireshark 官方插件 相关代码: 启用协议插件 Lua插件 测试数据包 Wireshark 下载链接:Wireshark Go DeepSOMEIP插件介绍:https://www.wireshark.org/docs/dfref/s/someip.html官方插件 Wireshark从3.2版本开始支持SOME/IP,启用相应的插件即可以…

pikachu XXE(XML外部实体注入)通关

靶场&#xff1a;pikachu 环境: 系统&#xff1a;Windows10 服务器&#xff1a;PHPstudy2018 靶场&#xff1a;pikachu 关卡提示说&#xff1a;这是一个接收xml数据的api 常用的Payload 回显 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY …

.NET内网实战:通过命令行解密Web.config

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。 02基本介绍 03编码实现 在.NET应用系统中&#xff0c;保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionC…

【Git原理与使用】多人协作与开发模型(2)

目录 一、多人协作 (一)多人协作一 1、情景 2、 origin/master 3、git branch 4、远程链接 5、总结 (二)多人协作二 1、引言 2、情景 3、流程 4、解决方法 二、企业级开发模型 1、DevOps背景 2、DevOps是什么 3、DevCps与git的关系 4、系统开发环境 5、Git分支设计规范 6、企业…

ACM digital library的高级检索

内容来自ACM Digital Library的高级检索 (tsinghua.edu.cn) 1.搜索源 默认的是ACM出版的全文数据库(检索免费&#xff0c;阅读付费需订阅&#xff0c;通过各学校校园网免费阅读全文&#xff09; The ACM Guide to Computing literature用于检索计算机学科文献&#xff0c;除…

B端管理系统要提升,观摩优秀作品是捷径之一。

观摩优秀的作品可以帮助B端管理系统的设计团队不断学习和进步&#xff0c;从而提升系统的设计水平和用户体验&#xff0c;为企业的发展和竞争力提供有力的支持。 这里分享一批国外的优秀B端系统界面&#xff0c;供大家欣赏。

【毕业设计】基于 PHP 开发的社区交流系统

基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台&#xff0c;用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例&#xff0c;包括用户注册、登录、发布帖子、回复帖子等功能。 技术栈 前端&#xff1a;HTML, CSS, JavaScr…

【vue】vue3+ts对接科大讯飞大模型3.5智能AI

如今ai步及生活的方方面面,你是否也想在自己的网站接入ai呢&#xff1f;今天分享科大讯飞大模型3.5智能AI对接。 获取APPID、APISecret、APIKey 讯飞开放平台注册登录控制台创建自己的应用复制备用 准备工作做好,直接开始上代码了。 源码参考 <script setup lang"t…

软件自动定时启动器-添加可执行文件软件,设置启动的时间,也可以设置关闭的时间-供大家学习研究参考

点击添加软件&#xff0c;可以添加可执行文件软件&#xff0c;设置启动的时间&#xff0c;也可以设置关闭的时间 注意&#xff0c;时间为00&#xff1a;00&#xff1a;00 等于没设置&#xff0c;这个时间不在设置范围&#xff0c;其他任何时间都可以。 下载地址&#xff1a; h…

飞驰云联FTP替代方案:安全高效文件传输的新选择

FTP协议广泛应用各行业的文件传输场景中&#xff0c;由于FTP应用获取门槛低、使用普遍&#xff0c;因此大部分企业都习惯使用FTP进行文件传输。然而面临激增的数据量和网络安全威胁的不断演变&#xff0c;FTP在传输安全性与传输性能上有所欠缺&#xff0c;无法满足企业现在的高…

tomcat服务器

tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样&#xff0c;具有处理 HTML 页面的功能&#xff0c;然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx&#x…

【Vue】VueRouter路由

系列文章目录 第七章 VueRouter路由 文章目录 系列文章目录第一节&#xff1a;VueRouter基础一、安装&#xff1a;二、基本使用&#xff1a;1. 创建路由代码&#xff1a;Single Page Application&#xff1a;SPA2. 使用路由3. 展示路由&#xff1a; 二、嵌套路由三、路由传参1…

【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

计算机网络33——文件系统

1、chmod 2、chown 需要有root权限 3、link 链接 4、unlink 创建临时文件&#xff0c;用于非正常退出 5、vi vi可以打开文件夹 ../是向外一个文件夹 6、ls ls 可以加很多路径&#xff0c;路径可以是文件夹&#xff0c;也可以是文件 ---------------------------------…

科创孵化昌平,创新创业求发展

昌平区&#xff0c;作为北京市科技创新和产业发展的新高地&#xff0c;近年来在多个前沿领域展现出蓬勃的生命力和巨大的发展潜力。在这片充满活力的土地上&#xff0c;青年创业者们正以前所未有的热情和智慧&#xff0c;投身于创新创业的大潮中&#xff0c;共同书写着昌平区发…

qt操作excel(QAxObject详细介绍)

一.QAxObject 概念介绍 QAxObject 是 Qt 框架中的一个类&#xff0c;专门用于与 ActiveX 控件和 COM&#xff08;组件对象模型&#xff09;对象进行交互。它为开发者提供了一种方便的方式来使用 Windows 平台上的 COM 组件&#xff0c;使得在 Qt 应用程序中调用这些组件的功能…

使用requestAnimationFrame实现精准倒计时

实现精准倒计时是一个常见的需求&#xff0c;尤其是在开发活动预告、限时优惠、赛事计时等场景中。实现精准倒计时的关键在于精确计算剩余时间&#xff0c;并确保时间更新的频率足够高&#xff0c;以保证显示时间的准确性。以下是一些实现精准倒计时的方法和技巧&#xff1a; …

python植物大战僵尸项目源码【免费】

植物大战僵尸是一款经典的塔防游戏&#xff0c;玩家通过种植各种植物来抵御僵尸的进攻。 源码下载地址&#xff1a; 植物大战僵尸项目源码 提取码: 8muq