当前位置: 首页 > news >正文

使用Verilog设计模块输出中位数,尽可能较少资源使用

在海康的FPGA设计岗面试中,有一道代码题,如下:

使用Verilog设计一个模块:输入3个无符号8bit数据,设计模块输出中位数,尽可能较少资源使用。
代码如下:

module median_of_3 #(parameter              WIDTH = 8
)(input                  clk              ,input      [WIDTH-1:0] A                ,input      [WIDTH-1:0] B                ,input      [WIDTH-1:0] C                ,output reg [WIDTH-1:0] Median_of_abc
);// definewire a_ge_b, b_ge_c, c_ge_a;reg [WIDTH-1:0] abc_median;// 比较逻辑assign a_ge_b = (A >= B) ? 1'b1 : 1'b0;assign b_ge_c = (B >= C) ? 1'b1 : 1'b0;assign c_ge_a = (C >= A) ? 1'b1 : 1'b0;// 多路选择器逻辑,不用进行全比较,节省资源always @(*) beginif (!a_ge_b && !b_ge_c &&  c_ge_a)      // A < B < Cabc_median = B;else if ( a_ge_b &&  b_ge_c && !c_ge_a) // C < B < Aabc_median = B;else if ( a_ge_b && !b_ge_c && !c_ge_a) // B < C < Aabc_median = C;else if (!a_ge_b &&  b_ge_c &&  c_ge_a) // A < C < Babc_median = C;elseabc_median = A;end// 输出寄存器:时序逻辑always @(posedge clk) beginMedian_of_abc <= abc_median;endendmodule

此外:1)在实际项目中,如果允许两级流水线延迟,可在a_ge_b, b_ge_c, c_ge_a处插入一级寄存器,增加性能;
2)修改多路选择器的逻辑关系,可变为求三个数的最大值,也可变为求三个数的最小值,消耗的资源和时序性能不变。

http://www.lqws.cn/news/577549.html

相关文章:

  • 华为智选焕新鸿蒙智选,继续携手IAM赋能智慧家居健康生态协同演进
  • SmartDV推出先进的H.264和H.265视频编码器和解码器IP
  • Flutter 布局之 IntrinsicHeight 组件
  • 类图+案例+代码详解:软件设计模式----生成器模式(建造者模式)
  • 系统性能优化-8 TCP缓冲区与拥塞控制
  • Java开发新变革!飞算JavaAI深度剖析与实战指南
  • 深入理解 MVCC:数据库高并发的核心引擎
  • 高效数据采集:Python与Rust完美结合
  • Redis有哪些常用应用场景?
  • 1.6 基于NICE接口的存储器访问通道扩展自定义指令的简单示例
  • 大语言模型LLM在训练/推理时的padding
  • SQL参数化查询:防注入与计划缓存的双重优势
  • 衡石科技chatbot分析手册--钉钉数据问答机器人配置
  • 设计模式之外观模式
  • 【微服务】.Net中使用Consul实现服务高可用
  • 大语言模型微调的效能控制与评估策略
  • 提示技术系列——链式提示
  • 跨主机用 Docker Compose 部署 PostgreSQL + PostGIS 主从
  • 对象池模式:减少GC的Kotlin实战指南
  • 基于 SpringBoot+Vue.js+ElementUI 的 Cosplay 论坛设计与实现7000字论文
  • LeetCode 1456. 定长子串中元音的最大数目
  • MapReduce
  • EtherCAT主站教程4--IGH主站代码详解
  • 云手机的用途都有哪些?
  • Deep Mean-Shift Priors for Image Restoration论文阅读
  • mysql mvcc
  • Hadoop WordCount 程序实现与执行指南
  • Java 案例 6 - 数组篇(基础)
  • 第 89 场周赛:山脉数组的峰值索引、车队、考场就坐、相似度为 K 的字符串
  • 大语言模型(LLM)笔记