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



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

    本次笔试题以两种形式考察的,分别是:选择题(包括单选和多选)和编程题。这里强调的是笔试全英文!!!其实不光这一家公司,很多都是这样的,所以,英语还是那么的重要!一共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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    其余的情况大家可以自己研究一下,这个题的解题思路我记得当时是来自网上一篇博客,就是“用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

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

    声明

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

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

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

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

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

  • 相关阅读:
    Go 并发模型—Goroutines
    Deepin系统navicat15安装
    PYTHON 自动化办公:更改图片后缀
    18.Raising and Lower Indexs
    PieCloudDB Database 3.0 正式发布丨数仓虚拟化技术为数据要素流转注入创新动能
    ubuntu18.0安装搜狗输入法无法显示中文
    java序列化,看这篇就够了
    java-net-php-python-java西藏文库计算机毕业设计程序
    Enzo丨Enzo IHC酶抗原回收试剂解决方案
    fpga bitstream userid
  • 原文地址:https://blog.csdn.net/qq_40549426/article/details/132947210