文章目录
- 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二舅”
下一期如果有大家想看的 或者 哪块不懂想学习的,可以私聊或在群里提问都可以,“二舅” 给你安排上!!!
还没有评论,来说两句吧...