码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数字IC手撕代码-XX公司笔试真题(数据流最大值)


      前言:

            本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。

    目录如下:

    1.数字IC手撕代码-分频器(任意偶数分频)

    2.数字IC手撕代码-分频器(任意奇数分频)

    3.数字IC手撕代码-分频器(任意小数分频)

    4.数字IC手撕代码-异步复位同步释放

    5.数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

    6.数字IC手撕代码-序列检测(状态机写法)

    7.数字IC手撕代码-序列检测(移位寄存器写法)

    8.数字IC手撕代码-半加器、全加器

    9.数字IC手撕代码-串转并、并转串

    10.数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

    11.数字IC手撕代码-有限状态机FSM-饮料机

    12.数字IC手撕代码-握手信号(READY-VALID)

    13.数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

    14.数字IC手撕代码-泰凌微笔试真题

    15.数字IC手撕代码-平头哥技术终面手撕真题

    16.数字IC手撕代码-兆易创新笔试真题

    17.数字IC手撕代码-乐鑫科技笔试真题(4倍频)

    18.数字IC手撕代码-双端口RAM(dual-port-RAM)

            ...持续更新

     更多手撕代码题可以前往 数字IC手撕代码--题库


    目录

    题目描述

    解题思路

    代码

    testbench

    波形


    题目描述

            已知一段数据流 data 输入,在 datain_ena 为高时有效时,请将这段数据流的最大次大值 选出,在一段 datain_ena 结束之后给出相应的结果 max,submax 和结果使能 dataout_ena。

    1. Input clk;
    2. Input [4:0] datain;
    3. Input datain_ena;
    4. Output [4:0] max;
    5. Output [4:0] submax;
    6. Output dataout_ena;

    解题思路

            这道题比较简单,比较大小,要注意的就两个点:

            ① 当输入的datain不超过两个时,dataout_ena不能拉高,只有输入至少两个数时,才有max和submax均有意义。

            ② 考虑所有可能情况,输入的数据比max大时,将max替换为datain,submax替换为max即可;当输入数据等于max时,将submax数据替换为datain,这样有max=submax(看题意理解,可以可以不这么做);当输入数据小于max但大于等于submax时,将submax替换为datain;当输入数据小于submax时,什么都不做。

    代码

    1. module find_max(
    2. input clk ,
    3. input [4:0] datain ,
    4. input datain_ena ,
    5. input rstn ,
    6. output reg [4:0] max ,
    7. output reg [4:0] submax ,
    8. output dataout_ena
    9. );
    10. always @(posedge clk)begin
    11. if(!rstn)begin
    12. max <= 5'd0;
    13. submax <= 5'd0;
    14. end
    15. else if(datain_ena == 1'b1)begin
    16. if(datain > max)begin
    17. max <= datain;
    18. submax <= max;
    19. end
    20. else if(datain == max)begin
    21. submax <= datain;
    22. end
    23. else if(datain >=submax && datain < max)begin
    24. submax <= datain;
    25. end
    26. end
    27. end
    28. reg [1:0] count;
    29. always @(posedge clk)begin
    30. if(!rstn)begin
    31. count <= 2'd0;
    32. end
    33. else if(datain_ena && count < 2'd3)begin
    34. count <= count + 1'b1;
    35. end
    36. end
    37. assign dataout_ena = (count >= 2) ? 1:0; //if input number >= 2 , dataout_ena = 1
    38. endmodule

    testbench

    1. module find_max_tb();
    2. reg clk,rstn;
    3. reg [4:0] datain;
    4. reg datain_ena;
    5. wire [4:0] max,submax;
    6. wire dataout_ena;
    7. always #5 clk <= ~clk;
    8. initial begin
    9. clk <= 1'b0;
    10. rstn <= 1'b0;
    11. datain_ena <= 1'b0;
    12. #16
    13. rstn <= 1'b1;
    14. #20
    15. datain_ena <= 1'b1;
    16. datain <= 5'd2;
    17. #10
    18. datain <= 5'd3;
    19. #10
    20. datain <= 5'd7;
    21. #10
    22. datain <= 5'd4;
    23. #10
    24. datain <= 5'd9;
    25. #20
    26. datain_ena <= 1'b0;
    27. #200
    28. $finish();
    29. end
    30. //dump fsdb
    31. initial begin
    32. $fsdbDumpfile("find_max.fsdb");
    33. $fsdbDumpvars(0);
    34. end
    35. find_max u_find_max(
    36. .clk (clk) ,
    37. .rstn (rstn) ,
    38. .datain (datain) ,
    39. .datain_ena (datain_ena) ,
    40. .max (max) ,
    41. .submax (submax) ,
    42. .dataout_ena(dataout_ena)
    43. );
    44. endmodule

    波形

     从波形可以看到,输入两个datain之后dataout_ena才会拉高。满足所有考虑的情况。


     更多手撕代码题可以前往 数字IC手撕代码--题库

  • 相关阅读:
    相机图像质量研究(40)常见问题总结:显示器对成像的影响--画面泛白
    状态模式
    STL教程7-set、pair对组和仿函数
    运维常见硬件故障的排查与修复
    【学习笔记03】node.js搭建一个简易的服务器
    Kubernetes 数据存储:从理论到实践的全面指南
    基于亨利气体溶解度优化算法的函数寻优算法
    paddlepaddle2.6,paddleorc2.8,cuda12,cudnn,nccl,python10环境
    如何在微信视频号上保存喜欢的视频?
    Windows&Linux文件传输方式总结
  • 原文地址:https://blog.csdn.net/qq_57502075/article/details/127835123
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号