【2023 睿思芯科 笔试题】~ 题目及参考答案

【2023 睿思芯科 笔试题】~ 题目及参考答案

码农世界 2024-05-14 前端 79 次浏览 0个评论

文章目录

  • 1. 题目 & 答案
    • 单选题
    • 编程题
      • 问题1:
      • 解析1:
      • 问题2:
      • 解析2:
      • 声明

        名称如标题所示,希望大家正确食用(点赞+转发+评论)

        本次笔试题以两种形式考察的,分别是:选择题(包括单选和多选)和编程题。这里强调的是笔试全英文!!!其实不光这一家公司,很多都是这样的,所以,英语还是那么的重要!一共5个选择+2个编程题。

        PS:大家在做笔试题的时候一定注意看清考察的题型,这很重要,如果全是简答题的话,那基本就会考察到基本知识、画图以及编程的内容,此时需要你备好纸笔等工具;如果涉及到编程题的话,还是得去刷一刷某客网的题目,感觉很不错,除了这个以外,入门级别的刷题网站还有HDLBits,比较基础,时间充裕也可以刷刷。

        下边是具体的题目,仅仅是回忆,哈哈哈!!!

        答案仅供参考哈!因为我也是通过查资料学习分享给大家的,有时候不一定保证正确性,但我也是抱着学习的态度给大家分享,我尽可能保证分享的准确性,如有错误,欢迎批评指正!

        1. 题目 & 答案

        单选题

        考察运算符的优先级、reg默认值、initial是否可以综合、进制转换、4’b100x+4’1001得到什么?(那肯定是4’bxxxx)

        PS:选择题一般比较难回忆,所以只会写出知识点,而不会将题目写出来的,望谅解!

        编程题

        问题1:

        找出输入序列的第一个0或者1

        解析1:

        这个问题主要就是从一串序列中找到我们想要得到的第一个数,不管是0还是1,找到它的位置即可!可以采用对折检查的方法,比如8位的串,可以分为前半串的4位和后半串的4位进行检查,这里我们以发现第一个1为例子。

        module find_ones(
          input [7:0] x,
          output [2:0] y);
          wire [3:0] data_4;
          wire [1:0] data_2;
          assign y[2] = | x[7:4];
          assign data_4= y[2] ? x[7:4] : x[3:0] ;
          assign y[1] = | data_4[3:2];
          assign data_2 = y[1] ? data_4[3:2] : data_4[1:0];
          assign y[0] = data_2[1];
        endmodule
        

        其余的情况大家可以自己研究一下,这个题的解题思路我记得当时是来自网上一篇博客,就是“用Verilog实现寻找第一个1和最后一个1的位置”,也可以把这个题目思考一下!!!

        问题2:

        斐波那契数列实现

        解析2:

        做题之前需要知道什么是斐波那契数哦!斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、……,意思是后一个数是前两个数之和。其实这个题目也不是很难,但需要注意的是,第一个数是0哦!

        `timescale 1ns / 1ps
        module fib_generator(
            input clk,
            input rst_n,
            output reg [7 : 0] fib
            );
          reg [7 : 0] num1, num2;
          wire [7 : 0] fib_in;
          reg cnt;
          always@ (posedge clk or negedge rst_n)
          begin
            if(!rst_n) begin
              num1 <= 8'h1;
              num2 <= 8'h1;
            end
            else if(!cnt)
              num1 <= num1 + num2;
            else
              num2 <= num1 + num2;
          end
          always@ (posedge clk or negedge rst_n)
          begin
            if(!rst_n)
              cnt <= 0;
            else
              cnt <= ~cnt;
          end
          assign fib_in = cnt ? num2 : num1;
          always@(posedge clk or negedge rst_n)
          begin
            if(!rst_n)
              fib <= 'h0;
            else
              fib <= fib_in;
          end
        endmodule
        

        写出来不一定百分比对,只会给大家做个参考。

        声明

        本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

        本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

        如果觉得对你有用的话,记得收藏+评论!!!

        全网各平台同名===> “IC二舅”

        下一期如果有大家想看的 或者 哪块不懂想学习的,可以私聊或在群里提问都可以,“二舅” 给你安排上!!!

转载请注明来自码农世界,本文标题:《【2023 睿思芯科 笔试题】~ 题目及参考答案》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,79人围观)参与讨论

还没有评论,来说两句吧...

Top